Skip to content

Migrate Memory surfaces to shared workspace file links #2492

@YOMXXX

Description

@YOMXXX

Summary

Migrate Memory tab file affordances onto the shared workspace-link layer introduced by #2476, so memory files use the same safe open / reveal / preview contract as chat workspace links.

Problem

Issue #1402 still has one explicit acceptance criterion unmet after #2476: Memory surfaces use the shared layer. The current Memory flows in MemoryWorkspace.tsx and MemoryGraph.tsx still use bespoke Obsidian URL helpers for workspace-backed files, while #2476 covers the Tauri commands, frontend parsing, and chat markdown integration.

Without a dedicated follow-up, merging #2476 with Closes #1402 would hide the remaining Phase 3 work and leave local workspace-link behavior fragmented between chat and Memory.

Solution (optional)

  • Route Memory workspace file actions through the shared workspace-link / workspace-path helpers from feat(tauri): support workspace file links #2476.
  • Preserve Obsidian as an explicit action where appropriate, but avoid duplicating path normalization and local file handling logic.
  • Add or reuse a small shared UI affordance for open / reveal / preview where Memory surfaces need more than one action.
  • Cover MemoryWorkspace.tsx and MemoryGraph.tsx behavior with focused tests.

Acceptance criteria

  • MemoryWorkspace uses shared workspace links — memory workspace file actions are routed through the shared workspace-link/path layer instead of bespoke local path handling.
  • MemoryGraph uses shared workspace links — summary/file node actions use the same contract as chat workspace links.
  • Obsidian behavior is preserved intentionally — Obsidian launch remains available where it is a user-facing feature, but it is composed with the shared workspace-link layer rather than replacing it.
  • Open / reveal / preview behavior is tested — focused frontend tests cover Memory link routing and failure states.
  • Diff coverage ≥ 80% — the implementing PR meets the changed-lines coverage gate (Vitest + cargo-llvm-cov, enforced by .github/workflows/coverage.yml).

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions