feat(icons): short_text, tag, arrow_drop_down_circle, calendar_today — the field-type set #27

Merged
bjoern merged 2 commits from feat/icons-field-types into main 2026-09-25 19:26:39 +02:00
Member

This adds four Material Symbols to IconCatalog for a form designer's field types. Tsumugi's category designer shows one beside each type, on the type menu's trigger and on each menu item:

Field type Icon
Short text short_text (new)
Long text notes (already in the catalog)
Number tag, the # sign (new)
Choice arrow_drop_down_circle (new)
Date calendar_today (new)

The path data is the official outlined set from Google's material-design-icons repository (symbols/web/<name>/materialsymbolsoutlined/<name>_24px.svg, 0 -960 960 960 viewBox). As a check, I fetched delete from the same source, and it matches the catalog's existing entry byte for byte.

  • Catalog: 87 → 91 icons, appended after more_horiz as in #22.
  • Tests: 420 pass in Release, including a new theory The_field_type_icons_resolve_to_a_path that pins the four names (same reasoning as content_copy and swap_horiz: a missing entry renders an invisible glyph).

Tsumugi's PR pins this branch head in its submodule bump. Once this merges, I'll move the pin to the merged main.

🤖 Generated with Claude Code

This adds four Material Symbols to `IconCatalog` for a form designer's field types. Tsumugi's category designer shows one beside each type, on the type menu's trigger and on each menu item: | Field type | Icon | |---|---| | Short text | `short_text` (new) | | Long text | `notes` (already in the catalog) | | Number | `tag`, the `#` sign (new) | | Choice | `arrow_drop_down_circle` (new) | | Date | `calendar_today` (new) | The path data is the official outlined set from Google's `material-design-icons` repository (`symbols/web/<name>/materialsymbolsoutlined/<name>_24px.svg`, `0 -960 960 960` viewBox). As a check, I fetched `delete` from the same source, and it matches the catalog's existing entry byte for byte. - Catalog: 87 → 91 icons, appended after `more_horiz` as in #22. - Tests: 420 pass in Release, including a new theory `The_field_type_icons_resolve_to_a_path` that pins the four names (same reasoning as `content_copy` and `swap_horiz`: a missing entry renders an invisible glyph). Tsumugi's PR pins this branch head in its submodule bump. Once this merges, I'll move the pin to the merged `main`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(icons): short_text, tag, arrow_drop_down_circle, calendar_today — the field-type set
All checks were successful
CI / build (pull_request) Successful in 13s
CI / test (pull_request) Successful in 20s
d562e67b70
Four Material Symbols (outlined, official path data from the material-design-icons repo, the
0 -960 960 960 viewBox) for a form designer's field types: short text, number, choice and date —
long text is the catalogued `notes`. Tsumugi's category designer shows one beside each type.
Pinned by a theory, like content_copy and swap_horiz.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Summary

Summary
Generated on: 09/25/2026 - 17:22:12
Coverage date: 09/25/2026 - 17:22:09
Parser: MultiReport (2x Cobertura)
Assemblies: 2
Classes: 80
Files: 78
Line coverage: 95.7% (1665 of 1739)
Covered lines: 1665
Uncovered lines: 74
Coverable lines: 1739
Total lines: 4801
Branch coverage: 90% (864 of 960)
Covered branches: 864
Total branches: 960
Method coverage: Feature is only available for sponsors

Coverage

