Markdown import/export + opt-in note encryption #103
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
edfloreshz/tasks!103
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "atayozcan/feat/markdown-io-and-encrypted-notes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds markdown import, a save-to-file branch on the existing Export dialog, and opt-in at-rest encryption of
Task::notes.Refs #21 (markdown import), #28 (clipboard-only export workaround).
Markdown import — closes #21
~/).# H1→ list name (first one wins; subsequent H1s are treated as parent tasks).## H2/ deeper → parent task whose children are the bullets that follow.-,*,+,1.,1). Checkboxes[ ]/[x]/[X]honored.Save markdown to file — refs #28
~/Documents/<list-slug>.md. Parent dirs are created on save.Opt-in note encryption
dev.edfloreshz.Tasks.notes(masteraccount). Generated on first use; never leaves the device.enc:v1:<base64(nonce|ciphertext)>. Reads auto-detect the magic prefix, so flipping the flag in either direction is non-destructive — old plaintext stays readable, old ciphertext stays readable, and writes follow the current flag.LocalStoragegained anArc<AtomicBool>so every clone in the app observes the toggle without re-plumbing.Why bundle these together
These three are the small surface area where I needed to touch the dialog/menu/storage layers anyway, and they share the import/export theme. The encryption piece is intentionally local-only and opt-in so it composes cleanly with #102's CalDAV path without changing what hits the wire.
New deps
chacha20poly1305— pure-Rust AEAD.rand— only for the 32-byte key + 12-byte nonce.Tests
23 total pass: the 8 markdown-import tests, 3 crypto round-trip tests, plus the 12 CalDAV/sync tests from #102.
Out of scope
Pushed
985272dto address the path-input UX issue I caught after the initial push:Tests still 23/23 green.
Could you rebase this branch? There are conflicts.
Started the rebase and hit a wall — the upstream
feat: new store systemcommit isn't a content change, it's a structural rewrite. The files this PR adds to (src/app/markdown.rs, thesrc/storage/module including the newnotes_crypto.rs) have been deleted or replaced —src/app/markdown.rs→src/app/ui/markdown.rs, andsrc/storage/→src/services/store.rswith a different API. Layered on top of the CalDAV branch in #102, which has its own structural conflicts, agit rebasewould mostly produce markers in files that no longer exist.Right move is probably to re-apply this PR as a port on top of the new architecture rather than force-push a rebase. Happy to do that, but wanted to check first:
src/app/ui/markdown.rs, or live as a separate module (e.g.src/services/markdown_io.rs)?services::storethe right seam to add an encrypted-note flag, or would you prefer a wrapper layer?I'd appreciate it if you could respond directly, I understand you're using AI for this PR and I'm happy to discuss the changes, but I'd prefer to hear from a human.
src/app/ui/markdown.rs.View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.