aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/notes
AgeCommit message (Collapse)AuthorFilesLines
7 daysnotes: in-drawer editor with commit-on-save and git pullDanilo M.4-75/+555
The editor, and the write and git path behind it. Save is two clicks and each does one thing: the first writes the note and only then arms the button as 'Commit & push?', so a quick second click cannot commit a note the first has not written yet. The write path refuses when db.json cannot be read as the index. That is not hypothetical: git pull --rebase --autostash resolves a remote db.json change against a local uncommitted one, the stash pop conflicts, git still exits 0, and the file is left full of merge markers. Reading that as 'no notes' and writing it back deleted every title in a probe; Notes.valid now distinguishes it from an empty store and the write reports instead. parse stays tolerant for display. Stamping lastpull also only follows a pull that worked, and only when git is on at all. Db reads that a write is based on go through reload() plus waitForJob(): blockLoading does not make reload() blocking, contrary to the note in AGENTS.md, and reading text() straight after reload() returns the old contents. A body is written with a plain setText, which needs no prior load; only reading text() before a load would.
7 daysnotes: drawer tile with count and the note listDanilo M.2-0/+243
The module resolves notes.sh's own paths by sourcing its rc, so a changed BASEDIR moves the page with it, and notes.sh's git test is the same one the page uses. A Module is a plain QtObject with no default property, so the config Process and the db.json FileView are typed properties, the shape UpdatesModule uses for its own Process. db.json is watched rather than read on open: the tile's count has to move when a note is added from either side, the CLI included, which is the same call mail makes for its unread count. The list reads db.json.notes rather than walking notes/, because that is where the titles are; entries sort newest first on the file timestamp and a title search filters them.
7 daysnotes: pure db.json helpers, node-testedDanilo M.2-0/+183
The parsing, sorting and transforms the notes page needs, kept free of any file or process so node can test them. Ids and files stay strings: notes.sh writes them with jq --arg and looks a note up with select(.id == $i), so a number would stop the CLI finding a note the page wrote. sorted() copies rather than reorders, and an entry whose file is missing or non-numeric sorts last and formats as blank instead of NaN.