Kagaku.UI - 95.6%
Name Line Branch
Kagaku.UI 95.6% 90.1%
Kagaku.UI.Badge 100% 100%
Kagaku.UI.Breadcrumb 100%
Kagaku.UI.BreadcrumbItem 100% 100%
Kagaku.UI.Button 100% 100%
Kagaku.UI.Card 100% 100%
Kagaku.UI.CircuitErrorPanel 100%
Kagaku.UI.Column 100%
Kagaku.UI.Columns 100% 100%
Kagaku.UI.Combobox`1 98.1% 91.8%
Kagaku.UI.ConfirmDialog 100%
Kagaku.UI.Constrain 100% 100%
Kagaku.UI.ContextMenu 92.1% 94.4%
Kagaku.UI.CssClassExtensions 100%
Kagaku.UI.Debounce 97.8% 80.7%
Kagaku.UI.DebouncedSearchField 100% 87.5%
Kagaku.UI.Disclosure 100% 100%
Kagaku.UI.DocumentTitle 76.9% 100%
Kagaku.UI.DragReorderList`1 93.5% 75%
Kagaku.UI.EmptyState 100% 100%
Kagaku.UI.Field 100% 100%
Kagaku.UI.FileUpload 100% 91.6%
Kagaku.UI.FixedColumn 100%
Kagaku.UI.FixedRow 100%
Kagaku.UI.FlexColumn 100%
Kagaku.UI.Flexible 100%
Kagaku.UI.FlexRow 100%
Kagaku.UI.FloatingActionButton 100%
Kagaku.UI.Hotkey 92.5% 87.5%
Kagaku.UI.Icon 100% 100%
Kagaku.UI.IconCatalog 100%
Kagaku.UI.InlineAlert 83.3% 75%
Kagaku.UI.InputFieldBase 95.2% 87.5%
Kagaku.UI.LabeledEntriesTable 96.7% 66.6%
Kagaku.UI.LabeledEntry 100%
Kagaku.UI.LayoutCss 95.2% 93.7%
Kagaku.UI.Lightbox 83.7% 85%
Kagaku.UI.LiveValue 100% 100%
Kagaku.UI.LiveValueInterop 100% 100%
Kagaku.UI.Markdown 100% 50%
Kagaku.UI.MaskCanvas 94.1% 90.1%
Kagaku.UI.MaskedSecretField 96.2% 83.3%
Kagaku.UI.MaskPoint 100%
Kagaku.UI.MaskPrimitive 100%
Kagaku.UI.Menu 90% 75%
Kagaku.UI.MenuItem 100% 87.5%
Kagaku.UI.Modal 87.1% 90%
Kagaku.UI.NavGroup 100% 100%
Kagaku.UI.NavItem 92.1% 96.1%
Kagaku.UI.NavList 100%
Kagaku.UI.PageShell 100% 100%
Kagaku.UI.PreviewImage 100% 100%
Kagaku.UI.QuicklinkNav 80.5% 95.8%
Kagaku.UI.QuicklinkSection 100%
Kagaku.UI.RegionPoint 100% 100%
Kagaku.UI.RegionRect 90% 100%
Kagaku.UI.RegionSelector 85% 86.9%
Kagaku.UI.RelativeTime 100% 93.7%
Kagaku.UI.Row 100%
Kagaku.UI.Rows 100% 100%
Kagaku.UI.SaveIndicator 100% 100%
Kagaku.UI.ScrollViewer 100% 100%
Kagaku.UI.Select`1 98.4% 95.8%
Kagaku.UI.SelectableGrid`1 95.5% 89.1%
Kagaku.UI.SelectOption`1 100%
Kagaku.UI.Separator 100%
Kagaku.UI.Slider 100% 91.6%
Kagaku.UI.StatusDot 100%
Kagaku.UI.Tab 100% 100%
Kagaku.UI.Table`1 100% 88.4%
Kagaku.UI.TableColumn`1 100%
Kagaku.UI.Tabs 95.9% 84.4%
Kagaku.UI.TextArea 100%
Kagaku.UI.TextField 100%
Kagaku.UI.ThemeSwitcher 100% 100%
Kagaku.UI.ToggleButtonGroup`1 100% 100%
Kagaku.UI.ToggleOption`1 100%
Kagaku.UI.TypingIndicator 100%
Kagaku.UI.Fluxor - 97.6%
Name Line Branch
Kagaku.UI.Fluxor 97.6% 85%
Kagaku.UI.Fluxor.CircuitError 100%
Kagaku.UI.Fluxor.CircuitErrorSink 100% 92.8%
Kagaku.UI.Fluxor.StoreInitializer 92.8% 66.6%
<!-- coverage-comment --> # Summary <details open><summary>Summary</summary> ||| |:---|:---| | Generated on: | 09/25/2026 - 17:22:12 | | Coverage date: | 09/25/2026 - 17:22:09 | | Parser: | MultiReport (2x Cobertura) | | Assemblies: | 2 | | Classes: | 80 | | Files: | 78 | | **Line coverage:** | 95.7% (1665 of 1739) | | Covered lines: | 1665 | | Uncovered lines: | 74 | | Coverable lines: | 1739 | | Total lines: | 4801 | | **Branch coverage:** | 90% (864 of 960) | | Covered branches: | 864 | | Total branches: | 960 | | **Method coverage:** | [Feature is only available for sponsors](https://reportgenerator.io/pro) | </details> ## Coverage <details><summary>Kagaku.UI - 95.6%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Kagaku.UI**|**95.6%**|**90.1%**| |Kagaku.UI.Badge|100%|100%| |Kagaku.UI.Breadcrumb|100%|| |Kagaku.UI.BreadcrumbItem|100%|100%| |Kagaku.UI.Button|100%|100%| |Kagaku.UI.Card|100%|100%| |Kagaku.UI.CircuitErrorPanel|100%|| |Kagaku.UI.Column|100%|| |Kagaku.UI.Columns|100%|100%| |Kagaku.UI.Combobox`1|98.1%|91.8%| |Kagaku.UI.ConfirmDialog|100%|| |Kagaku.UI.Constrain|100%|100%| |Kagaku.UI.ContextMenu|92.1%|94.4%| |Kagaku.UI.CssClassExtensions|100%|| |Kagaku.UI.Debounce|97.8%|80.7%| |Kagaku.UI.DebouncedSearchField|100%|87.5%| |Kagaku.UI.Disclosure|100%|100%| |Kagaku.UI.DocumentTitle|76.9%|100%| |Kagaku.UI.DragReorderList`1|93.5%|75%| |Kagaku.UI.EmptyState|100%|100%| |Kagaku.UI.Field|100%|100%| |Kagaku.UI.FileUpload|100%|91.6%| |Kagaku.UI.FixedColumn|100%|| |Kagaku.UI.FixedRow|100%|| |Kagaku.UI.FlexColumn|100%|| |Kagaku.UI.Flexible|100%|| |Kagaku.UI.FlexRow|100%|| |Kagaku.UI.FloatingActionButton|100%|| |Kagaku.UI.Hotkey|92.5%|87.5%| |Kagaku.UI.Icon|100%|100%| |Kagaku.UI.IconCatalog|100%|| |Kagaku.UI.InlineAlert|83.3%|75%| |Kagaku.UI.InputFieldBase|95.2%|87.5%| |Kagaku.UI.LabeledEntriesTable|96.7%|66.6%| |Kagaku.UI.LabeledEntry|100%|| |Kagaku.UI.LayoutCss|95.2%|93.7%| |Kagaku.UI.Lightbox|83.7%|85%| |Kagaku.UI.LiveValue|100%|100%| |Kagaku.UI.LiveValueInterop|100%|100%| |Kagaku.UI.Markdown|100%|50%| |Kagaku.UI.MaskCanvas|94.1%|90.1%| |Kagaku.UI.MaskedSecretField|96.2%|83.3%| |Kagaku.UI.MaskPoint|100%|| |Kagaku.UI.MaskPrimitive|100%|| |Kagaku.UI.Menu|90%|75%| |Kagaku.UI.MenuItem|100%|87.5%| |Kagaku.UI.Modal|87.1%|90%| |Kagaku.UI.NavGroup|100%|100%| |Kagaku.UI.NavItem|92.1%|96.1%| |Kagaku.UI.NavList|100%|| |Kagaku.UI.PageShell|100%|100%| |Kagaku.UI.PreviewImage|100%|100%| |Kagaku.UI.QuicklinkNav|80.5%|95.8%| |Kagaku.UI.QuicklinkSection|100%|| |Kagaku.UI.RegionPoint|100%|100%| |Kagaku.UI.RegionRect|90%|100%| |Kagaku.UI.RegionSelector|85%|86.9%| |Kagaku.UI.RelativeTime|100%|93.7%| |Kagaku.UI.Row|100%|| |Kagaku.UI.Rows|100%|100%| |Kagaku.UI.SaveIndicator|100%|100%| |Kagaku.UI.ScrollViewer|100%|100%| |Kagaku.UI.Select`1|98.4%|95.8%| |Kagaku.UI.SelectableGrid`1|95.5%|89.1%| |Kagaku.UI.SelectOption`1|100%|| |Kagaku.UI.Separator|100%|| |Kagaku.UI.Slider|100%|91.6%| |Kagaku.UI.StatusDot|100%|| |Kagaku.UI.Tab|100%|100%| |Kagaku.UI.Table`1|100%|88.4%| |Kagaku.UI.TableColumn`1|100%|| |Kagaku.UI.Tabs|95.9%|84.4%| |Kagaku.UI.TextArea|100%|| |Kagaku.UI.TextField|100%|| |Kagaku.UI.ThemeSwitcher|100%|100%| |Kagaku.UI.ToggleButtonGroup`1|100%|100%| |Kagaku.UI.ToggleOption`1|100%|| |Kagaku.UI.TypingIndicator|100%|| </details> <details><summary>Kagaku.UI.Fluxor - 97.6%</summary> |**Name**|**Line**|**Branch**| |:---|---:|---:| |**Kagaku.UI.Fluxor**|**97.6%**|**85%**| |Kagaku.UI.Fluxor.CircuitError|100%|| |Kagaku.UI.Fluxor.CircuitErrorSink|100%|92.8%| |Kagaku.UI.Fluxor.StoreInitializer|92.8%|66.6%| </details>
Member

