···6161- Dioxus 0.7 is the UI framework.
6262- Jacquard 0.12 is the AT Protocol client stack.
6363- The project uses Rust 2024 on nightly with `wasm32-unknown-unknown` available.
6464-- for e2e tests, run `npm install` in the `./e2e` directory if it's the first time in the worktree, then run e2e tests.
6464+- For e2e tests, run `npm install` in the `./e2e` directory if it's the first time in the worktree, then run e2e tests.
6565+6666+### Front-end implementation notes
6767+6868+- Dioxus asset declarations use source paths, but served asset URLs are flattened into `/assets/`. For example, declare a font with `asset!("/assets/fonts/proza-libre/ProzaLibre-Regular.woff2", ...)`, but reference it from CSS as `url("/assets/ProzaLibre-Regular.woff2")`. Verify font and model asset paths in browser network output when changing asset declarations.
6969+- Keep generated lexicon/API code out of routine formatting churn. `crates/polymodel-api` is generated and is ignored by `rustfmt.toml`; do not include generated reformatting in ordinary feature slices unless the task is explicitly about regeneration or codegen output.
7070+- Do not commit Playwright MCP scratch output. `.playwright-mcp/` contains local browser logs/snapshots from manual checks and should stay ignored/untracked.
7171+- If a front-end slice needs a renderable primitive/demo surface, prefer a non-root route such as `/foundation`. Keep `/` as the product shell so implementation scaffolding does not become the primary product surface.
7272+- Use flex column for simple vertical page shells. Reserve CSS grid for actual two-dimensional layouts; grid containers combined with `min-height: 100vh` can create surprising stretched rows and large visual gaps.
7373+- During visual/layout debugging, use screenshots plus accessibility snapshots with boxes and computed-style inspection. Screenshots show symptoms; boxes/computed styles identify the CSS rule causing the layout.
65746675### Lexicons & codegen
6776