From 924ddb20dbd48bdd0b9f006af4d0b5ef061eb1ed Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sat, 22 Aug 2026 21:38:13 -0400 Subject: [PATCH] notes: saveEdit still asked for a title MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The one thing step 3 missed, and the typecheck lane caught it: `saveEdit`'s parameter type still declared `title`, so the editor's call — correctly no longer passing one — didn't match. I gated Rust locally and not the frontend. Both are now in ci-requirements, including WHY the frontend one has to be `npm run build` rather than `vue-tsc --noEmit`: the typecheck only reads the script block, so a malformed template sails past it and fails `vite build` in a different workflow, which is exactly how the stray `` got two commits away from where it was written. --- ci-requirements.md | 17 +++++++++++++++++ frontend/src/stores/notes.ts | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ci-requirements.md b/ci-requirements.md index 714bf28..e9e9568 100644 --- a/ci-requirements.md +++ b/ci-requirements.md @@ -319,6 +319,23 @@ exceed 100 characters and survive only because rustfmt cannot break a string literal — copying that shape caused one of four consecutive fmt-only CI failures, which is what this whole section exists to prevent. +## Checking the frontend lane before pushing + +Same technique, same authorisation, same reason — and it covers a gap the Rust gate +cannot: `vue-tsc --noEmit` type-checks only the SCRIPT block, so a malformed TEMPLATE +passes the typecheck lane and fails `vite build` in a different workflow. `npm run +build` runs both, which is exactly what the desktop lanes run. + +``` +docker run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD:/w" -w /w/frontend \ + git.fabledsword.com/bvandeusen/ci-python:3.14 sh -c "npm ci --silent && npm run build" +``` + +The typecheck lane uses the `ci-python` image too — it is the node the frontend jobs +already run on, not a separate one. Delete `frontend/node_modules` and `frontend/dist` +afterwards; both are gitignored, but neither belongs in a working tree that never +builds locally otherwise. + ## The desktop lockfile `Cargo.lock` is **committed** at the workspace root, per Cargo's own guidance for diff --git a/frontend/src/stores/notes.ts b/frontend/src/stores/notes.ts index 67adb34..aceb47e 100644 --- a/frontend/src/stores/notes.ts +++ b/frontend/src/stores/notes.ts @@ -159,7 +159,7 @@ export const useNotesStore = defineStore("notes", () => { const setColor = (id: string, color: NoteColor) => mutate(id, { color }); const setReminder = (id: string, remindAt: string | null) => mutate(id, { remind_at: remindAt }); const setRecurrence = (id: string, recurrence: string | null) => mutate(id, { recurrence }); - const saveEdit = (id: string, changes: { title: string; body: string; color: NoteColor }) => mutate(id, changes); + const saveEdit = (id: string, changes: { body: string; color: NoteColor }) => mutate(id, changes); async function completeReminder(id: string): Promise { reconcile(await repo.notes.completeReminder(id));