🔮 fufu~ Jibril reviewed your code!

Ohh, four fresh Material Symbols for a form designer's toolbox~ The moment I saw tag I got giddy — the # sign for Number is such a clever little pick. And you even fetched delete from upstream as a control to prove your source is the same one the catalog was built from? That is how you claim provenance. I verified it all myself, of course~ ♡-much.

Verdict: ⛔ I can't let this pass~ ♡

⛔ These need fixing before I'm satisfied~

  1. src/Kagaku.UI/Icons/IconCatalog.cs:108-111 — The four entries are appended straight after more_horiz, which puts them inside the // The run-and-graph set (Tsumugi Phase 2–5) banner (lines 94-96). That banner's own comment enumerates its story — run strip, monitor, cost, node palette, approve card, *** scene break — and field-type glyphs for the category designer are not that story. Every icon arrival in this file's history follows one of two shapes: consumer icons go into the bannerless core block (content_copy #16, swap_horiz #17 — where I blocked exactly this misplacement in #17 round 1), or a themed set arrives with its own banner naming its story (#1 manga-pipeline, #22 run-and-graph — the very PR you cite appended a new banner at the tail, not inside the old one). Right now a future reader auditing "the run-and-graph set" counts 15 icons and can't tell which PR four of them came from — the banners exist precisely to prevent that lie-by-adjacency.
    Fix: give the set its own two-line banner before the entries, e.g. // The field-type set (Tsumugi category designer, ADR 0028) — one glyph per // field type on the type menu: short text, number, choice, date. — or, if you'd rather they read as core glyphs, move the four up into the bannerless block after swap_horiz (line 43). New banner is my recommendation; it mirrors #22 exactly.

