diff --git a/.gitignore b/.gitignore index e54f9bd9..5ba221c3 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,7 @@ migration/out/ # The end-to-end run's database lives in /tmp, outside the tree the dev server watches (0029). -../../../../../tmp/nnt-e2e-3101 \ No newline at end of file +../../../../../tmp/nnt-e2e-3101 + +# `bun run shots` writes here. The pictures are for looking at once, not for keeping. +.shots/ diff --git a/README.md b/README.md index c4303bf9..65ec77f6 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,18 @@ emptying the database between suites, and names each suite as it starts so a slo suite is slow (0029). CI gates on the first; the second runs nightly and on demand. `bun test ` still runs one suite on its own. +### Developer tools + +Running locally, `/dev` seeds a persona per role plus a plain member, a guest and a tombstone, +signs in as any of them without a password, and shows the local mailbox alongside the permissions +the current session resolves to. It is an authentication bypass, so it does not exist in a build: +`nuxt.config` leaves the page and its routes out of the bundle, and `tests/unit/dev-tools.test.ts` +greps a built `.output` to prove it (K-124). + +`bun run shots` writes a picture of every admin screen at two widths into `.shots/`, which is +gitignored. It gates nothing and CI never runs it; it is there so a visual change can be reviewed +from the images rather than from the diff. + The migration tooling is standalone and has its own instructions in [`migration/README.md`](migration/README.md); the application never imports from it. diff --git a/app/components/AdminToolbar.vue b/app/components/AdminToolbar.vue new file mode 100644 index 00000000..60e7f0bd --- /dev/null +++ b/app/components/AdminToolbar.vue @@ -0,0 +1,96 @@ + + + diff --git a/app/components/AuthStatus.vue b/app/components/AuthStatus.vue index 90772cdd..70463693 100644 --- a/app/components/AuthStatus.vue +++ b/app/components/AuthStatus.vue @@ -1,6 +1,9 @@