atproto Thingiverse but good
10

Configure Feed

Select the types of activity you want to include in your feed.

minor readme updates

Orual (Jun 29, 2026, 7:06 PM EDT) 919dcb93 8b256c3c

+5 -28
+4 -10
AGENTS.md
··· 1 1 # Polymodel 2 2 3 - Polymodel is an AT Protocol-native model/project sharing app — roughly Thingiverse on atproto — and a demo of a highly integrated Polytoken/Jira/Confluence agent workflow. 3 + Polymodel is an AT Protocol-native model/project sharing app — roughly Thingiverse on atproto 4 4 5 5 ## Product direction 6 6 ··· 12 12 - browser STL viewing as a core interaction; 13 13 - Dioxus web UI backed by Rust and Jacquard 0.12. 14 14 15 - STL viewer (decided): 16 15 17 - - `three-d` is the chosen STL viewer (see the Confluence decision note). Renders STL on a Dioxus-owned canvas via WebGL2; the renderer session is retained across model switches and the STL loads on demand from `public/models/`. 18 - - `kiss3d` was evaluated and rejected: no WebGL2/WebGPU adapter surfaced at runtime in the browser target (PM-21). 19 16 20 17 ## Source of truth 21 18 ··· 32 29 - Create isolated work with jj workspaces, and immediately start a fresh change before editing: `jj new -m "PM-12: concise summary"`. 33 30 - Use ticket-derived names like `pm-12-short-summary`. 34 31 - Check your own changes with `jj diff` before reporting completion. 35 - - Use `jj describe` only to update the description of an already-isolated change; do not use it as a substitute for `jj new` at task start. 36 - - `main` marks the default workspace head — the trunk merged work lands on. Merge a workspace's change back into the default line by rebasing it onto `main`, then advancing `main` and the default head: 32 + - `main` usually marks the default workspace head — the trunk merged work lands on. Merge a workspace's change back into the default line by rebasing it onto `main`, then advancing `main` and the default head: 37 33 ```sh 38 34 jj rebase -r <workspace>@ -d main # rebase the workspace change onto main 39 35 jj bookmark set main -r <workspace>@ # advance main to the merged change ··· 54 50 just serve 55 51 ``` 56 52 57 - Before review or handoff, run at least `just fix` and the narrowest relevant tests. Use `just test-all` for substantial changes. 53 + Before review or handoff, run at least `just fix` and all relevant tests. Use `just test-all` for substantial changes. 58 54 59 55 In a fresh checkout or jj workspace, run `just check` once before `just fix`: `src/env.rs` is generated by `build.rs` from `POLYMODEL_*`, and `cargo fmt` fails to resolve the `env` module until a build has produced it. 60 56 ··· 70 66 - **Design guidance: use the `frontend-design` skill for any UI work** (Dioxus RSX, routes, `assets/styling/*.css`, layout/color/type/motion/state/copy). It carries the adapted Impeccable design method for Polymodel's committed blueprint identity and product register. Companions: `DESIGN.md` (repo root, the blueprint design system as machine-readable tokens mirroring `theme.css`), `tools/design-detector/` (deterministic no-install linter — `node tools/design-detector/detect.mjs --json assets/styling/` or a rendered route; scans CSS/HTML, not `.rs`), and Confluence [*Front-end design guidance*](https://radiant-industries.atlassian.net/wiki/spaces/PM/pages/655362) in space `PM` (durable human-facing version). 71 67 - 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. 72 68 - 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. 73 - - Do not commit Playwright MCP scratch output. `.playwright-mcp/` contains local browser logs/snapshots from manual checks and should stay ignored/untracked. 74 69 - 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. 75 70 - 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. 76 71 - 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. ··· 101 96 102 97 - Investigate code and docs before asking factual questions. 103 98 - Ask the operator for product/demo intent and workflow tradeoffs. 104 - - Keep Jira updated at workflow gates. When adding Jira comments with restricted visibility through Atlassian MCP tools, use role visibility `{ "type": "role", "value": "Member" }`; the value is singular, and observed rejected values include `Administrators`, `Members`, and `Viewers`. 105 - - Do not put secrets in repo files. 99 + - Keep Jira updated at workflow gates. When adding Jira comments with restricted visibility through Atlassian MCP tools, use role visibility `{ "type": "role", "value": "Member" }`. 106 100 107 101 ## Code style 108 102
+1 -18
README.md
··· 10 10 - feeds for recent projects, hot projects, and per-profile project streams; 11 11 - an in-browser STL viewer. 12 12 13 - It is also a workplace demo for a highly integrated agent workflow built around Polytoken, Jira, Confluence, jj workspaces, and strong review gates. 14 - 15 - Jira project/Confluence space key: `PM`. 16 - 17 - ## STL viewer 18 - 19 - Decision: three-d. 13 + It is also a testbed for a highly integrated agent workflow built around Polytoken, Jira, Confluence, jj workspaces, and strong review gates. 20 14 21 - - [`three-d`](https://github.com/asny/three-d): chosen STL viewer. Renders on a Dioxus-owned canvas via WebGL2; the renderer session is retained across model switches and STL assets load on demand from `public/models/`. 22 - - [`kiss3d`](https://github.com/dimforge/kiss3d): rejected — no WebGL2/WebGPU adapter surfaced at runtime in the browser target (PM-21). 23 - 24 - The viewer choice should be decided with a small spike that loads an STL, renders orbit controls, and fits cleanly into Dioxus. 25 15 26 16 ## Development 27 17 ··· 40 30 just test-all # pre-review local validation 41 31 just serve # Dioxus dev server 42 32 ``` 43 - 44 - ## Workflow 45 - 46 - - Jira is both the human source of truth and the agent working truth for implementation tasks. 47 - - Confluence is the durable design/demo narrative space. 48 - - jj workspaces are the default isolation mechanism for agent work. 49 - - Polytoken skills and project vars live under `.polytoken/`. 50 33 51 34 ## Stack 52 35