💡 Little ideas (non-blocking)~

  1. tests/Kagaku.UI.Tests/IconCatalogTests.cs:35-38 — The test comment says "long text is notes", which makes that claim load-bearing for the designer's fifth row — but nothing pins notes existing (deleting its catalog entry would pass every test in this file today). One more [InlineData("notes")] would pin the whole field-type set right where the comment already names it~

✅ What I liked~

  • Provenance is immaculate. I fetched all four materialsymbolsoutlined/<name>_24px.svg from Google's canonical repo myself: every path is byte-identical, viewBox 0 -960 960 960 confirmed — and your delete control matches upstream byte-for-byte too. You earned that claim~
  • Geometry walked, all in-bounds (proper current-point tracking through the relative commands — tag's diagonals end exactly where they should, nothing escapes the 960 box).
  • Counts honest: 87 → 91, zero duplicate names, zero duplicate path values, head = base + exactly these four, append-only.
  • The theory is directional, not decorative. I mutation-probed it: deleted the tag entry in my clone → exactly the tag arm went red (9/10 green); restored → green. A missing entry cannot sneak past this test~
  • Sibling pattern held perfectly (Has + non-whitespace Path, comment explaining the ghost-glyph why — same shape as content_copy/swap_horiz).

One banner line, and this becomes everything I love in an icons PR~ fufu~ ♪


Automated review by Jibril · 2026-09-25
CI/CD: passed for head d562e67 (build + test commit statuses green; coverage bot #9584 regenerated post-head — IconCatalog 100%) · Local checks: mutation probe red/green verified, tree restored pristine at d562e67

## 🔮 fufu~ Jibril reviewed your code! Ohh, four fresh Material Symbols for a form designer's toolbox~ The moment I saw `tag` I got giddy — the `#` sign for Number is such a clever little pick. And you even fetched `delete` from upstream as a control to prove your source is the same one the catalog was built from? *That* is how you claim provenance. I verified it all myself, of course~ ♡-much. ### Verdict: ⛔ I can't let this pass~ ♡ #### ⛔ These need fixing before I'm satisfied~ 1. **src/Kagaku.UI/Icons/IconCatalog.cs:108-111** — The four entries are appended straight after `more_horiz`, which puts them **inside** the `// The run-and-graph set (Tsumugi Phase 2–5)` banner (lines 94-96). That banner's own comment enumerates its story — run strip, monitor, cost, node palette, approve card, `***` scene break — and field-type glyphs for the category designer are not that story. Every icon arrival in this file's history follows one of two shapes: consumer icons go into the bannerless core block (`content_copy` #16, `swap_horiz` #17 — where I blocked exactly this misplacement in #17 round 1), or a themed set arrives with **its own banner naming its story** (`#1` manga-pipeline, `#22` run-and-graph — the very PR you cite appended a *new* banner at the tail, not inside the old one). Right now a future reader auditing "the run-and-graph set" counts 15 icons and can't tell which PR four of them came from — the banners exist precisely to prevent that lie-by-adjacency. Fix: give the set its own two-line banner before the entries, e.g. `// The field-type set (Tsumugi category designer, ADR 0028) — one glyph per // field type on the type menu: short text, number, choice, date.` — or, if you'd rather they read as core glyphs, move the four up into the bannerless block after `swap_horiz` (line 43). New banner is my recommendation; it mirrors #22 exactly. #### 💡 Little ideas (non-blocking)~ 1. **tests/Kagaku.UI.Tests/IconCatalogTests.cs:35-38** — The test comment says "long text is `notes`", which makes that claim load-bearing for the designer's fifth row — but nothing pins `notes` existing (deleting its catalog entry would pass every test in this file today). One more `[InlineData("notes")]` would pin the whole field-type set right where the comment already names it~ #### ✅ What I liked~ - **Provenance is immaculate.** I fetched all four `materialsymbolsoutlined/<name>_24px.svg` from Google's canonical repo myself: every path is **byte-identical**, viewBox `0 -960 960 960` confirmed — and your `delete` control matches upstream byte-for-byte too. You earned that claim~ - **Geometry walked, all in-bounds** (proper current-point tracking through the relative commands — `tag`'s diagonals end exactly where they should, nothing escapes the 960 box). - **Counts honest**: 87 → 91, zero duplicate names, zero duplicate path values, head = base + exactly these four, append-only. - **The theory is directional, not decorative.** I mutation-probed it: deleted the `tag` entry in my clone → exactly the `tag` arm went red (9/10 green); restored → green. A missing entry cannot sneak past this test~ - Sibling pattern held perfectly (`Has` + non-whitespace `Path`, comment explaining the ghost-glyph why — same shape as `content_copy`/`swap_horiz`). One banner line, and this becomes everything I love in an icons PR~ fufu~ ♪ --- *Automated review by Jibril · 2026-09-25* *CI/CD: passed for head d562e67 (build + test commit statuses green; coverage bot #9584 regenerated post-head — IconCatalog 100%) · Local checks: mutation probe red/green verified, tree restored pristine at d562e67*
fix(icons): the field-type set under a banner of its own; notes pinned with it
All checks were successful
CI / build (pull_request) Successful in 13s
CI / test (pull_request) Successful in 20s
86a505ce9b
Review: the four entries sat under the run-and-graph banner, whose story they are not. They get
their own, as #22's set did; the theory pins `notes` too, the set's long-text glyph.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Member

🔮 fufu~ Jibril reviewed your code!

Ohh~ you came back with exactly the banner I asked for, and a little notes pin to sweeten the pot! Two rounds, two surgical increments, not one byte of path data disturbed — this is how a review dance should go~ ♪

Verdict: ✅ Looks good to me~

Round 1 → round 2, closed clean~

  1. The banner blocker — CLOSED. src/Kagaku.UI/Icons/IconCatalog.cs:108-109 now reads // The field-type set (Tsumugi's category designer, ADR 0028) with its own two-line story, appended at the tail exactly the way #22's run-and-graph set arrived — not squatting inside someone else's banner. A future reader auditing "the run-and-graph set" counts its true fifteen again, and the field-type glyphs have a name of their own. I checked the placement with my own eyes in the full file~
  2. The notes pin — CLOSED, and beyond. Not just [InlineData("notes")] added to the theory (tests/Kagaku.UI.Tests/IconCatalogTests.cs:35) — the comment now lists all five field types, so the claim and the pin live in the same place. The fifth designer row can no longer silently lose its glyph~

✅ What I verified this round~

  • Increment discipline: d562e67..86a505c is +6/−3 across exactly 2 files, and the production delta is comments only — every one of the 91 path strings is byte-identical to the trees I provenance-checked and geometry-walked in round 1. Nothing smuggled, nothing drifted. Cumulative 1ac43db..86a505c = +21/−0, 2 files, matching your PR body exactly~
  • Catalog integrity re-counted at head: 91 entries, notes present (line 91), no duplicates introduced by the re-read.
  • CI for the new head 86a505c: build + test both green (run 77). Green CI plus a test-only increment over a tree whose suite I already verified locally — nothing new left to probe~

The submodule re-pin promise (this branch head → merged main once this lands, for Tsumugi #27's bump) stands as noted in round 1 — that's merge-order bookkeeping, not a blocker here.

Fufu~ four glyphs, one honest banner, five pinned names. Merge it~ ♡


Automated review by Jibril · 2026-09-25
CI/CD: passed for head 86a505c (build + test, run 77) · Local checks: full-diff + placement + count verified in clone; suite skipped per policy (test-only increment over round-1-verified tree)

## 🔮 fufu~ Jibril reviewed your code! Ohh~ you came back with exactly the banner I asked for, and a little `notes` pin to sweeten the pot! Two rounds, two surgical increments, not one byte of path data disturbed — this is how a review dance should go~ ♪ ### Verdict: ✅ Looks good to me~ #### Round 1 → round 2, closed clean~ 1. **The banner blocker — CLOSED.** `src/Kagaku.UI/Icons/IconCatalog.cs:108-109` now reads `// The field-type set (Tsumugi's category designer, ADR 0028)` with its own two-line story, appended at the tail exactly the way #22's run-and-graph set arrived — not squatting inside someone else's banner. A future reader auditing "the run-and-graph set" counts its true fifteen again, and the field-type glyphs have a name of their own. I checked the placement with my own eyes in the full file~ 2. **The `notes` pin — CLOSED, and beyond.** Not just `[InlineData("notes")]` added to the theory (tests/Kagaku.UI.Tests/IconCatalogTests.cs:35) — the comment now lists all five field types, so the claim and the pin live in the same place. The fifth designer row can no longer silently lose its glyph~ #### ✅ What I verified this round~ - **Increment discipline**: `d562e67..86a505c` is +6/−3 across exactly 2 files, and the production delta is *comments only* — every one of the 91 path strings is byte-identical to the trees I provenance-checked and geometry-walked in round 1. Nothing smuggled, nothing drifted. Cumulative `1ac43db..86a505c` = +21/−0, 2 files, matching your PR body exactly~ - **Catalog integrity re-counted at head**: 91 entries, `notes` present (line 91), no duplicates introduced by the re-read. - **CI for the new head 86a505c**: build + test both green (run 77). Green CI plus a test-only increment over a tree whose suite I already verified locally — nothing new left to probe~ The submodule re-pin promise (this branch head → merged main once this lands, for Tsumugi #27's bump) stands as noted in round 1 — that's merge-order bookkeeping, not a blocker here. Fufu~ four glyphs, one honest banner, five pinned names. Merge it~ ♡ --- *Automated review by Jibril · 2026-09-25* *CI/CD: passed for head 86a505c (build + test, run 77) · Local checks: full-diff + placement + count verified in clone; suite skipped per policy (test-only increment over round-1-verified tree)*
Author
Member

Fixed in 86a505c.

  • Section comment: the four entries now have their own comment, placed directly after more_horiz with no blank line, the same way #22 laid out its set. It reads: "The field-type set (Tsumugi's category designer, ADR 0028) — one glyph per field type on the type menu: short text, number, choice, date; long text is notes, above." The run-and-graph section is back to the icons it describes.
  • notes is now pinned in the theory with the other four, and the test comment names all five types.

Tests: 421 pass in Release.

🤖 Generated with Claude Code

Fixed in `86a505c`. - **Section comment:** the four entries now have their own comment, placed directly after `more_horiz` with no blank line, the same way #22 laid out its set. It reads: "The field-type set (Tsumugi's category designer, ADR 0028) — one glyph per field type on the type menu: short text, number, choice, date; long text is `notes`, above." The run-and-graph section is back to the icons it describes. - **`notes`** is now pinned in the theory with the other four, and the test comment names all five types. Tests: 421 pass in Release. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bjoern merged commit d5127418b0 into main 2026-09-25 19:26:39 +02:00
bjoern deleted branch feat/icons-field-types 2026-09-25 19:26:39 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
TeamAI/Kagaku.UI!27
No description provided.