Skip to content

feat(desktop): link Markdown files and folders alongside Vault copies - #262

Merged
ThisIs-Developer merged 43 commits into
ThisIs-Developer:mainfrom
Kechos23:codex/linked-markdown-workspace
Oct 27, 2026
Merged

ThisIs-Developer merged 43 commits into
ThisIs-Developer:mainfrom
Kechos23:codex/linked-markdown-workspace

Conversation

@Kechos23

@Kechos23 Kechos23 commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Desktop Linked Workspace: original files, folder workflows and draft protection

This updates the reviewed Linked Workspace proposal with the requested hierarchy, actions and safety behavior. It depends on the separately proposed shared persistence/reliability changes; those are not presented as defects introduced by Linked Workspace.

User-facing behavior

  • Group Vault, Linked Workspace and Secret Workspace under WORKSPACES. Use file-symlink / folder-symlink for real linked sources, keeping normal Vault icons unchanged.
  • Provide Link file, Link folder and Create new linked file actions in the desktop toolbar and Linked Workspace menu. Keep creation separated from linking existing sources.
  • Show source paths on hover instead of crowding file names. Use compact, distinct conflict/missing-source indicators with explanatory tooltips.
  • Keep local recovery drafts separate from Vault storage, preserving linked-folder hierarchy. Saving the original is explicit; automatic persistence does not write the source.
  • Support layout-independent Ctrl+S. Save As appends .md when needed and proposes the document name. A Vault export keeps its Vault document and focuses the new linked document; a linked Save As keeps both linked documents.
  • Support linked file/folder conversion to independent Vault copies, including existing sidebar HTML dragging. Preserve folder hierarchy and original external files. Vault folder Save As creates a separate linked folder without merging into an existing destination.
  • Keep conversions independent: reopening/rescanning the original can create a linked entry without consuming a Vault copy. Explicit rescan can restore entries previously excluded by removal/conversion.
  • Use consistent status toasts and centered confirmations for consequential choices. Original-save confirmation has a preference to skip subsequent ordinary confirmations; conflict protection remains active.
  • Keep the default Vault Welcome content unchanged. Identify unmodified built-in guides using metadata and use book-open-text for both guides. Update only the Linked Workspace guide.
  • Allow middle-button tab closing in the shared web/desktop interface.

Safety and failure handling

  • Capture live primary/split editor input before refresh, save, conversion and workspace maintenance, rather than relying on the debounce having finished.
  • Preserve a local draft when a source changes, disappears or returns. Recheck relevant draft/source state after confirmation; cancelling does not discard the draft.
  • Establish watchers for newly saved linked files. Persist bulk-removal exclusions before discarding records, and fail without a success message when persistence fails.
  • Treat imported backup paths as data, not authorization to write external files or create watchers. Restored drafts need explicit relinking.
  • Bound native file reads and folder scans; serialize relevant operations and report partial export/conversion results accurately.

Platform and limits

Linked-source actions require desktop native APIs and are hidden/disabled in the web app, including Docker-served deployments. Browser recovery content remains usable without reconnecting local paths. Native development/manual evidence is Windows-based; macOS/Linux native behavior is not claimed verified.

This branch uses the official Neutralino 6.5.0 runtime/client pins. Standard external HTML file drops remain Vault-copy imports. Native path drops, single-instance integration and the experimental pointer fallback are proposed separately in draft #269.

Scan limits: 10,000 Markdown files, 40,000 entries, 2,000 directories, depth 32, 20 MiB per Markdown source, 200 MiB staged content and a 60-second scan budget. Recovery is not a backup. Native APIs do not provide an atomic compare-and-write/no-overwrite guarantee, so a race with another process cannot be completely eliminated by application-side checks.

Validation

  • 117 unit tests passed.
  • Full Chromium run: 495/495 passed after the Media/Table focus-race fixes, before final locale completion. After completing the catalogs, 16 focused Chromium tests passed for localization/typography, desktop Save, action icons and web isolation; static validation also passed.
  • Locale audit passed: 15 catalogs × 1,580 keys, with aligned placeholders and reviewed finite exceptions for legitimate unchanged terms. Actual English fallback labels were translated and internal toast IDs/search tokens/selectors were removed from extraction. Native-language quality still benefits from native-speaker review.
  • The user accepted Windows smoke tests on the final official-runtime review executable: language switching/document preservation, Save/Save As, external conflict handling and folder conversion. Native macOS/Linux, Firefox/WebKit and comprehensive native failure/race testing remain unverified.

Existing Linked Workspace demonstration

Review dependency

Depends on shared safety/reliability PR #279. Because this cross-fork PR still targets upstream main, its full diff currently includes that baseline. For the Linked Workspace-only changes, use the incremental comparison. After #279 merges, I will rebase onto the resulting upstream baseline.

@vercel

This comment was marked as outdated.

@vercel

This comment was marked as outdated.

This comment was marked as outdated.

@ThisIs-Developer

This comment was marked as outdated.

@ThisIs-Developer
ThisIs-Developer self-requested a review September 29, 2026 19:47
ThisIs-Developer

This comment was marked as outdated.

@ThisIs-Developer ThisIs-Developer added the ✨ enhancement New feature, improvement, or usability enhancement. label Oct 2, 2026 — with ChatGPT Codex Connector
@Kechos23

This comment was marked as outdated.

ThisIs-Developer

This comment was marked as outdated.

This comment was marked as outdated.

@Kechos23

This comment was marked as outdated.

@ThisIs-Developer

This comment was marked as outdated.

@ThisIs-Developer

This comment was marked as outdated.

Simplify linked workspace controls, use standard guide icons, and persist sidebar-only grouping without moving original sources.

Guard linked read races and bulk moves, preserve backup recovery hierarchy, and make Secret moves retain durable content before plaintext cleanup. Update documentation, translations, desktop resources, and regression tests.
Merge current main while retaining Linked Workspace behavior and translations. Permit safe case-only Vault renames and coordinate exclusions across overlapping linked roots. Add regression coverage and synchronize desktop resources. Update DOMPurify to the patched 3.4.17 release.

@Kechos23 Kechos23 left a comment •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good from my side. I still think that the open book icon fits better for the welcome files and makes them stand out from the actual .md files that users would like to edit and view but stil it is your call at the end

Restore the main new-document menu and expansion-based Explorer icon colors. Shorten linking labels, use the supplied workspace icon, and seed the concise guide in Split view. Keep desktop resources and existing UI expectations aligned. Tests not run at user request.
Declare the SVG mask URL in the stylesheet that consumes it so it does not resolve relative to assets/lucide-icons.css. Verified the missing asset request before the fix and the rendered icon after it with a focused Chromium check.
Remove the custom SVG and keep the shared expansion-based icon styling for Vault, Linked Workspace, and Secret Workspace. Verify matching icon color, sizing, image decoding, and locked Secret state in light and dark themes, independently of open documents.
Match the main welcome document with frontmatter, clear sections, quick-reference tables, keyboard labels, and themed callouts. Replace the text sketch with an accessible Mermaid flowchart and keep advanced safety details collapsible. Verified real Mermaid rendering in light, dark, and compact layouts plus existing guide persistence behavior.

@ThisIs-Developer ThisIs-Developer left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for all the hard work and collaboration on this PR!

We've made several improvements together, and I believe all previously reported issues have now been resolved. The Linked Workspace feature looks much more polished and stable.

@ThisIs-Developer
ThisIs-Developer merged commit 859ac91 into ThisIs-Developer:main Oct 27, 2026
4 checks passed
@ThisIs-Developer

Copy link
Copy Markdown
Owner

@Kechos23 Thank you so much for your patience and for taking the time to work with me and accommodate my preferences!

I also really appreciate your suggestions, especially the idea of using the guide icon. I genuinely value that kind of feedback. Markdown Viewer is built for the community, and I believe every community member's suggestions matter. I always try to listen, test things myself, and make improvements based on what works best. That's why I decided to go with your guide icon suggestion. 😊

I've personally reviewed and polished the feature several times, making a few small adjustments based on what I felt was needed. But the core feature still stays true to your original vision.

Thank you again for bringing this idea to life and collaborating with me throughout the process! Feel free to check out the latest changes.

Linked Workspace will be available in an upcoming desktop release very soon! 🚀❤️

@Kechos23
Kechos23 deleted the codex/linked-markdown-workspace branch October 27, 2026 13:11

This branch was successfully deployed

1 active deployment
Preview — 83ab4fae Deployed Oct 27, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ enhancement New feature, improvement, or usability enhancement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants