0.2.0 — a notebook in your pocket, ready to be hosted #3
@@ -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,
|
literal — copying that shape caused one of four consecutive fmt-only CI failures,
|
||||||
which is what this whole section exists to prevent.
|
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
|
## The desktop lockfile
|
||||||
|
|
||||||
`Cargo.lock` is **committed** at the workspace root, per Cargo's own guidance for
|
`Cargo.lock` is **committed** at the workspace root, per Cargo's own guidance for
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ export const useNotesStore = defineStore("notes", () => {
|
|||||||
const setColor = (id: string, color: NoteColor) => mutate(id, { color });
|
const setColor = (id: string, color: NoteColor) => mutate(id, { color });
|
||||||
const setReminder = (id: string, remindAt: string | null) => mutate(id, { remind_at: remindAt });
|
const setReminder = (id: string, remindAt: string | null) => mutate(id, { remind_at: remindAt });
|
||||||
const setRecurrence = (id: string, recurrence: string | null) => mutate(id, { recurrence });
|
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<void> {
|
async function completeReminder(id: string): Promise<void> {
|
||||||
reconcile(await repo.notes.completeReminder(id));
|
reconcile(await repo.notes.completeReminder(id));
|
||||||
|
|||||||
Reference in New Issue
Block a user