Implement the reviewed UI icon system and durable review workflow (#853)
Thanks @Nathan-Dane.
This commit is contained in:
1 parent
c599238653
commit
64966bab88
374 files changed
+8187
-2221
No files matched your search
+8
-5
@@ -76,11 +76,14 @@ fails, or leaves a sliver face (narrower than 1/200 of the part), it is tried th
|
||||
other way too: one way can push a face into a curved face it only touched (a cut
|
||||
whose end lies tangent to a round side) and leave a sliver of it, where the other
|
||||
way parts them (#897, #827).
|
||||
Exact planar and piecewise fallbacks report zero displacement. The existing
|
||||
volume and spatial acceptance checks still apply to all results.
|
||||
|
||||
The command that adds a feature carries the same `warning` in its reply, so a
|
||||
script or an agent sees such a retry without asking the timeline.
|
||||
Exact planar and piecewise fallbacks report zero displacement. When a conical
|
||||
cutter meets a body with earlier conical faces (pointed bores copied in a pattern),
|
||||
two finer, unshifted passes are tried first, at 1e-5 and 1e-6 of their size (never
|
||||
below 1e-6 mm). A coarse first cut can leave tiny junctions that later copies cannot
|
||||
intersect, so refining only the failing copy is too late. Every candidate must pass
|
||||
the volume, membership and spatial checks; a rejected candidate continues to the
|
||||
next tolerance, then the ordinary routes. The existing acceptance checks still
|
||||
apply to all results.
|
||||
|
||||
A join or a cut that needed any retry is then held to what it can do at all
|
||||
(`crates/kernel/src/boolean_guard.rs`, #616): the result is closed, a join
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# UI icon design — superseded proposal
|
||||
|
||||
The format and style decisions are implemented. SVG masters, theme role mapping,
|
||||
isometric geometry and the owner's reviewed set are authoritative.
|
||||
|
||||
Use [the binding style guide](../assets/icons/ui/STYLE_GUIDE.md) and
|
||||
[the maintained review workflow](../assets/icons/ui/README.md). The earlier
|
||||
undecided proposal must not be used to create a competing style or drawing pipeline.
|
||||
@@ -0,0 +1,22 @@
|
||||
# UI icon maintenance
|
||||
|
||||
The authoritative authoring specification is
|
||||
[assets/icons/ui/STYLE_GUIDE.md](../assets/icons/ui/STYLE_GUIDE.md), with mandatory
|
||||
agent instructions beside it. Start at
|
||||
[the UI icon README](../assets/icons/ui/README.md) for the included review app,
|
||||
canonical resource paths, new-icon scaffold, exports and checks.
|
||||
|
||||
Launch the repository-owned review tool with:
|
||||
|
||||
```sh
|
||||
python3 -B assets/icons/ui/design/tools/icon_status.py --serve
|
||||
```
|
||||
|
||||
Open http://127.0.0.1:8770/. Every discovered icon without a current acceptance is
|
||||
Open. SVGs, aliases and source references are scanned automatically; unused masters
|
||||
are included. Counts and CSV reports are derived at runtime, not maintained here.
|
||||
`--csv` writes `target/icon-inventory.csv`.
|
||||
|
||||
The design and cleanup plan is [ui-icon-maintenance-plan.md](ui-icon-maintenance-plan.md).
|
||||
The old proposal is superseded. SVG masters, palette, aliases, the original Rust
|
||||
viewport glyphs and owner review records remain the application resources.
|
||||
@@ -0,0 +1,82 @@
|
||||
# Durable icon maintenance — implementation plan
|
||||
|
||||
The goal is for a new contributor or agent, without any chat history, to produce
|
||||
icons that match the finished set and to find every icon that still needs review.
|
||||
The SVG masters and valid acceptance records must survive this work unchanged.
|
||||
|
||||
## 1. Establish ownership and clean the resource tree
|
||||
|
||||
- Keep production assets, font licences, platform exports, editable native source
|
||||
documents and the original SVG masters. Never remove an asset used by packaging.
|
||||
- Retire superseded numbered authoring batches: they contain duplicate functions,
|
||||
earlier revisions and implicit overrides. The SVGs are the editable authority.
|
||||
Keep a reusable geometry library, explicit bases and a new-icon scaffold instead.
|
||||
- Remove the generated inventory CSV from the source collection; generate reports
|
||||
under ignored `target/`. Remove the empty proposal-era stand-in list.
|
||||
- Remove the unused historical macOS raster/SVG exports while preserving their
|
||||
editable VectorCraft document. Keep a local recovery copy under `target/`.
|
||||
- Update attribution alongside every resource addition, retirement and move.
|
||||
|
||||
## 2. Give future authors an unmissable specification
|
||||
|
||||
- Link the rules from root AGENTS.md, assets/AGENTS.md and icons/ui/AGENTS.md.
|
||||
- Specify the categories, exact palette and weights, isometric projection and
|
||||
face shading, canonical cube/slab bases, action arrows, points, holes, badges,
|
||||
overlap order, detail limits and optical padding.
|
||||
- Name finished SVG references for each category and explain what to copy from
|
||||
their visual language. Commercial artwork remains forbidden.
|
||||
- Provide a safe starter command that refuses to overwrite an existing icon,
|
||||
and a validation command that checks attribution, structure and coverage.
|
||||
- Record a short first-pass acceptance rubric and the complete review workflow.
|
||||
|
||||
## 3. Preserve a small, repository-owned review application
|
||||
|
||||
- Keep the existing Python entry point and loopback URL, requiring only Python 3.11+.
|
||||
- Split the page, CSS and JavaScript into readable versioned source files.
|
||||
- Discover SVG masters, aliases, command references, nested UI callers and known
|
||||
wrapper/table arguments on every launch and explicit rescan. Show unused masters.
|
||||
- Every discovered, non-final icon is Open, including icons with notes. Missing
|
||||
artwork is visible and cannot be accepted. Report unassigned commands separately.
|
||||
- Final means the current artwork matches its saved hash. Changed artwork returns
|
||||
to Open and can be accepted again deliberately; never silently refresh its hash.
|
||||
- A normal opening starts at Open / Everything with an empty search. Retain theme
|
||||
and size preferences; preserve temporary filters only for a live artwork reload.
|
||||
- Keep autosave, light/dark, small-size variants, notes and portable JSON export.
|
||||
Export queues neutral artwork feedback locally; it does not invoke a model.
|
||||
- Preserve notes edited since an export, stale-page merge behavior and accepted art.
|
||||
|
||||
## 4. Verify the basic implementation
|
||||
|
||||
- Test discovery of newly added and unused masters, aliases, missing artwork,
|
||||
changed acceptance hashes, nested UI callers, stale saves and exact export notes.
|
||||
- Check the web UI in both themes and at small sizes. Check the style-reference
|
||||
page and scaffold against the finished geometry.
|
||||
- Run focused checks in the background; report actual results. Full repository CI
|
||||
is still required before a local commit. Existing engine robustness failures do
|
||||
not authorize changing unrelated geometry or accepting failed quality gates.
|
||||
- Keep this iteration local; do not push or change the existing draft PR #853.
|
||||
|
||||
## Scope of this first implementation
|
||||
|
||||
No icon redesign, palette change, packaging change, new approval state database,
|
||||
cloud service, model-specific automation or replacement of Rust viewport graphics.
|
||||
Style quality still needs visual review; lint cannot decide whether a new symbol
|
||||
communicates its operation well.
|
||||
|
||||
## Basic version implemented
|
||||
|
||||
- The media collection retains the production SVGs and platform assets. The
|
||||
superseded bulk generators, generated inventory, empty stand-in list and unused
|
||||
historical exports have been retired; the historical editable native master remains.
|
||||
- Mandatory instructions are linked from root, assets and UI-specific AGENTS.md.
|
||||
The style guide, curated references and reusable bases are included in the repo.
|
||||
- The review interface is split into versioned HTML/CSS/JavaScript, with discovery
|
||||
on opening/rescan, valid-hash acceptance, visible shared masters, atomic state
|
||||
saves, exact local exports and protection against stale acceptance and note loss.
|
||||
- `cargo xtask icons` and the CI repository-check job enforce the icon checks and
|
||||
regression tests. All existing SVG bytes and initial acceptance hashes were preserved.
|
||||
|
||||
Remaining limits: source discovery recognises the documented literal call patterns,
|
||||
not every possible Rust expression. Add a fixture when introducing a new icon
|
||||
wrapper convention. Visual quality, semantic clarity and acceptance remain human
|
||||
review decisions; the tool does not automatically redraw or finalise artwork.
|
||||
Reference in new issue
Block a user