SIGN IN SIGN UP

dashboard: fix Memories project picker showing raw 'git:HASH' identities

The v0.21.5 plugin-side fix to issue #87 made the plugin stamp resolved
project identities ('git:<hash>' / 'dir:<sha256>') directly into
memories.project_path. The dashboard's project picker, however, was
still resolving those values as if they were filesystem paths:

  enumerate_memory_projects collected memory project_path values into
  a HashSet<String> and passed it as a paths_filter into
  enumerate_projects_filtered, which compared the values against
  OpenCode/Pi 'worktree'/'cwd' paths via allowed_paths.contains(...).
  Identity-shaped values never matched any real path, so the
  OpenCode/Pi DB enrichment step was skipped and the fallback path
  seeded ProjectRow with primary_path = 'git:HASH', then
  display_name = basename('git:HASH') = 'git:HASH'.

Result: the picker dropdown showed entries like 'git:0e973b7d…',
'dir:07a38392e402'.

Fix: normalize memory project_path values to identities (handling
both already-identity-shaped values and legacy raw filesystem paths
that still need resolve_project_identity()), then filter the FULL
enumerated project list by identity match — using the OpenCode/Pi
DBs as the source of truth for display_name and primary_path. Same
shape as the plugin-side fix.

Tests: 3 new (identity memories never leak as display_name,
archived-only memories don't surface, empty DB returns empty).
U
ualtinok committed
47b8a3d34f514ae92e6ceca3f5b6bb9da47bb5c4
Parent: 5c00b50