Repository navigation
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
c09fdc7 to
9e8b706
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
|
Hi @Kechos23, Thank you for the quick updates you made based on the Copilot review. I don’t fully rely on Copilot reviews, but since I’ve been busy, I used it as an extra check. I really appreciate you resolving those points. I finally have some time today to properly review and work on this PR. I have a few UI/UX changes from my side, and Codex also found some code-level issues that I want to address. Would you be okay with enabling Allow edits from maintainers for this PR? I already have the fixes prepared and tested locally. If you enable it, I can push the changes directly to your branch, run another review afterward to verify everything, and then we can move toward merging. If you prefer to make the changes yourself, that is completely fine too. I can share all the review points with you instead. I’m being extra careful because we previously had a data-loss issue in the project, and this feature deals directly with users’ local files. I want to make sure there is no chance of document loss or unsafe behavior before merging. If you enable maintainer edits, I’ll make the changes, and you are absolutely welcome to review my changes afterward with Codex or any other tool you prefer. Thank you again for all the work you’ve put into this feature. |
|
Hello, @ThisIs-Developer , of course you are welcome to do the changes. |
|
Hi @Kechos23, Thank you for enabling maintainer edits and for being open to me making the changes directly. I really appreciate it. As requested, I’m sharing the changes I’m planning to make. First, these are my UI/UX points, and after that I’ve included the Codex review findings I’m currently working through. UI/UX changes
That’s everything from my UI/UX side for now. |
Codex reviewI also gave the latest commit to Codex several times for deeper review. I can’t personally guarantee yet that every finding is a real-world issue, but Codex repeatedly reproduced and flagged the same four areas, so I’ve asked it to help me prepare fixes and regression tests for them. The four findings are: 1. P1: Secret Workspace Reproduction: Start with an unconfigured Secret Workspace. Select two ordinary documents, drag them into Secret Workspace, and confirm creation of the access key once. Actual behavior: Each document independently invokes the unlock/setup flow, registering multiple confirmation handlers. One confirmation therefore starts multiple encryption initializations. Under a reproduced asynchronous completion order, the Expected behavior: One password setup and one consistent encryption key for the entire batch. Suggested fix: Unlock or initialize Secret Workspace once before processing the selected documents, or retain the previous batch-move unlock gate. Validation: Reproduced using production functions and Node WebCrypto. Latest commit: two handlers, two initializations, folder-record decryption failure. Baseline: one handler, one initialization, all records decrypt. Required regression test: Move multiple documents into a new Secret Workspace, then lock and unlock it successfully. 2. P2: Stale Read Reproduction: Open a linked file containing old text. Start another open operation and delay its asynchronous managed-Vault path check. Edit the document, successfully save new text, then allow the pending open to finish. Actual behavior: Expected behavior: The stale open must be discarded; editor and recovery content must retain the successful Save state. Suggested fix: Capture the read epoch before the first Validation: Reproduced in the real Chromium application using its mocked desktop filesystem and actual Ctrl+S workflow. Required regression test: Pause the managed-Vault check, complete Save, resume the pending open, and assert that editor and recovery content remain unchanged. 3. P2: Bulk Move Reproduction: Select two linked documents, choose Move to → Secret Workspace, complete the move, edit one document, and press Ctrl+S. Actual behavior: The bulk menu excludes only the built-in guide. Linked documents enter the ordinary move flow and retain Expected behavior: Bulk Move must enforce the same linked-document restrictions or conversion rules as the other movement workflows. Suggested fix: Reject unsupported destinations for linked selections, or perform an explicit supported conversion before moving them. Validation: Reproduced in Chromium; persisted encrypted metadata and lock/unlock behavior were checked. Full application relaunch was not tested. Required regression test: Bulk-move linked and mixed selections, verifying destination restrictions, resulting metadata, persistence, and subsequent Save behavior. 4. P3: Backup Hierarchy Markdown-Viewer/workspace-storage.js Line 2781 in 50a5668 Reproduction: Restore a desktop backup containing nested linked documents in the browser. Export another backup from the browser, then restore that backup again. Actual behavior: The first restore removes physical Vault paths and retains Expected behavior: Folder organization must survive repeated backup/export/restore cycles without restoring external-file access. Suggested fix: Fall back to validated Validation: Reproduced using production backup normalization/export methods. Required regression test: Round-trip a nested linked recovery backup through browser import, export, and another import. Verification Limits I’ve already given these findings to Codex to work on the fixes locally. After I apply the changes, I’m going to run another review against my own modifications to make sure I haven’t introduced anything else. Because this feature touches users’ files, recovery data, backups, and Secret Workspace encryption, I’d rather do a few extra rounds of checking before merging. Once I push the changes, please feel free to review my code as well. I’d absolutely welcome your review before we merge. Thank you again for trusting me with the branch and for all the work you’ve put into this feature. |
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.


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
file-symlink/folder-symlinkfor real linked sources, keeping normal Vault icons unchanged..mdwhen 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.book-open-textfor both guides. Update only the Linked Workspace guide.Safety and failure handling
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
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.