a327ex.com

UI Generalization 2

Summary

Continuation of UI Generalization 1. This session finished the toolkit's element vocabulary, built three composite screens (HUD / shop / inventory + skillset + pause as Tier-3 reference pages), then ran a long element-refinement pass that established the toolkit's visual identity (drop shadow, no-thin-borders rule, font rule, selection-marker patterns, area-scaled juice). Ended with a documentation / compartmentalization pass that hoisted the per-frame UI plumbing into a visible block in main.lua, refactored the gallery to be a truly optional dev tool, and rewrote the UI section of .claude/CLAUDE.md to reflect the current architecture.

HP bar v1 rebuild (Chunk 7a finish):

Chunk 7b — ui_tabs:

Chunk 7c-d — form controls:

Chunk 7e — ui_tooltip + ui_list_row:

Chunk 7f — cards + text input + modal:

RICOCHET-inspired additions:

Audit dot removal:

Long element-refinement pass establishing visual identity:

Throughline rule from user: "all elements need to look cohesively thick. One line borders = out. Either thick borders or no borders at all, negative space used well, like with the [ ] on the tags."

Drop shadow system:

Background / chrome / shimmer tuning iteration:

Page-by-page refinement:

Font rule established by user: "font for text = Lana, font for single UI lines and other individual UI elements = Ark."

Slot + icon construct change:

Selection-marker design iterations (slot + card):

Area-scaled juice:

Ghost button:

Final documentation / compartmentalization pass (the closing chunk):

Notable user feedback / corrections (quoted):

Final state: 17 gallery pages covering every widget + composite reference screens. main.lua is a clean template with structural UI plumbing visible (no widget calls). CLAUDE.md UI section comprehensively documents the toolkit's current architecture.



Let's continue with UI generalization. Read the summary for the last log to get aligned.

I'll find the most recent session log to get aligned.

Bash (ls -t E:/a327ex/a327ex-site/logs/ 2>/dev/null | head -20)

ui-generalization-1.md
attack-system-generalization-4.md
attack-system-generalization-3.md
attack-system-generalization-2.md
attack-system-generalization-1.md
edition-system-generalization.md
emoji-aimer-8.md
invoker-spellcasting-tree-structure.md
emoji-aimer-7.md
anchor-app-phase-2-part-2.md
anchor-app-phase-2-part-1.md
invoker-hp-and-mana-orbs.md
emoji-aimer-6.md
emoji-aimer-5.md
orblike-to-invoker.md
emoji-aimer-4.md
anchor-app-phase-1-part-3.md
emoji-aimer-3.md
anchor-app-phase-1-part-2.md
emoji-aimer-2.md

Bash (head -60 E:/a327ex/a327ex-site/logs/ui-generalization-1.md)

Title: UI Generalization 1
Date: 2026-05-21 21:54:45

# UI Generalization 1

## Summary

First session generalizing a SNKRX / Orblike / Invoker-style UI element toolkit into `attack-template`, built incrementally one element at a time with the user testing between each. The toolkit lives in `attack-template/snkrx/ui/` and is loaded by `require('snkrx')`. Covered alignment/architecture, six build chunks of elements, and a large edition-system integration. The full mockup vocabulary is NOT finished — tabs/segments, form controls, tooltip-as-widget, list rows, cards, and the Tier-3 composite screens remain.

**Alignment & reference gathering:**

- Read the four Invoker UI mockups (`Invoker/reference/mockup_ui_kit_1..4.html`), `ui_primitives_spec.md`, Invoker's existing `ui.lua` + `primitives.lua`, the attack-template / edition-template `CLAUDE.md` files, and the Anchor App UI discussion (`anchor-app-ui-discussion.md` plus `Anchor2/app/widgets.lua`, `rect.lua`, `docs/ui_architecture.md`).
- Later viewed the original PNG sources (`orblike_ui_kit_1..4.png`, `orblike_hud.png`, `orblike_inventory_orb_1/2.png`) — confirmed the HTML mockups are faithful re-creations, and that the HUD / inventory PNGs are Invoker-specific Tier-3 composites built FROM the primitives.
- User framing answers: fold the UI into `attack-template` (specifically inside `snkrx/ui/`, not a sibling directory); Tier-3 composite screens decided per-element.

**Architecture decisions:**

- Calling convention: every widget takes ONE opts table; the rect is `opts.rect` ({x,y,w,h}, RectCut-native); draws go to the global `ui_layer`. Adopted from the Anchor App over Invoker's positional `(lyr,x,y,w,h)` signatures.
- Adopted the Anchor App's `ui_state` (hot/active/focus, explicit string ids) as the interaction substrate and RectCut (`rect.lua`) as the layout primitive — dropped the Anchor App's pane/template/workspace/model shell as overkill for a game UI.
- Kept Invoker's chrome technique: panels are two filled rounded-rects (the engine's rough-mode SDF stroke drops top/left edges at 1px), and `ui_text` pixel-snaps draw positions.

**Chunk 0 — `ui/` scaffold:** created `snkrx/ui/` with `rect.lua` (RectCut verbatim from the Anchor App), `state.lua` (`ui_state`, `ui_claim_hot`, `ui_point_in_rect`), `gallery.lua` (paged F4 test scene), `init.lua` (registers fonts, creates `ui_layer`, requires modules). `snkrx/init.lua` gained `require('snkrx.ui')`; `main.lua` got F4 / `[` / `]` binds plus `ui_gallery_update` / `ui_gallery_draw` hooks.

**Chunk 1 — Tier-1 primitives:** `ui_panel`, `ui_text`, `ui_divider` in `primitives.lua`. Fonts: Awesome 9 (`ui_font_header_l` @16), FatPixelFont (`ui_font_header_s` @8), and a live-toggleable body font — LanaPixel @11 vs Ark Pixel. Downloaded Ark Pixel proportional-latin TTFs from the `TakWolf/ark-pixel-font` GitHub releases. User feedback: use Ark Pixel 10 not 12; FatPixelFont @8 renders far taller than its point size, so the gallery text section was relaid-out with a running cursor driven by each font's real `.height`.

**Compose page:** added a second gallery page composing panels/text/dividers into a mock "run summary" screen. User found it "doesn't look that good — elements too simple"; also asked that new gallery pages be inserted at the FRONT so the project always opens on the latest work.

**Chunk 2 — slot + item icon:** `ui_item_icon` (colored rounded tile + centered glyph) added to `primitives.lua`; `ui_slot` (first interactive widget — derives hover from `ui_state`, data states selected/locked/disabled/occupied, drag-target dashed overlay) in a new `widgets.lua`. Established the split: `primitives.lua` = pure draw, `widgets.lua` = interactive.

**Chunk 3 — buttons, reworked SNKRX-style:** first built `ui_button` with mockup-style bottom-edge depth + press-sink; user rejected it ("take inspiration from the original SNKRX more closely ... disregard the mockups a bit"). Studied SNKRX's own source (`SNKRX/buy_screen.lua` `Button` class — the user's own MIT-licensed game). SNKRX buttons: flat rounded rects, scale-spring bounce on hover/click, invert to near-white on hover, two layered hover sounds (`bamboo_hit_by_lord.ogg` + `467951__benzix2__ui-button-click.ogg`), font `PixulBrush` @8. Reworked `ui_button` to match and introduced `ui/juice.lua` — a per-widget-id registry holding a scale spring + `was_hovered` edge for the once-per-enter hover sound. Copied PixulBrush.ttf + the two sounds from SNKRX into `assets/`. Decisions: keep primary/secondary/danger/ghost variants as color presets sharing the SNKRX juice; defer animated wavy text to a later text-effects chunk. User later noted SNKRX uses a hover-only (bamboo alone) sound for non-clickable elements vs the layered pair for clickable — added an optional `clickable` param to `ui_juice_hover`. Buttons were later defaulted to PixulBrush in all cases (the body fonts read wrong inside buttons).

**Chunk 4 — rich text + labels (GLIMPO redirect):** first built bordered chip / tag / badge / rarity pills from the mockups; user rejected them, pointing at a screenshot from **GLIMPO** (a SNKRX-inspired game — screenshot only, not a local project). In GLIMPO, tags are bracketed multi-colored inline text (`[tier 2][mage - psion]`) and the pill-like elements are flat dark rounded labels. Dropped `ui_pill` / `ui_badge`; built `ui_rich_text` (one line, multiple `{text,color,font,dy}` runs) and `ui_label` (flat dark rounded container holding plain OR rich text); kept `rarity_color`. The metadata motif: PixulBrush has no `[ ]` glyphs, so the bracket runs use a small Awesome font (`ui_font_bracket`, ended at @16) with a per-run `dy` vertical nudge and a dimmer color than the content.
... [30 more lines]

I'm aligned on the prior session. Let me check the current state of the toolkit before proposing what's next.

Bash (ls -la E:/a327ex/attack-template/snkrx/ui/; echo "---ASSETS---"; ls E:/a327ex/at...)

total 72
drwxr-xr-x 1 adn 197121     0 May 21 21:44 .
drwxr-xr-x 1 adn 197121     0 May 21 21:19 ..
-rw-r--r-- 1 adn 197121 18511 May 21 21:32 gallery.lua
-rw-r--r-- 1 adn 197121  3960 May 21 21:20 init.lua
-rw-r--r-- 1 adn 197121  3587 May 21 21:00 juice.lua
-rw-r--r-- 1 adn 197121  5358 May 21 21:41 paint.lua
-rw-r--r-- 1 adn 197121  6782 May 21 21:42 primitives.lua
-rw-r--r-- 1 adn 197121  3664 May 21 17:34 rect.lua
-rw-r--r-- 1 adn 197121  1852 May 21 17:35 state.lua
-rw-r--r-- 1 adn 197121 11781 May 21 21:44 widgets.lua
---ASSETS---
467951__benzix2__ui-button-click.ogg
ark-pixel-10px-proportional-latin.ttf
ark-pixel-12px-proportional-latin.ttf
ARROW_Hit_Wood_Shield_stereo.ogg
Awesome 9.ttf
bamboo_hit_by_lord.ogg
Bloody punches 10.ogg
Bloody punches 3.ogg
Bloody punches 7.ogg
Body Fall 2.ogg
Body Head (Headshot) 1.ogg
Click sound 37 + Body Fall 18.ogg
draw_shader.frag
Explosion Flesh 1.ogg
Explosion Flesh 3.ogg
Explosion Flesh 4.ogg
FatPixelFont.ttf
fx_energy_122.png
... [14 more lines]

I'm aligned. Here's where the UI toolkit stands and what remains.

Done (Chunks 0–6): scaffold, Tier-1 primitives (ui_panel/ui_text/ui_divider), ui_item_icon, ui_slot, SNKRX-style ui_button + juice, ui_rich_text/ui_label, ui_bar, and the full edition system applied across the UI.

Remaining from the mockup vocabulary:

Per our incremental rhythm, I'll do one chunk at a time with you testing between each. One question on ordering before I write the first design brief.

AskUserQuestion

Your questions have been answered: "Which element should Chunk 7 tackle first?"="We need to fix the HP UI element first along with a few others.". You can now continue with these answers in mind.

Got it — fixes first, not new elements. Let me look at the current bar code so I can understand what we're working with.

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

1    --[[
2     ui/widgets.lua — interactive UI widgets.
3   
4     Same opts-table / ui_layer convention as ui/primitives.lua. These
5     widgets consult `ui_state` (ui/state.lua) — they derive hover via
6     ui_claim_hot, run the mouse-down→up click machine, and return an
7     interaction result. Each takes opts.id, an explicit caller-provided
8     string identity.
9   
10    Coloring goes through the edition pipeline (ui/paint.lua): draws use
11    the ui_rrect / ui_text wrappers, or bracket edition_set manually for
12    loops (draw_drag_target). Every widget accepts opts.edition to force
13    a specific edition for all its draws — the per-element override.
14  
15    They also carry SNKRX-style juice via ui/juice.lua: a per-id scale
16    spring that bounces on hover-enter and click, and the hover sounds.
17  
18    The action-vs-rules split: a widget's *data* states (a slot's
19    selected / occupied / locked / disabled) are caller-owned and passed
20    in via opts. Its *interaction* state (hover, active, focus) is
21    frame-local, derived here from ui_state. The juice + bar registries
22    are the one retained sliver — keyed by the explicit id.
23  ]]
24  
25  -- Clone a palette token with a fixed alpha. Returns a callable color.
26  local function with_alpha(token, a)
27    local c = color_clone(token)
28    c.a = a
29    return c
30  end
... [288 more lines]

I've read the bar widget. Before I propose fixes, I need to know what's actually wrong — I shouldn't guess at the problems.

AskUserQuestion

Your questions have been answered: "What's wrong with the HP bar (`ui_bar`) as it stands?"="Juice behavior", "Which other elements need fixing in this pass?"="The problem is that they're inconsistent visually with each other in some small ways. I need a way to look at all of them in the same screen.". You can now continue with these answers in mind.

The two issues: HP bar juice is wrong, and elements are subtly inconsistent — you need one screen showing them all. Let me read the gallery to see how pages are built.

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

1    --[[
2     ui/gallery.lua — the UI kit gallery / test scene.
3   
4     A paged, full-screen overlay that renders every UI element the toolkit
5     ships — the in-engine equivalent of reference/mockup_ui_kit_*.html.
6       F4         toggle the gallery
7       [ / ]      previous / next page
8       B          toggle the body font (LanaPixel <-> Ark Pixel)
9       O / P      preview the whole UI under prev / next edition
10                 (per-color / dynamic / palette-cycle / polychrome)
11      K / L      field_scale down / up (UI shimmer density)
12      U          cycle the dither mode (32 modes)
13    Each element chunk appends its showcase to a gallery page.
14  
15    WHY PAGE DRAWS RUN FROM update(), NOT draw():
16      Interactive widgets hit-test with mouse_is_pressed / key_is_pressed,
17      whose edge events are only true during update() (see MEMORY.md →
18      "Anchor 2 input edge events are update-only"). Widgets also queue
19      their layer commands in the same call. So the gallery queues ALL
20      ui_layer commands from ui_gallery_update(); ui_gallery_draw() is
21      only the layer_render + layer_draw flush.
22  ]]
23  
24  ui_gallery_active = false
25  ui_gallery_page   = 1
26  
27  --[[
28    gallery_section_label(lyr, x, y, num, title)
29  
30    Numbered section header in the mockup style: a muted two-digit number
... [406 more lines]

Read (E:/a327ex/attack-template/snkrx/ui/juice.lua)

1    --[[
2     ui/juice.lua — per-widget retained juice.
3   
4     Immediate-mode widgets are pure functions — they have nowhere to keep
5     a spring, a hover edge, or an eased value. These registries are that
6     place, keyed by the widget's explicit string id. The small, retained,
7     action-based sliver the UI doctrine puts behind an id; everything
8     else stays rules-based.
9   
10    Two registries:
11      ui_juice[id]     = { spring, was_hovered }   -- hover/click bounce
12      ui_bar_juice[id] = { trail, fill, flash_t }  -- bar trail + flash
13  
14    Lifecycle:
15      • ui_juice_update(dt)        — tick springs + bar easing (once/frame)
16      • ui_juice_hover(id, hov)    — hover-edge bounce + sound
17      • ui_juice_pull(id, force)   — kick a spring (e.g. on click)
18      • ui_juice_scale(id) -> num  — current widget scale
19      • ui_bar_feed(id, fill)      — feed a bar's fill; returns trail +
20                                     whether the post-hit flash is on
21  ]]
22  
23  ui_juice     = {}  -- widget id -> { spring, was_hovered }
24  ui_bar_juice = {}  -- bar id    -> { trail, fill, flash_t }
25  
26  local function entry(id)
27    local e = ui_juice[id]
28    if not e then
29      e = { spring = spring_new(), was_hovered = false }
30      ui_juice[id] = e
... [75 more lines]

Bash (grep -nE 'width|height|window|w =|h =' E:/a327ex/attack-template/main.lua | he...)

33:  width  = 480,
34:  height = 270,
89:main_camera = camera_new(width, height)
90:main_camera.x = width/2
91:main_camera.y = height/2
99:p = player(width/2, height/2)
104:--     spawn_seeker(width/2 + random_float(-100, 100),
105:--                  height/2 + random_float(-100, 100))
107:--   local wx, wy = width/2 + 80, height/2
148:         spawn_beam(p, { damage = 2, length = 600 })
212:    local e, w = ev.a, ev.b
231:  layer_rectangle(floor_layer, 0, 0, width, height, bg())

I have the full picture. Here's the design brief for the first fix-pass step.

Design brief — Chunk 7a: an "overview" gallery page

Approach. A new gallery page, page_overview, that renders one representative of every element family on a single 480×270 screen — a contact sheet. Its job is comparison: putting elements that should agree visually next to each other so subtle cross-family mismatches (corner radius, border treatment, row height, text baseline, internal padding) become obvious. This is the screen you asked for to spot the inconsistencies.

The headline feature is an alignment strip at the top: panel, label, slot, button, bar, and item_icon all drawn adjacent at one shared height (22px), each with a muted caption. Because they sit side by side at identical dimensions, a radius or border mismatch jumps out immediately. (For example: ui_button defaults to radius 4 while ui_panel/ui_slot/ui_bar default to 3 — that kind of thing.)

Below the strip, a compact showcase: the text font-ladder + a divider + the rich-text metadata motif; then the button variant row and slot state row; then the bars (progress thick/thin + health). One representative per family — the exhaustive state matrices stay on the existing dedicated pages; the overview is about cross-family consistency, not within-family states.

Deliberate decision — the overview page is fully static. Widgets are drawn with no id, so no hover-scale, no juice. On a comparison sheet you want everything sitting still at rest size; a button scaling up on hover would disturb the very alignment you're checking. Interaction stays on the dedicated pages.

Interfaces. Pure addition to ui/gallery.lua. New page_overview(lyr) function; prepended as the first entry of ui_gallery_pages (front = newest, per our convention, so the project opens on it). Reuses gallery_section_label, the local caption pattern, meta_runs, and every existing ui_* widget. No changes to primitives.lua / widgets.lua / paint.lua yet — those edits come after you've looked at the overview and pointed at what's wrong.

Functions.

Once you've eyeballed the overview and told me which inconsistencies bother you (and what's wrong with the HP bar juice specifically), I'll do the actual fix pass. Sound right, or do you want a different cut of what goes on the page?

Go ahead.

Read (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

1    --[[
2     ui/primitives.lua — Tier-1 UI primitives: panel, text, divider,
3     item_icon, rich_text, label.
4   
5     Calling convention (whole toolkit): each widget takes ONE opts table.
6     The rect is opts.rect — a {x, y, w, h} table, exactly what RectCut
7     (ui/rect.lua) produces.
8   
9     Coloring goes through the edition pipeline (ui/paint.lua): these
10    functions don't call layer_* directly, they call the ui_rrect /
11    ui_rect / ui_glyph_text wrappers, which bracket each draw with the
12    edition that mimics its palette color. Every primitive accepts an
13    optional `opts.edition` to force a specific edition for its draws.
14  
15    These six are pure draw — no interaction, no ui_state. Interactive
16    widgets live in ui/widgets.lua.
17  ]]
18  
19  --[[
20    ui_panel(opts)
21  
22    Rounded-rect dark fill + 1px lighter border — the single chrome
23    primitive. opts: rect, bg (panel_fill), border (panel_border),
24    border_width (1), radius (3), edition.
25  
26    Drawn as TWO filled rounded rects — the engine's rough-mode SDF
27    stroke drops its top/left edges at 1px, filled rects don't.
28  ]]
29  function ui_panel(opts)
30    local r      = opts.rect
... [189 more lines]

Design's approved. Adding the page_overview function to the gallery.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

SYNTAX OK

Done — gallery.lua syntax-checks clean.

To test: run the project, press F4 to open the UI gallery. It now opens on the new overview page (page 1/7) — a single-screen contact sheet:

Everything's static (no hover-scale) so the alignment stays still. [ / ] still page to the dedicated per-element pages.

Take a look and tell me which inconsistencies bother you — and what specifically is wrong with the HP bar juice — and I'll do the fix pass.

You can remove this page, we'll try again later with more elements. To fix the HP bar juice: remove the spring juice, copy the effect from Orblike v1 HP bars in terms of tween for the two bars (primary and secondary that's white). Importantly, inside the HP, the rectangle should not be rounded on the end that's decreasing, otherwise it looks off, right? It has to be a flat rectangle that's getting decreased inside the bar, while only on the edges it's rounded. The HP text/HP value itself should tween down overtime as well, instead of directly being changed to the target damage value. Make sure to use the timer module functions with tags and with after functions correctly, in case multiple damage instances happen close to each other.

I'll remove the overview page, then study the v1 HP bar.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Overview page removed. Now let me find the v1 HP bar code.

Bash (ls E:/a327ex/Invoker/v1/ 2>/dev/null; echo "---"; ls E:/a327ex/Orblike/ 2>/dev/n...)

anchor
assets
main.lua
profiler.lua
profiler_log.txt
recordings
run.bat
---

Grep (hp_bar|health_bar|hp_yellow|draw_health|hp_2|secondary.hp|hp.tween)

7646:  draw_health_ui(self)
9375:function draw_health_ui(entity)
9422:    -- Yellow specials have their own sub-bar HP tween; re-arm its back delay so
9513:  draw_health_ui(self)
9688:    -- Yellow specials get their own per-enemy UI state for the sub-bar HP tween.
9803:-- Updates per-pack UI animation state (HP bar tweens, springs) and per-yellow
9804:-- HP tween state for sub-bars.
9842:      -- Per-yellow sub-bar HP tween state (mirrors the pack bar's front/back)
10016:      -- Yellow slot: HP from the yellow's own ui_hp_front / ui_hp_back tween,

Read (E:/a327ex/Invoker/v1/main.lua)

9375 function draw_health_ui(entity)
9376      if not should_show_health_ui(entity) then return end
9377      local bar_y = entity.y - entity.h - 2
9378      local bar_w = entity.w
9379      local bar_h = 2
9380      local bg_c = color(30, 30, 30)()
9381      local hp_fill = math.remap(math.max(0, entity.hp), 0, entity.max_hp, 0, bar_w)
9382      ui:rounded_rectangle(entity.x - bar_w*0.5, bar_y, bar_w, bar_h, 1, bg_c)
9383      if hp_fill > 0 then
9384        ui:rounded_rectangle(entity.x - bar_w*0.5, bar_y, hp_fill, bar_h, 1, red())
9385      end
9386    end
9387    
9388    -- Apply a flat damage amount to an entity. No defense subtraction.
9389    -- damage: {damage = N, element = 'fire'}
9390    function apply_damage(entity, damage)
9391      if entity.dead then return nil end
9392      local dmg = math.max(0, damage.damage or 0)
9393    
9394      local prev_hp = entity.hp
9395      entity.hp = entity.hp - dmg
9396      entity.last_damage_time = an.time
9397    
9398      local overkill = 0
9399      if entity.hp <= 0 then
9400        overkill = -entity.hp
9401      end
9402    
9403      return {
9404        damage_hit = dmg,
... [100 more lines]

The seeker bar is the simple one. The two-bar tween is in the pack UI. Let me read that.

Read (E:/a327ex/Invoker/v1/main.lua)

9803 -- Updates per-pack UI animation state (HP bar tweens, springs) and per-yellow
9804    -- HP tween state for sub-bars.
9805    function packs_update_ui(dt)
9806      for i = 1, #packs do
9807        local p = packs[i]
9808        if p.engaged and #p.members > 0 then
9809          -- Sum live non-yellow member HP for the pack's main bar target. Yellows
9810          -- are tracked on their own sub-bar and are excluded from this sum.
9811          local target_hp = 0
9812          for _, m in ipairs(p.members) do
9813            if not m.dead and m.tier ~= 'yellow' then
9814              target_hp = target_hp + math.max(0, m.hp)
9815            end
9816          end
9817    
9818          -- Front bar snaps fast toward current HP
9819          p.hp_shown_front = p.hp_shown_front + (target_hp - p.hp_shown_front)*math.min(1, dt*12)
9820    
9821          -- Back bar waits out the delay, then lerps slowly toward the front
9822          if p.ui_back_delay > 0 then
9823            p.ui_back_delay = math.max(0, p.ui_back_delay - dt)
9824          else
9825            p.hp_shown_back = p.hp_shown_back + (p.hp_shown_front - p.hp_shown_back)*math.min(1, dt*4)
9826          end
9827    
9828          -- Scale spring toward 1 — critically damped so it never undershoots below 1.
9829          local k_s = (2*math.pi*5)^2
9830          local d_s = 4*math.pi*5
9831          local a_s = -k_s*(p.ui_scale - 1) - d_s*p.ui_scale_v
9832          p.ui_scale_v = p.ui_scale_v + a_s*dt
... [80 more lines]

Read (E:/a327ex/Invoker/v1/main.lua)

9960     local scale = p.ui_scale
9961    
9962        hud:push(cx, cy, rot, scale, scale)
9963    
9964        -- Common bar geometry (local coords within the push)
9965        hud:rounded_rectangle(-bar_w/2, -bar_h/2, bar_w, bar_h, corner_r, edge_c)
9966        hud:rounded_rectangle(-bar_w/2 + inner_pad, -bar_h/2 + inner_pad, bar_w - 2*inner_pad, bar_h - 2*inner_pad, math.max(0, corner_r - 1), inner_c)
9967    
9968        if slot.kind == 'main' then
9969          local hp_max = p.hp_max > 0 and p.hp_max or 1
9970          local front_r = math.max(0, math.min(1, p.hp_shown_front/hp_max))
9971          local back_r = math.max(0, math.min(1, p.hp_shown_back/hp_max))
9972    
9973          -- Back flash (edition 31 + clip)
9974          if back_r > 0 then
9975            local clip_back_a = (inner_pad + (bar_w - 2*inner_pad)*back_r)/bar_w
9976            hud:shader_set_float(draw_shader, 'u_edition', 31)
9977            hud:shader_set_float(draw_shader, 'u_hp_clip_r', clip_back_a)
9978            hud:rounded_rectangle(-bar_w/2, -bar_h/2, bar_w, bar_h, corner_r, back_darker_c)
9979            hud:shader_set_float(draw_shader, 'u_hp_clip_r', back_r)
9980            hud:rounded_rectangle(-bar_w/2 + inner_pad, -bar_h/2 + inner_pad, bar_w - 2*inner_pad, bar_h - 2*inner_pad, math.max(0, corner_r - 1), back_c)
9981            hud:shader_set_float(draw_shader, 'u_edition', 0)
9982            hud:shader_set_float(draw_shader, 'u_hp_clip_r', 1.0)
9983          end
9984    
9985          -- Front HP fill with wall palette (edition 30)
9986          if front_r > 0 then
9987            local pal = wall_palettes[wall_palette_index] or wall_palettes[1]
9988            local ca = pal.wall
9989            local cb = pal.wall2
... [100 more lines]

The v1 bar uses a two-bar front/back tween plus a shader clip (u_hp_clip_r) for the flat decreasing edge. Let me check the attack-template shader and paint pipeline.

Read (E:/a327ex/attack-template/snkrx/ui/paint.lua)

1    --[[
2     ui/paint.lua — edition-backed UI coloring.
3   
4     Every UI color is drawn through the edition pipeline. Each of the 18
5     locked palette tokens has a "mimic edition" (50..67) that reproduces
6     its exact color plus a subtle lightness shimmer (see ui_palette_color
7     in assets/draw_shader.frag). So UI elements still read as the locked
8     palette, but they breathe like SNKRX entities.
9   
10    How a colored draw works: instead of `layer_rounded_rectangle(ui_layer,
11    ..., c())`, widgets call ui_rrect / ui_rect / ui_text, which bracket
12    the draw with edition_set(ui_layer, edition_for(c), field_scale,
13    dither) / edition_clear. The base color passed is still the token —
14    so at edition 0 the UI renders as the flat locked palette.
15  
16    Resolution order for an element's edition (ui_edition_for):
17      1. ui_global_edition, if non-zero — forces the WHOLE UI to one
18         edition (the gallery's preview override).
19      2. an explicit per-element override (opts.edition on a widget).
20      3. the token's mimic edition from ui_color_edition.
21  
22    Editions 50..58 (the chrome greys) are flagged in ui_new_editions —
23    the "newly created" set the red-dot audit marks.
24  ]]
25  
26  -- Tuning globals — the gallery exposes keys for these.
27  ui_field_scale    = 0.4   -- shimmer noise density (UI elements are small)
28  ui_dither         = 0     -- dither mode (0 = smooth)
29  ui_global_edition = 0     -- 0 = per-color table; non-zero = force all UI
30  
... [103 more lines]

Bash (grep -niE 'scissor|clip|stencil|mask' E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md...)

E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:28:layer_stencil_mask(layer)
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:29:layer_stencil_test(layer)
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:30:layer_stencil_test_inverse(layer)
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:31:layer_stencil_off(layer)
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:330:## System: Clipboard
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:333:clipboard_get() -> string | nil
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:334:clipboard_set(text) -> bool
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:335:clipboard_has_text() -> bool
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:264:### Blend and stencil
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:267:layer_stencil_mask(lyr)
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:268:layer_stencil_test(lyr)
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:269:layer_stencil_test_inverse(lyr)
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:270:layer_stencil_off(lyr)

Bash (grep -n -A4 'stencil' E:/a327ex/Anchor2/docs/ENGINE_API.md | head -50)

220:### layer_stencil_mask
221-
222:`layer_stencil_mask(layer)`
223-
224:Starts writing to the stencil buffer. Subsequent draws write to stencil only (not visible on screen). Use to define a mask shape.
225-
226-```lua
227:layer_stencil_mask(layer)
228:layer_rectangle(layer, 100, 100, 50, 50, rgba(255, 255, 255))  -- draws to stencil only
229:layer_stencil_test(layer)
230:-- subsequent draws only appear where stencil was set
231-```
232-
233:### layer_stencil_test
234-
235:`layer_stencil_test(layer)`
236-
237:Starts testing against the stencil buffer. Subsequent draws only appear where stencil has been written.
238-
239-```lua
240:layer_stencil_mask(layer)
241-layer_circle(layer, 150, 150, 50, rgba(255, 255, 255))  -- mask shape
242:layer_stencil_test(layer)
243-layer_draw_texture(layer, tex, 150, 150)  -- only visible inside circle
244:layer_stencil_off(layer)
245-```
246-
247:### layer_stencil_off
248-
249:`layer_stencil_off(layer)`
... [20 more lines]

The engine has a stencil system — that gives the flat decreasing edge cleanly. Let me check the timer module's tag/after signatures.

Bash (grep -nE 'timer_(after|every|tween|cancel|new|update|reset)' E:/a327ex/Anchor2/d...)

7:take state as the first argument (e.g. `timer_update(self.timer, dt)`). The only
95:  -- game update: entity updates, timer_update, camera_update, etc.
502:Procedural scheduler. Create with `timer_new()`, update with `timer_update(t, dt)`.
505:timer_new() -> t
506:timer_update(t, dt)
507:timer_cancel(t, name)                      -- skip the `after` callback
519:timer_after(t, delay, [name,] callback)
520:timer_every(t, delay, [name,] callback, [times,] [after])
522:timer_tween(t, duration, [name,] target, values, [easing,] [after])
526:timer_every_step(t, start_delay, end_delay, times, [name,] callback, [step_method,] [after])
530:- `timer_after` — fire once after delay.
531:- `timer_every` — fire repeatedly every delay; optional `times` count then `after`.
533:- `timer_tween` — interpolate target fields to values with easing; callback receives nothing (target is mutated).
537:- `timer_every_step` — fire `times` times with delays interpolating from start to end.
649:### Easing functions (used with timer_tween)

Bash (sed -n '500,560p' E:/a327ex/Anchor2/docs/FRAMEWORK_API.md)

```

```lua
-- In your rebind UI:
input_capture_start()
-- wait for input in subsequent frames...
local captured = input_capture_get()
if captured then
  unbind_all(rebinding_action)
  bind(rebinding_action, captured)
  input_capture_stop()
end
```

### Raw engine queries

These are engine C functions, not framework wrappers. Always available.

```
key_is_down(key), key_is_pressed(key), key_is_released(key)
mouse_is_down(button), mouse_is_pressed(button), mouse_is_released(button)
mouse_position() -> x, y
mouse_delta() -> dx, dy
mouse_wheel() -> wx, wy
gamepad_is_connected() -> bool
gamepad_get_axis(axis) -> number
```

---

... [31 more lines]

Bash (grep -n -A6 '^### timer_tween|^### timer_after|^### timer_cancel' E:/a327ex/An...)

(Bash completed with no output)

Bash (grep -n 'timer_tween|timer_after|timer_cancel|timer_every' E:/a327ex/Anchor2/...)

1340:- Can be cancelled with `timer_cancel(t, name)`
1348:timer_after(self.timer, 1, function() print('fired') end)
1351:timer_after(self.timer, 0.15, 'shoot_flash', function() self.flashing = false end)
1356:#### `timer_after(t, delay, [name,] callback)`
1361:timer_after(self.timer, 0.5, function() self:explode() end)
1364:#### `timer_every(t, delay, [name,] callback, [times,] [after])`
1371:timer_every(spawn_timer, 1.5, 'spawn', spawn_enemy)
1374:timer_every(self.timer, 0.05, 'blink', function()
1393:#### `timer_tween(t, duration, [name,] target, values, [easing,] [after])`
1401:timer_tween(self.timer, 0.5, 'pos', self, { y = self.y - 18 }, math.cubic_out)
1402:timer_tween(self.timer, 0.5, 'alpha', self, { alpha = 0 }, math.cubic_in, function()
1465:#### `timer_every_step(t, start_delay, end_delay, times, [name,] callback, [step_method,] [after])`
1473:timer_every_step(game_timer, 0.05, 0.5, 5, 'wave', spawn_enemy, math.cubic_out)
1485:timer_cancel(t, name)              -- skip the `after` callback
1491:`timer_cancel` marks the entry for removal and does not call its `after`.
1778:Used with `timer_tween` for non-linear interpolation. All take `t` in 0..1 and

Read (E:/a327ex/Anchor2/docs/FRAMEWORK_API.md)

1330   timer_update(self.timer, dt)
1331      -- ...
1332    end
1333    ```
1334    
1335    ### Naming convention
1336    
1337    Every schedule function accepts an optional `name` string immediately before
1338    the callback. Named entries:
1339    
1340    - Can be cancelled with `timer_cancel(t, name)`
1341    - Can be triggered manually with `timer_trigger(t, name)`
1342    - Replace any prior entry with the same name
1343    
1344    Anonymous calls get auto-generated internal IDs.
1345    
1346    ```lua
1347    -- Anonymous: fire once in 1 second
1348    timer_after(self.timer, 1, function() print('fired') end)
1349    
1350    -- Named: replaces any previous 'shoot_flash'
1351    timer_after(self.timer, 0.15, 'shoot_flash', function() self.flashing = false end)
1352    ```
1353    
1354    ### Schedule modes
1355    
1356    #### `timer_after(t, delay, [name,] callback)`
1357    
1358    Fires `callback` once after `delay` seconds.
1359    
... [100 more lines]

I have everything I need. Here's the design brief.

Design brief — Fix the HP bar juice

What's wrong now: ui_bar juice is a scale-spring pop + a one-shot white flash + a single trailing value. That's not the SNKRX/Orblike HP feel. v1's HP bar is a two-bar tween (no spring, no flash): a fast-moving colored front bar and a delayed, slow white back bar that exposes the "lost health" chunk.

Approach

Rewrite ui_bar's juice to copy v1's packs_update_ui / draw_pack_ui HP bar:

Two tweened bars. Per-id retained state holds three tweened numbers: front (fraction), back (fraction), shown_value (the displayed HP number).

Timer module, tagged. A shared module-level ui_timer = timer_new(), ticked once per frame. Every tween/delay is a named timer entry namespaced by the bar's id — 'bar_front_'..id, 'bar_back_'..id (the delay), 'bar_backtween_'..id, 'bar_value_'..id. Named entries replace any prior entry of the same name (the framework guarantees this), so rapid successive hits debounce correctly: the back bar only starts easing the delay-interval after the last hit, and each new hit re-targets the front/value tweens from their current in-flight position. This is exactly the tag behavior you asked for; it replaces v1's manual ui_back_delay countdown.

Flat decreasing edge. The engine has a stencil system (layer_stencil_mask / _test / _off). Each bar segment is drawn as a full-width rounded rect (so its left corners are properly rounded) but stencil-masked to a plain rectangle [x, x+segment_width] — the mask cuts the right edge flat. This is the no-shader equivalent of v1's u_hp_clip_r clip: rounded on the static (left) end, flat where it's decreasing. Applied to both the front and back bars.

Spring removed. No more layer_push scale-pop, no white-flash window. Track → back bar → front bar → value text, all flat draws.

Interfaces

Functions

Tunable constants in juice.lua: BAR_FRONT_DUR ≈ 0.18, BAR_BACK_DELAY ≈ 0.15, BAR_BACK_DUR ≈ 0.5, BAR_VALUE_DUR ≈ 0.35 — easings cubic_out (front/value), cubic_in_out (back).

One open question before I write it:

AskUserQuestion

Your questions have been answered: "On a heal, how should the white back bar behave?"="Follow front up together". You can now continue with these answers in mind.

Bash (sed -n '1778,1800p' E:/a327ex/Anchor2/docs/FRAMEWORK_API.md)

Used with `timer_tween` for non-linear interpolation. All take `t` in 0..1 and
return `t'` in 0..1.

```
math.linear(t)
math.sine_in, math.sine_out, math.sine_in_out, math.sine_out_in
math.quad_in, math.quad_out, math.quad_in_out, math.quad_out_in
math.cubic_in, math.cubic_out, math.cubic_in_out, math.cubic_out_in
math.quart_in, math.quart_out, math.quart_in_out, math.quart_out_in
math.quint_in, math.quint_out, math.quint_in_out, math.quint_out_in
math.expo_in, math.expo_out, math.expo_in_out, math.expo_out_in
math.circ_in, math.circ_out, math.circ_in_out, math.circ_out_in
math.bounce_in, math.bounce_out, math.bounce_in_out, math.bounce_out_in
math.back_in, math.back_out, math.back_in_out, math.back_out_in
math.elastic_in, math.elastic_out, math.elastic_in_out, math.elastic_out_in
```

Naming convention:

- `in` — slow start, fast end (accelerating)
- `out` — fast start, slow end (decelerating)
- `in_out` — slow at both ends
- `out_in` — fast at both ends

Heal follows front up together — that's what I'll build. Implementing now.

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/juice.lua snkrx/ui/widgets.lua...)

snkrx/ui/juice.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

All three files syntax-check. Let me sync the stale CLAUDE.md line.

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

<tool_use_error>String to replace not found in file.
String: primary/secondary/danger/ghost; bar (progress / health — health mode
adds the trailing-chunk + white-flash + scale-pop juice).
(note: Edit also tried swapping \uXXXX escapes and their characters; neither form matched, so the mismatch is likely elsewhere in old_string. Re-read the file and copy the exact surrounding text.)</tool_use_error>

Grep (white-flash|trailing-chunk|scale-pop)

581-container). Widgets: slot (inventory cell — selected/locked/disabled/
582-occupied states + drag-target overlay), button (SNKRX-style: flat,
583:scale-pop, inverts white on hover, layered hover sounds; variants
584-primary/secondary/danger/ghost), bar (progress / health — health mode
585:adds the trailing-chunk + white-flash + scale-pop juice).
586-
587-### Editions on the UI

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Grep (ui_bar|ui_bar_feed|ui_bar_juice|ui_juice_scale(.*hp)

Found 3 files
snkrx\ui\gallery.lua
snkrx\ui\widgets.lua
snkrx\ui\juice.lua

Only the three files I touched reference the bar — no stragglers. Done.

What changed:

To test: run the project, F4 → page to bars ([/]). On the Health Bar section:

Tell me how the timing feels — BAR_FRONT_DUR / BAR_BACK_DELAY / BAR_BACK_DUR / BAR_VALUE_DUR at the top of juice.lua are the knobs.

Have the HP bar go down by a flat amount on damage, then linearly go back up to normal after a short while, following the gold UI effect from Emoji Aimer.

I need to see the gold UI effect in Emoji Aimer to copy it correctly. Let me find it.

Bash (ls E:/a327ex/emoji-aimer/ 2>/dev/null; echo "---"; ls E:/a327ex/ | grep -i emoji)

anchor
anchor.exe
assets
design.md
ideas.md
main.lua
reference
run.bat
sap_reference.md
---
emoji-aimer
emoji-ball-battles
emoji-ball-battles-generated
emoji-ball-bounce

Grep (gold)

47:gold       = color(248, 168,  48)
48:-- Alias kept under a distinct name because the `gold` global gets
50:-- `gold = 0` near the run-persistent meta block). Anything that needs the
52:-- reference `medal_gold` instead, otherwise tier.color() ends up calling
54:medal_gold = gold
140:-- gold price per shop visit.
420:-- vacuum before the round-end transition fires. 'payout' = mid-screen gold
451:-- Run-persistent meta. gold accumulates from collected resources and is
454:gold              = 0
457:-- Shop gold-chip feedback state. gold_display is the *displayed* gold —
458:-- on a buy, real gold drops instantly (so affordability checks are
459:-- correct) and gold_display tweens down to meet it, scrubbing the number
460:-- visibly. gold_chip_y_offset is the "cash register" kick — set positive
462:-- Both tweens are tagged ('gold_tween' / 'gold_offset') on shop_kit_timer
464:-- stacking. Synced to gold on shop entry and on run_reset.
465:gold_display       = 0
466:gold_chip_y_offset = 0
469:-- Score-panel display state. Mirrors the gold-chip pattern: score_display
472:-- linearly returns to 0 — same "cash register" thunk the gold chip uses
529:-- after the final round). gold is incremented by total at start_payout
530:-- so the shop's gold chip already reflects the new balance.
531:-- seconds_left and gold_held are stored so the detail strings on the
542:  gold_held    = 0,
1930:-- red → purple) then caps with the medal tiers (bronze → silver → gold).
1942:--                  top of their existing +1 gold.
1955:  { combo = 90, color = medal_gold, shake_amp = 4.0, shake_dur = 0.45, score_bonus = 1, coin_chance = 0.25 },
2710:  -- gold hit reads as a much bigger event than a fresh yellow hit.
2890:      gold = gold + self.value
2893:      -- Other resource kinds (gem / crown) still grant gold only.
2901:      -- the fingertip so it reads as a gold gain on the cursor itself.
... [32 more lines]

Found it — Emoji Aimer's gold chip does a "cash-register kick": on a buy it sets gold_chip_y_offset = 4 instantly, then timer_tween(... math.linear) returns it to 0 over 0.25s, tagged so rapid buys don't stack.

I'll add that same kick to the HP bar: on damage the whole bar drops a flat 4px instantly, then linearly returns to 0. It's additive — the front/back fill tween stays (the fill still shows HP); the kick is a positional nudge on top, tagged bar_kick_<id> so repeated hits replace rather than stack.

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now ui_bar in widgets.lua — read y_offset and shift all draws.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/juice.lua snkrx/ui/widgets.lua...)

snkrx/ui/juice.lua OK
snkrx/ui/widgets.lua OK

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Done. Both files syntax-check.

What changed:

This is the same cash-register thunk as Emoji Aimer's gold chip, additive on top of the existing front/back fill tween.

To test: run the project, F4bars page → Health Bar section. Click damage — the whole bar should jolt down 4px and linearly slide back up over ~0.25s, on top of the green fill shrinking and the white trail. Click damage rapidly — each hit re-snaps the bar down (the kick replaces, never stacks). heal does no kick.

Knobs at the top of juice.lua: BAR_KICK (drop distance), BAR_KICK_DUR (return time).

Perfect, you may move on to next elements, your choice.

Glad the HP bar landed well. Moving on — I'll take tabs / segmented controls next: small, interactive, and it unlocks section-switching for the composite screens later. Let me check the mockup first so I propose something grounded.

Bash (grep -niE 'tab|segment' E:/a327ex/Invoker/reference/mockup_ui_kit_2.html | head ...)

96:  /* Tabs */
97:  .tabs { display: flex; background: var(--charcoal); border-radius: 6px; padding: 3px; gap: 2px; border: 1px solid var(--panel-border); width: fit-content; }
98:  .tab { padding: 6px 14px; border-radius: 4px; font-size: 13px; font-weight: 700; color: var(--text-muted); }
99:  .tab.active { background: var(--panel-fill); color: var(--text); }
101:  /* Segments */
102:  .segments { display: flex; background: var(--charcoal); border-radius: 6px; padding: 3px; gap: 2px; border: 1px solid var(--panel-border); width: fit-content; }
103:  .segment { padding: 6px 12px; border-radius: 4px; font-size: 14px; color: var(--text-muted); }
104:  .segment.active { background: var(--bg); color: var(--green); border: 1px solid var(--green); padding: 5px 11px; }
202:  General UI elements: panel chrome variants, buttons, tabs, badges, rarity labels, form controls, keybinds, progress bars, tooltips. Same locked palette as kit_1.
207:  Rarity colors: <strong>common</strong>=text-muted, <strong>uncommon</strong>=green, <strong>rare</strong>=light-blue, <strong>epic</strong>=violet, <strong>legendary</strong>=orange, <strong>mythic</strong>=pink. Form-control on/checked = <strong>green</strong>. Tab track = <strong>charcoal</strong>; active tab on <strong>panel-fill</strong>. Segment-active = <strong>bg</strong> + <strong>green</strong> outline. Tags/keycaps = <strong>charcoal</strong> bg + <strong>panel-border</strong> outline. Notification dots reuse the accent palette plus <strong>grey</strong> for neutral.
270:<!-- 03 TABS / SEGMENTS -->
273:    <div class="section-label"><span class="num">03</span> TABS</div>
274:    <div class="tabs">
275:      <div class="tab active">shop</div>
276:      <div class="tab">skills</div>
277:      <div class="tab">inventory</div>
278:      <div class="tab">options</div>
282:    <div class="section-label"><span class="num">03</span> SEGMENTS</div>
283:    <div class="segments">
284:      <div class="segment">&#9876;</div>
285:      <div class="segment active">&#9960;</div>
286:      <div class="segment">&#9678;</div>
287:      <div class="segment">&hellip;</div>

The kit-2 mockup has a charcoal rounded track holding cells: tabs (text labels, active fills with panel-fill) and segments (icon glyphs, active gets a bg cell with a green outline). They're structurally the same widget — a track with one-of-N selected. A few design calls before I write the brief.

AskUserQuestion

Your questions have been answered: "Tabs and segments share a track + one-active-cell structure. One widget or two?"="One unified ui_tabs", "Should tab cells carry the SNKRX hover juice the buttons/slots use?"="Match buttons", "When the active cell changes, how should the highlight move?"="Instant snap". You can now continue with these answers in mind.

Decisions noted: one unified ui_tabs, button-style hover juice, instant snap. Here's the design brief.

Design brief — Chunk 7b: ui_tabs

Approach. A unified immediate-mode ui_tabs widget (interactive → widgets.lua): a charcoal rounded track holding N equal-width cells, one of them active. Active selection is caller-owned (like ui_slot's selected / the gallery's gallery_sel) — the widget reports which cell was clicked; the caller updates its own active var.

Two visual variants from the kit-2 mockup, chosen by opts.variant:

Both: inactive cell brightens text_muted → text on hover. Each cell carries the SNKRX juice — its own ui_juice id (<id>_<i>), scale-pop on hover-enter + click, layered hover sound — exactly like ui_button/ui_slot. Active highlight snaps instantly to the clicked cell (no slide), so the widget stays fully stateless apart from the shared juice registry.

Layout. Track drawn via ui_panel (bg = charcoal, radius default 6 — so it picks up the audit dot like other chrome). Cell area = track contracted by pad + 1 (3px mockup padding + 1px border). Cells are equal-width with a 2px gap, integer-snapped by flooring each cell's left/right edge (remainder distributed, crisp pixels). Default cell font: ui_font_body for tabs, ui_font_header_l (Awesome) for segment glyphs.

Interfaces. Pure addition. widgets.lua gains ui_tabs; it reuses ui_panel, ui_rrect, ui_text, the ui_state hot/active/click machine, and ui_juice_hover/ui_juice_pull/ui_juice_scale — same patterns as ui_button. No new juice machinery. gallery.lua gets a new page_tabs (prepended to ui_gallery_pages per the front-is-newest rule) with file-local gallery_tab / gallery_seg selection state. CLAUDE.md element-set line updated.

Functions.

One note: for the segment demo I'll use plain letter glyphs (the mockup's ⚔/☸/◎ aren't guaranteed in the pixel Awesome font — the ui_item_icon tiles already use letters for the same reason). Real games pass whatever glyphs their font has.

Sound good?

Yes.

Implementing ui_tabs and the gallery page.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/widgets.lua snkrx/ui/gallery.l...)

snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Bash (grep -n 'ui_slot, ui_button, ui_bar|the stencil).' E:/a327ex/attack-template/....)

588:the decreasing edge via the stencil).

Bash (grep -nE 'widgets.lua|interactive (' E:/a327ex/attack-template/.claude/CLAUDE....)

573:- `widgets.lua` — interactive (consult ui_state + juice): `ui_slot`,
704:        ├── widgets.lua         # interactive: slot / button / bar

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

573  - `widgets.lua` — interactive (consult ui_state + juice): `ui_slot`,
574   `ui_button`, `ui_bar`.

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Done. Both files syntax-check, docs synced.

What's new — ui_tabs:

To test: run the project, F4 opens on the tabs page:

[ / ] pages to the rest. Let me know how it feels and what's next.

Try tabs with the other bigger fonts too.

Good idea — I'll show the tab strip in the larger fonts. This is a gallery-page tweak, so no brief.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

gallery.lua OK

Syntax-checks clean.

What changed: the gallery tabs page now shows the text-tab strip in three rows — Awesome 16, FatPixel 8, PixulBrush 8 — each captioned with its font name. Each strip's track height adapts to the font (font.height + 14) so the bigger fonts get a tall enough cell. All three rows share one gallery_tab active index, so clicking any row moves the highlight on all of them. The Segments section follows below.

To test: F4tabs page. Compare the strips:

Tell me which font reads best for tabs, or if any overflow/baseline issues show up.

Remove the fat pixel and awesome ones. You can also move on to the next elements.

Removing the FatPixel and Awesome rows — keeping the PixulBrush strip.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

gallery.lua OK
---FORM CONTROLS---
141:  .checkbox-row { display: flex; align-items: center; gap: 8px; font-size: 13px; }
142:  .check-box { width: 18px; height: 18px; background: var(--charcoal); border: 1px solid var(--panel-border); border-radius: 3px; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700; }
143:  .check-box.checked { background: var(--green); color: var(--text); border-color: var(--green); }
147:  .radio-group { display: flex; gap: 16px; }
148:  .radio-row { display: flex; align-items: center; gap: 6px; font-size: 13px; }
149:  .radio { width: 14px; height: 14px; border: 1px solid var(--panel-border); border-radius: 50%; background: var(--charcoal); display: inline-flex; align-items: center; justify-content: center; }
150:  .radio.checked::after { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--green); }
151:  .toggle { display: inline-flex; align-items: center; background: var(--charcoal); border: 1px solid var(--panel-border); border-radius: 12px; padding: 0; overflow: hidden; }
152:  .toggle .opt { padding: 3px 12px; font-size: 11px; font-weight: 700; color: var(--text-muted); }
153:  .toggle .opt.active { background: var(--green); color: var(--text); }
362:      <div class="form-label">checkbox</div>
363:      <div class="checkbox-row"><span class="check-box checked">&#10003;</span> enable option</div>
374:      <div class="form-label">radio buttons</div>
375:      <div class="radio-group">
376:        <div class="radio-row"><span class="radio checked"></span> option one</div>
377:        <div class="radio-row"><span class="radio"></span> option two</div>
385:      <div class="form-label">toggle</div>
386:      <div class="toggle"><span class="opt">off</span><span class="opt active">on</span></div>

Tabs page cleaned up (PixulBrush strip only) — syntax-checks clean.

Next element: form controls — checkbox + radio. Design brief:

Design brief — Chunk 7c: ui_checkbox + ui_radio

Approach. Two small interactive form-control widgets (→ widgets.lua). Each is an indicator + an optional label, the whole row clickable, carrying the SNKRX juice (indicator scale-pops on hover/click, hover sound) — same ui_state + ui_juice substrate as ui_button/ui_tabs.

Both: opts.rect is the indicator box (~16px square). opts.label optional — drawn to its right (gap 6, body font, text color, vertically centered). The hover/click hit region spans indicator plus label. Off-state border brightens to grey on hover.

Interfaces. Pure addition to widgets.lua. A shared file-local helper runs the hot/active/click machine + juice (the same block ui_button uses); ui_checkbox/ui_radio call it, scale-layer_push the indicator by its juice, draw indicator + label. Reuses ui_rrect/ui_text. New page_form gallery page (prepended) with file-local checkbox/radio state. CLAUDE.md element set updated.

The mockup's pill toggle is just a 2-item ui_tabs — I'll fold that in when needed, not as a separate widget. Dropdown + text input (they need popup layering / the typed-text buffer) are a later chunk.

One visual decision:

AskUserQuestion

Your questions have been answered: "How should a checked checkbox show its 'on' state?"="Green fill + geometric tick". You can now continue with these answers in mind.

Green fill + geometric tick. Implementing now.

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

425      if is_active and variant == 'segment' then
426       ui_rrect(lc.x, lc.y, lc.w, lc.h, cell_rad, green, ed)
427       ui_rrect(lc.x + 1, lc.y + 1, lc.w - 2, lc.h - 2,
428         math.max(0, cell_rad - 1), bg, ed)
429     elseif is_active then
430       ui_rrect(lc.x, lc.y, lc.w, lc.h, cell_rad, panel_fill, ed)
431     end
432 
433     -- Cell label — active is text / green; inactive brightens on hover.
434     local tc

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

435      if is_active then
436       tc = (variant == 'segment') and green or text
437     else
438       tc = hovered and text or text_muted
439     end
440     ui_text({ rect = lc, text = items[i], font = font, color = tc,
441               align_h = 'center', align_v = 'center', edition = ed })
442 
443     layer_pop(ui_layer)
444   end
445 
446   return { active = clicked or active, clicked = clicked }

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

446    return { active = clicked or active, clicked = clicked }
447 end
448 

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the gallery page.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/widgets.lua snkrx/ui/gallery.l...)

snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Done. Both files syntax-check, docs synced.

What's new — ui_checkbox + ui_radio (in widgets.lua):

To test: F4 opens on the form page:

[/] pages through the rest. Let me know how the tick looks and what's next.

Looks good, checkbox doesn't seem to untick, though.

Bug found — the clicked and (not on) or on idiom collapses: when on is true, not on is false, so the ... and false or on chain falls through to on and never returns false.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

widgets.lua OK

Fixed. The a and b or c idiom broke because not on evaluates to false exactly in the untick case, so the expression fell through to on. Replaced with an explicit if.

To test: F4form page, click a checked checkbox — it should now untick (green box → charcoal box), and toggle freely both ways.

Great, go ahead.

Next: slider — it rounds out the simple form controls (dropdown + text input need heavier machinery, later). Let me check the mockup.

Bash (grep -niE 'slider|range|.handle|.thumb|.track' E:/a327ex/Invoker/reference/mo...)

21:    --orange:       rgb(233, 108,  27);
56:  .orange-text { color: var(--orange); }
111:  .chip.new { color: var(--orange); }
114:  .chip.legendary { color: var(--orange); }
128:  .rarity.legendary { color: var(--orange); }
154:  .slider { display: flex; align-items: center; gap: 8px; }
155:  .slider .track { flex: 1; height: 5px; background: var(--charcoal); border-radius: 3px; position: relative; }
156:  .slider .fill { position: absolute; left: 0; top: 0; bottom: 0; background: var(--green); border-radius: 3px; }
157:  .slider .knob { position: absolute; top: 50%; width: 12px; height: 12px; background: var(--green); border-radius: 50%; transform: translate(-50%, -50%); }
177:  .tile.sword { background: var(--orange); }
207:  Rarity colors: <strong>common</strong>=text-muted, <strong>uncommon</strong>=green, <strong>rare</strong>=light-blue, <strong>epic</strong>=violet, <strong>legendary</strong>=orange, <strong>mythic</strong>=pink. Form-control on/checked = <strong>green</strong>. Tab track = <strong>charcoal</strong>; active tab on <strong>panel-fill</strong>. Segment-active = <strong>bg</strong> + <strong>green</strong> outline. Tags/keycaps = <strong>charcoal</strong> bg + <strong>panel-border</strong> outline. Notification dots reuse the accent palette plus <strong>grey</strong> for neutral.
346:      <span class="notif-dot" style="background: var(--orange);"></span>
393:      <div class="form-label">slider</div>
394:      <div class="slider">

Bash (sed -n '392,402p' E:/a327ex/Invoker/reference/mockup_ui_kit_2.html)

    <div class="form-row">
      <div class="form-label">slider</div>
      <div class="slider">
        <div class="track">
          <div class="fill" style="width: 75%;"></div>
          <div class="knob" style="left: 75%;"></div>
        </div>
        <span class="muted" style="font-size: 11px;">75%</span>
      </div>
    </div>
    <div class="form-row">

Read (E:/a327ex/attack-template/snkrx/ui/state.lua)

1    --[[
2     ui/state.lua — frame-local UI interaction state.
3   
4     `ui_state` holds the three interaction IDs, rebuilt every frame:
5       hot_id     widget under the cursor this frame
6       active_id  widget the mouse-down landed on (persists until release)
7       focus_id   widget last clicked (persists until the next click)
8   
9     `ui_state_begin_frame()` clears hot_id; call it once per frame before
10    any widget calls (the gallery does this in ui_gallery_update; a real
11    game calls it once per frame too). Widget IDs are explicit, caller-
12    provided strings — no auto-IDs.
13  
14    This is the rules-based, frame-local interaction layer the project's
15    action-vs-rules UI doctrine sanctions — it is NOT hidden persistent
16    state. Persistent UI state (what occupies a slot, a drag in progress)
17    is action-based and lives in caller-owned data, never here.
18  ]]
19  
20  ui_state = { hot_id = nil, active_id = nil, focus_id = nil }
21  
22  function ui_state_begin_frame()
23    ui_state.hot_id = nil
24  end
25  
26  function ui_is_hot(id)     return ui_state.hot_id    == id end
27  function ui_is_active(id)  return ui_state.active_id == id end
28  function ui_is_focused(id) return ui_state.focus_id  == id end
29  
30  -- Point-in-rect test. r is a {x, y, w, h} table (a RectCut rect).
... [19 more lines]

The slider is a thin charcoal track + green fill + a green circular knob. Design brief:

Design brief — Chunk 7d: ui_slider

Approach. A draggable slider (→ widgets.lua). opts.rect is the slider's footprint (e.g. 200×14); inside it a thin track strip is drawn, with a circular knob riding on the value. This is the toolkit's first drag widget — but it needs no new machinery: ui_state.active_id already persists from mouse-down to mouse-up, so "is being dragged" is just active_id == id.

Interfaces. Pure addition to widgets.lua. ui_slider has its own small interaction block (press→hold→release — different from form_control_interact's press→click, so not shared): ui_claim_hot for hover, mouse_is_pressed/mouse_is_released for grab/let-go, mouse_position() for the drag x (same coord space as the rects, per ui_claim_hot). Reuses ui_rrect, ui_juice_*. New section 03 Slider added to the existing page_form gallery page, with a file-local gallery_volume and a % readout text. CLAUDE.md element set updated.

Functions.

Steps/snapping is deferred — continuous only for now, matching the mockup. Sound good?

Yes.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/widgets.lua snkrx/ui/gallery.l...)

snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Done. Both files syntax-check, docs synced.

What's new — ui_slider (in widgets.lua):

To test: F4form page, section 03:

Let me know how the drag feels and what's next.

Works great, what's next? Tackle multiple elements at a time if you can.

The user's happy and wants me to batch elements. Remaining: tooltip, list rows, cards, dropdown, text input. I'll group tooltip + list row — both are content/composite elements that compose from existing primitives, cohesive and low-risk. Let me check the mockups.

Bash (echo "=== KIT1 tooltip ==="; grep -niE 'tooltip|tip-' E:/a327ex/Invoker/referenc...)

=== KIT1 tooltip ===
239:  /* --- TOOLTIP ---------------------------------------------------- */
240:  .tooltip {
248:  .tooltip .body  { flex: 1; }
249:  .tooltip .title { font-weight: 700; font-size: 16px; margin-bottom: 2px; }
250:  .tooltip .desc  { color: var(--text-muted); font-size: 12px; line-height: 1.4; margin-bottom: 4px; }
251:  .tooltip .meta  { font-size: 11px; color: var(--text-muted); }
252:  .tooltip .meta .tier { color: var(--text); }
362:  <strong>charcoal</strong> = nested panels inside other panels (the inline reroll panel and icon buttons in the top bar). <strong>slot-fill</strong> = empty slot interior. <strong>grey</strong> = secondary button + slot hover border. <strong>panel-border</strong> = all panel/slot outlines, also empty wave pips. <strong>text-muted</strong> = secondary text + tooltip body + section descriptions. <strong>Tile pictogram color</strong> = <strong>text</strong> (240,240,235), not pure white.
551:     06 WAVE / 07 COMBAT / 08 TOOLTIP
587:    <div class="section-label"><span class="num">08</span> TOOLTIPS
590:    <div class="tooltip">

=== KIT3 list ===
43:  .row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
44:  .row.tight { gap: 6px; }
45:  .row.gap-md { gap: 16px; }
137:  /* Inventory list */
138:  .inv-list { background: var(--panel-fill); border: 1px solid var(--panel-border); border-radius: 6px; overflow: hidden; }
139:  .inv-list .head, .inv-list .row-i { display: grid; grid-template-columns: 36px 1fr 80px 50px 70px 50px; gap: 12px; align-items: center; padding: 8px 12px; font-size: 12px; }
140:  .inv-list .head { background: var(--charcoal); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; font-size: 10px; font-weight: 700; }
141:  .inv-list .row-i { border-top: 1px solid var(--panel-border); }
142:  .inv-list .row-i .iname { font-weight: 700; }
171:  Inventory, character, and orb-system elements: grids, item cell states, item tooltips, list views, orb cards, paper-doll, drop targets. Same locked palette as kit_1.
430:  <!-- 07 INVENTORY LIST -->
432:    <div class="section-label"><span class="num">07</span> INVENTORY EXAMPLE (LIST)</div>
433:    <div class="inv-list">

Bash (echo "=== tooltip css 239-260 ==="; sed -n '239,260p' E:/a327ex/Invoker/referenc...)

=== tooltip css 239-260 ===
  /* --- TOOLTIP ---------------------------------------------------- */
  .tooltip {
    display: flex; gap: 12px;
    background: var(--panel-fill);
    border: 1px solid var(--panel-border);
    border-radius: 6px;
    padding: 10px 12px;
    max-width: 360px;
  }
  .tooltip .body  { flex: 1; }
  .tooltip .title { font-weight: 700; font-size: 16px; margin-bottom: 2px; }
  .tooltip .desc  { color: var(--text-muted); font-size: 12px; line-height: 1.4; margin-bottom: 4px; }
  .tooltip .meta  { font-size: 11px; color: var(--text-muted); }
  .tooltip .meta .tier { color: var(--text); }

  /* --- BUTTONS ---------------------------------------------------- */
  .btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 18px;
    border-radius: 6px;
    font-size: 14px; font-weight: 700;
    border: none;

=== tooltip html 587-605 ===
    <div class="section-label"><span class="num">08</span> TOOLTIPS
      <span class="desc">clear, informative, and tier aware</span>
    </div>
    <div class="tooltip">
      <div class="tile sm target">&#9678;</div>
... [49 more lines]

Both compose cleanly from existing primitives. Here's the brief for the pair.

Design brief — Chunk 7e: ui_tooltip + ui_list_row

ui_tooltip (→ primitives.lua, pure draw)

A self-sizing info panel — the kit-1 tooltip: panel_fill panel + panel_border border, an optional icon tile on the left, and a content column of title / description line(s) / a meta line.

ui_list_row (→ widgets.lua, interactive)

One row of a list/table — a full-width row the caller stacks to build an inventory list, quest list, etc. The toolkit ships the row; the surrounding container panel + scrolling are per-game composition (the gallery will compose a small list to show it).

Gallery

New page_content (prepended): a tooltip up top, and below it a small inventory list — a ui_panel container with a header row + 3 data ui_list_rows (icon + colored name + type/tier/value columns), one selectable via file-local state.

One interaction question:

AskUserQuestion

Your questions have been answered: "How much juice should a list row get on hover/click?"="Background highlight only". You can now continue with these answers in mind.

List rows: background highlight + hover sound, no scale-pop. Implementing both widgets.

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/widget...)

snkrx/ui/primitives.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Bash (grep -nE 'primitives.lua|rarity_color|item-icon tile|# panel / text|# interacti...)

571:- `primitives.lua` — pure draw: `ui_panel`, `ui_text`, `ui_divider`,
572:  `ui_item_icon`, `ui_rich_text`, `ui_label`, + `rarity_color`.
580:Primitives: panel, single-line aligned text, divider, item-icon tile,
711:        ├── primitives.lua      # panel / text / divider / item_icon / rich_text / label
712:        ├── widgets.lua         # interactive: slot / button / bar / tabs / checkbox / radio / slider

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

580  Primitives: panel, single-line aligned text, divider, item-icon tile,
581 rich_text (one line, multi-colored runs), label (dark rounded
582 container). Widgets: slot (inventory cell — selected/locked/disabled/
583 occupied states + drag-target overlay), button (SNKRX-style: flat,
584 scale-pop, inverts white on hover, layered hover sounds; variants
585 primary/secondary/danger/ghost), bar (progress / health — health mode
586 is the v1 two-bar tween: a fast `front` bar + a delayed slow white
587 `back` bar exposing the lost-health chunk, a counting-down value text,
588 and the Emoji-Aimer cash-register kick on damage; fill is flat-cut on
589 the decreasing edge via the stencil), tabs (a charcoal track of

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

All three files syntax-check, docs synced.

What's new — two elements:

ui_tooltip (primitives.lua) — a self-sizing info panel: panel chrome + optional icon tile + a content column (title / description line(s) / meta rich-text). Auto-sizes to content (desc is a pre-broken array of lines, no wrapping); returns its rect so the caller can place follow-up UI.

ui_list_row (widgets.lua) — one row of a list/table. Takes a cells column spec (fixed w or flex cells, each with text/color/align/icon). Hover = charcoal bg, selected = charcoal bg + 2px green left accent, 1px bottom separator; header = true gives a charcoal muted-text column-header row. Background highlight + hover sound, no scale-pop.

New gallery content page (now 1/10): a tooltip up top, and a composed inventory list — a ui_panel container + a header row + 3 selectable data rows (icon + colored name + type/tier/value columns).

To test: F4 opens on the content page:

[/] for the rest. Let me know how they look and what's next.

Looks good

The remaining mockup vocabulary after this chunk:

Want me to keep going? If so, which next — cards, or the dropdown + text input pair? Or pause the element work here and do the consistency pass (the "all elements on one screen" page) now that there's a fuller set to compare.

Do cards and text input, dropdown is not necessary, or is it? Can we do equivalent of multiple options with the UI elements we do have? I think we can, right?

You're right — a dropdown's only unique value is collapsing many options into a popup to save space. For "pick one of N" we already have ui_tabs (compact horizontal segmented selector) and ui_radio (vertical option group). A SNKRX-style game UI rarely has a select so long it needs collapsing — settings use tabs/segments/radios fine. So: skip the dropdown, do cards + text input. Let me check the mockups.

Bash (echo "=== KIT1 card ==="; grep -niE 'card|ability' E:/a327ex/Invoker/reference/m...)

=== KIT1 card ===
281:  /* --- ABILITY CARD ----------------------------------------------- */
282:  .ability-card {
291:  .ability-card .icon {
297:  .ability-card .name { font-size: 18px; font-weight: 700; }
298:  .ability-card .desc {
304:  .ability-card .price {
314:  .ability-card .price::after {
321:  .ability-card.fire  .name  { color: var(--red); }
322:  .ability-card.fire  .icon  { background: var(--red); }
323:  .ability-card.fire  .price { background: var(--red); }
324:  .ability-card.frost .name  { color: var(--light-blue); }
325:  .ability-card.frost .icon  { background: var(--light-blue); }
326:  .ability-card.frost .price { background: var(--blue); }
327:  .ability-card.shoot .name  { color: var(--green); }
328:  .ability-card.shoot .icon  { background: var(--green); }
329:  .ability-card.shoot .price { background: var(--green); }
483:        <div class="ability-card fire" style="padding: 10px;">
488:        <div class="ability-card frost" style="padding: 10px;">
632:     ABILITY CARDS
635:  <div class="section-label">ABILITY CARDS

=== KIT3 card ===
144:  /* Orb card */
145:  .orb-card { background: var(--panel-fill); border: 1px solid var(--panel-border); border-radius: 6px; padding: 14px; max-width: 260px; }
146:  .orb-card .top { display: flex; gap: 12px; align-items: center; margin-bottom: 10px; }
147:  .orb-card .orb-name { font-weight: 700; font-size: 16px; }
148:  .orb-card .orb-tier { font-size: 11px; color: var(--text-muted); }
149:  .orb-card .sockets { display: grid; grid-template-columns: repeat(4, 28px); gap: 6px; margin-bottom: 10px; }
150:  .orb-card .socket { width: 28px; height: 28px; border-radius: 5px; background: var(--slot-fill); border: 1px solid var(--panel-border); display: flex; align-items: center; justify-content: center; }
... [16 more lines]

Bash (echo "=== KIT1 ability-card css 281-330 ==="; sed -n '281,330p' E:/a327ex/Invoke...)

=== KIT1 ability-card css 281-330 ===
  /* --- ABILITY CARD ----------------------------------------------- */
  .ability-card {
    background: var(--panel-fill);
    border: 1px solid var(--panel-border);
    border-radius: 6px;
    padding: 14px 14px 10px;
    display: flex; flex-direction: column; gap: 8px;
    align-items: center;
    text-align: center;
  }
  .ability-card .icon {
    width: 56px; height: 56px;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--text); font-size: 30px; font-weight: 700;
  }
  .ability-card .name { font-size: 18px; font-weight: 700; }
  .ability-card .desc {
    font-size: 12px;
    color: var(--text-muted);
    line-height: 1.4;
    min-height: 50px;
  }
  .ability-card .price {
    color: var(--text);
    padding: 4px 12px;
    border-radius: 4px;
    font-size: 13px; font-weight: 700;
    display: inline-flex; align-items: center; gap: 4px;
... [53 more lines]

Bash (echo "=== engine typed-text API ==="; grep -niE 'typed_text|text_input|key_is_pr...)

=== engine typed-text API ===
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:235:key_is_pressed(key) -> bool
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:343:hotkey_is_pressed(id) -> bool
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:170:key_is_down(key), key_is_pressed(key), key_is_released(key)

=== attack-template main.lua typed text ===
113:  engine_get_typed_text()    -- drain SDL text input every frame

=== arena typed text usage ===

Bash (grep -niE 'typed|text_input|engine_get_typed' E:/a327ex/Anchor2/docs/ENGINE_API....)

---

Bash (grep -rniE 'typed_text|typed text|text input|begin_text|start_text' E:/a327ex/An...)

2649:// Input state - Typed text queue (bounded, drained per-frame by Lua).
2652:// for the final glyph). Lua drains this via engine_get_typed_text() and
2657:static char typed_text[MAX_TYPED_EVENTS][MAX_TYPED_LEN];
2660:static void enqueue_typed_text(const char* text) {
2662:        snprintf(typed_text[typed_count], MAX_TYPED_LEN, "%s", text);
9042:// engine_get_typed_text: returns all SDL_TEXTINPUT events received since
9045://   local t = engine_get_typed_text()
9051:static int l_engine_get_typed_text(lua_State* L) {
9055:        luaL_addstring(&b, typed_text[i]);
9649:    lua_register(L, "engine_get_typed_text", l_engine_get_typed_text);
10437:            enqueue_typed_text(event.text.text);

Bash (sed -n '9042,9075p' E:/a327ex/Anchor2/engine/src/anchor.c)

// engine_get_typed_text: returns all SDL_TEXTINPUT events received since
// the last call concatenated into one UTF-8 string. Drains the queue on
// read. Returns an empty string if nothing was typed. Lua-side use:
//   local t = engine_get_typed_text()
//   if t ~= '' then insert_at_caret(t) end
// Returns text only — control keys (arrows, backspace, enter, ctrl combos,
// etc.) come through key_is_pressed/down/released, not this function. SDL
// also suppresses text-input events while modifier keys are held, so
// chords like Ctrl+S don't pollute the typing stream.
static int l_engine_get_typed_text(lua_State* L) {
    luaL_Buffer b;
    luaL_buffinit(L, &b);
    for (int i = 0; i < typed_count; i++) {
        luaL_addstring(&b, typed_text[i]);
    }
    luaL_pushresult(&b);
    typed_count = 0;
    return 1;
}

// engine_init: Creates window and initializes graphics
// Must be called from Lua (via framework) after configuration is set
static int l_engine_init(lua_State* L) {
    if (engine_initialized) {
        return luaL_error(L, "engine_init can only be called once");
    }

    if (headless_mode) {
        // Headless: skip all graphics initialization
        printf("Headless mode: skipping window and graphics initialization\n");
... [4 more lines]

Confirmed — dropping the dropdown. ui_tabs/ui_radio already cover "pick one of N"; a dropdown only adds value when there are so many options they must collapse into a popup, which a SNKRX-style game UI rarely needs.

Two briefs:

Design brief — ui_card

A selectable item/ability card (→ widgets.lua) — the kit-1 ability card. Vertical centered layout inside opts.rect: a colored icon tile near the top, a colored title, a multi-line muted description, and an optional footer pill (price/cost) anchored to the bottom (so cards in a row align regardless of desc length).

Design brief — ui_text_input

A charcoal text field (→ widgets.lua).

One card question:

AskUserQuestion

Your questions have been answered: "The card's footer pill (price/cost) — what treatment?"="Flat colored pill". You can now continue with these answers in mind.

Both approved. Let me check a couple of engine details before writing — key names and the main.lua typed-text line.

Bash (echo "=== key name strings in engine ==="; grep -niE '"backspace"|"return"|"ente...)

=== key name strings in engine ===
2785:static SDL_Scancode key_name_to_scancode(const char* name) {
2800:    if (strcmp(name, "enter") == 0 || strcmp(name, "return") == 0) return SDL_SCANCODE_RETURN;
2801:    if (strcmp(name, "escape") == 0 || strcmp(name, "esc") == 0) return SDL_SCANCODE_ESCAPE;
2802:    if (strcmp(name, "backspace") == 0) return SDL_SCANCODE_BACKSPACE;
2879:// Convert scancode to key name string (reverse of key_name_to_scancode)
2881:static const char* scancode_to_key_name(SDL_Scancode sc) {
2899:        case SDL_SCANCODE_RETURN: return "enter";
2900:        case SDL_SCANCODE_ESCAPE: return "escape";
2901:        case SDL_SCANCODE_BACKSPACE: return "backspace";
3181:        ctrl->code = key_name_to_scancode(value);
3788:        "space", "enter", "escape", "backspace", "tab",
8162:    const char* key_name = luaL_checkstring(L, 1);
8163:    SDL_Scancode scancode = key_name_to_scancode(key_name);
8173:    const char* key_name = luaL_checkstring(L, 1);
8174:    SDL_Scancode scancode = key_name_to_scancode(key_name);

=== main.lua 105-130 ===
--                  height/2 + random_float(-100, 100))
--   end
--   local wx, wy = width/2 + 80, height/2
--   spawn_wall({ wx-8,wy-40, wx+8,wy-40, wx+8,wy+40, wx-8,wy+40 },
--              { edition = 0 })

function update(dt)
  sync_engine_globals()
  engine_get_typed_text()    -- drain SDL text input every frame

  -- Hit-stop: hit_stop_update runs the freeze countdown on UNSCALED
  -- dt; sdt is the scaled dt every game entity updates with, so a
... [13 more lines]

Read (E:/a327ex/attack-template/snkrx/ui/init.lua)

1    --[[
2     snkrx/ui/init.lua — the UI toolkit aggregator.
3   
4     Loaded by snkrx/init.lua (so plain `require('snkrx')` pulls the UI
5     toolkit in alongside the attack carriers). Runs AFTER snkrx/palette.lua,
6     so the 18 locked palette tokens (bg, panel_fill, text, red, ...) are
7     global and available to every UI module.
8   
9     What it sets up:
10      • the UI fonts — two headers + two interchangeable body fonts
11      • ui_layer — the screen-space UI layer (no camera, no edition shader)
12      • the toolkit modules: rect (layout), state (interaction), primitives,
13        gallery (the F4 test scene). Element modules are required here as
14        they land.
15  ]]
16  
17  -- ── Fonts ─────────────────────────────────────────────────────────
18  -- Headers (fixed):
19  --   header_l — Awesome 9 @ 16    : big header / pictographs
20  --   header_s — FatPixelFont @ 8  : the biggest/boldest header (FatPixel
21  --              renders huge even at 8)
22  -- Body (two candidates, toggled live):
23  --   LanaPixel @ 11 and Ark Pixel @ 10 — both cover all languages. Every
24  --   UI element draws body text in `ui_font_body`, which the gallery
25  --   flips between the two (key B) so they can be compared in context.
26  ui_font_header_l  = font_register('ui_head_l',    'assets/Awesome 9.ttf',                       16)
27  ui_font_header_s  = font_register('ui_head_s',    'assets/FatPixelFont.ttf',                     8)
28  ui_font_body_lana = font_register('ui_body_lana', 'assets/LanaPixel.ttf',                       11)
29  ui_font_body_ark  = font_register('ui_body_ark',  'assets/ark-pixel-10px-proportional-latin.ttf', 10)
30  
... [41 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/main.lua)

<tool_use_error>File has not been read yet. Read it first before writing to it.</tool_use_error>

Read (E:/a327ex/attack-template/main.lua)

110  
111 function update(dt)
112   sync_engine_globals()
113   engine_get_typed_text()    -- drain SDL text input every frame
114 

Edit (E:/a327ex/attack-template/main.lua)

The file E:/a327ex/attack-template/main.lua has been updated successfully. (file state is current in your context — no need to Read it back)

The gallery's letter hotkeys (B/O/P…) would collide with typing into a field — I'll add a ui_capturing_text flag so the gallery suppresses them while a field is focused. Writing everything now.

Edit (E:/a327ex/attack-template/snkrx/ui/state.lua)

The file E:/a327ex/attack-template/snkrx/ui/state.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the two widgets:

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

578  function ui_radio(opts)
579   local r    = opts.rect
580   local id   = opts.id
581   local font = opts.font or ui_font_body
582   local ed   = opts.edition
583   local on   = opts.selected
584 
585   local hit = { x = r.x, y = r.y, w = r.w, h = r.h }

Bash (tail -5 E:/a327ex/attack-template/snkrx/ui/widgets.lua | cat -A | sed 's/\$$//')

    x = x + cw + gap
  end

  return { hovered = hovered, clicked = clicked }
end

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in main.lua snkrx/ui/state.lua snkrx/ui/in...)

main.lua OK
snkrx/ui/state.lua OK
snkrx/ui/init.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (grep -n 'engine_get_typed_text' E:/a327ex/attack-template/.claude/CLAUDE.md)

435:engine_get_typed_text()      -- drain SDL text input
658:- **`engine_get_typed_text()` must be drained** each frame even if nothing consumes typed input — otherwise SDL's text-input queue fills up after ~32 keypresses and warns per-press forever. main.lua calls it at the top of `update()`.

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

432  ### Update order in main.lua
433 ```
434 sync_engine_globals()        -- refresh `time`, etc.
435 engine_get_typed_text()      -- drain SDL text input
436 hit_stop_update(dt)          -- freeze countdown; sdt = dt*time_scale
437 sound_tuner_update(dt)       -- F3 — returns true (early-out) while tuning

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/widgets.lua snkrx/ui/gallery.l...)

snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK
main.lua OK

All files syntax-check, docs synced.

What's new — two elements:

ui_card (widgets.lua) — a selectable ability/item card: panel chrome + centered icon tile, colored title, multi-line muted desc, and a flat colored footer pill anchored to the bottom (so cards in a row align). Hover → grey border + scale-pop + sound; selected → green border. Returns { hovered, clicked }.

ui_text_input (widgets.lua) — a charcoal text field. Click to focus; the focused field appends ui_typed_text and handles backspace (UTF-8-aware) + enter. Charcoal fill, border green-when-focused, blinking caret, text+caret stencil-clipped to the interior and scrolling on overflow.

Plumbing: new ui_typed_text global, captured once per frame — main.lua's drain line is now ui_typed_text = engine_get_typed_text(). New ui_capturing_text flag: a focused field sets it, and the gallery suppresses its letter hotkeys (B/O/P/K/L/U/[/]) while you're typing.

New gallery cards page (now 1/11) — a row of 3 selectable ability cards. form page gained section 04 Text Input.

To test:

Let me know how they look and what's next.

This is all fine for now. Let's move on to the composite screens. Tells me what you intend to do.

Before I touch code, here's the tension and my intent.

The discipline. The toolkit's stance — the same one the attack carriers follow ("ship elements, compose per-game") — is that full game screens are game-specific layouts, not reusable API. A HUD, an inventory screen, a shop, a world map: their composition encodes game design (what stats, what economy, what's where). Baking ui_hud() / ui_shop() as widgets would smuggle Invoker-specific decisions into a generic template.

So what I intend to build, in two parts:

  1. Genuinely-reusable composites → real toolkit widgets. The composites that are pure machinery, not game design:

    • ui_modal — a full-screen scrim + a centered panel + input capture (so widgets behind it don't receive clicks). This one has real design — input-blocking in an immediate-mode UI needs care — but it's general and worth it.
    • possibly a titled-window / dialog frame helper (panel + title bar + close button). These are the only composites I'd add as code.
  2. Game-specific screens → reference composition pages. HUD, inventory, shop, dialogue, etc. get built as full-screen mock assemblies in the gallery — laid out purely from the existing ~17 elements, no new widgets. They prove the element vocabulary scales to real screens and serve as copy-paste reference for a forking dev. (The early page_compose "run summary" mock was a tiny version of this idea.)

This keeps the toolkit honest: the API stays a flat element set; the screens are demonstrations, not surface area.

Two scope questions:

AskUserQuestion

Your questions have been answered: "How should the composite screens be delivered?"="Widgets + reference pages", "Which composite screens should I build? (pick any)"="Take a look at the UI elements/widgets/composite screens generated by ChatGPT in the RICOCHET folder. Those images contain a very large set of ideas in terms of game-related elements, so take some inspiration from there. Be mindful that you don't have to worry *too much* about visual details, I intend to do another pass on all elements to make them more cohesive with each other, so you should focus on building things logically and such that they're spaced correctly, less than on getting the visuals perfectly right. Try to bundle everything into as few new pages as you can.,Modal / dialog,HUD,Shop,Inventory". You can now continue with these answers in mind.

Let me look at the RICOCHET folder for the ChatGPT-generated reference.

Bash (ls -R E:/a327ex/RICOCHET 2>/dev/null | head -60; echo "---alt---"; ls E:/a327ex/...)

E:/a327ex/RICOCHET:
anchor
anchor.exe
assets
design.md
dot_shader.lua
entities.lua
main.lua
reference
run.bat
todo.md

E:/a327ex/RICOCHET/anchor:
animation.lua
array.lua
camera.lua
class.lua
collider.lua
color.lua
font.lua
helpers.lua
image.lua
init.lua
input.lua
layer.lua
math.lua
memory.lua
object.lua
physics.lua
shake.lua
... [22 more lines]

Bash (ls -la "E:/a327ex/RICOCHET/reference/" | grep -iE 'png|TEMPLATE')

-rw-r--r-- 1 adn 197121 1388616 Apr 25 08:51 01 - ART DIRECTION (DOTTED).png
-rw-r--r-- 1 adn 197121 1878437 Apr 24 00:30 01 - ART DIRECTION.png
-rw-r--r-- 1 adn 197121 1301925 Apr 25 08:51 02 - GENERAL UI ELEMENTS (dotted).png
-rw-r--r-- 1 adn 197121 1709600 Apr 24 08:54 02 - GENERAL UI ELEMENTS .png
-rw-r--r-- 1 adn 197121 1575255 Apr 25 08:52 03 - TYPOGRAPHY (dotted).png
-rw-r--r-- 1 adn 197121 1816321 Apr 24 08:55 03 - TYPOGRAPHY.png
-rw-r--r-- 1 adn 197121 1520042 Apr 25 08:52 04 - COLOR AND TEXTURE (dotted).png
-rw-r--r-- 1 adn 197121 1772063 Apr 24 08:55 04 - COLOR.png
-rw-r--r-- 1 adn 197121 1452967 Apr 25 08:52 05 - GAME OBJECTS (dotted).png
-rw-r--r-- 1 adn 197121 1635288 Apr 24 08:56 05 - GAME OBJECTS.png
-rw-r--r-- 1 adn 197121 1455673 Apr 25 08:52 06 - TEMPLATES AND USAGE (dotted).png

Read (E:/a327ex/RICOCHET/reference/06 - TEMPLATES AND USAGE (dotted).png)

[
  {
    "type": "image",
    "source": {
      "type": "base64",
      "data": "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ppvuvvueKKW1PHHy5G233Xb9ddch9vb2t7a2jpZH2HfecccrvuIrZEuEjQSAARDPh4UAYxDPZCQZ8y8JxWq9fsYzbjt58uTd99z78i//skeHh10tT33a0zI9n83HqbU29X1/7tzZRz7yERFxzz33bm3vGO1sb9/6jFtvuummw4ODvu9aa8ujg8Vi8/bb73jJl3wxzNnzF26++eY77rhzmqZhGHe2N8+fP3/y5MmzZ8896MEPbq2lHWJjMbd9331na+1qrYqYxmEcx/39g8c8+hF33nX3weHyhhtuGMdxGIau1mEc5/P5Pffcu7Oztb+//+hHPXKaGiDxbAYB2EZghBAGGQABYBDPIukJT3ziyROnDo4OH/WIR6zXK4nd3b2dnZ2z5871fQ/s7e1vbGzUUo6Oju69956XfemXOjg8uvve+2644cblcnlsZ/vue+7p+34Yhr7vtre2pmlardbzxfzoaBlRDg/3b7zxxlnfP+O22x90yy3pvO++sxsbG3fddefGxsbR4dF8sVgsFocHBw996EOwAcSLyjybAAwYCcwzCQwCAyAwAAIDIACMQQIEgAEQGAAMGAAhwCAAbCQus0EGyRgAAeKFq7V78lOecvzY8aff+vQXf/EXn81mcl7cvXT3PffefPPNhnvvvberdb1ePeYxj75w/sLF3d3jx4+31ubzxX1nz11z5sw999x97bXXHB4eZpuuv+76i7uXLly8eN111y2XRxsbi/vuO7ux2Dg8PDx16uTx48emaZLE87AtiedhWwgAIWMQGADxLLYlCQw2EgAYZANIYBCAjQQgZAwIGfM8SinnL1wsH/dxH7NYLDItQAJsI55JIBAA4jJlerGY//3f/8OP/uiPv+qrvFKJWGxs/MVf/fX+/sE99977tKc97QlPfOKv/vIvz2az3/qt35pae8pTnnznXXdtbW494YmPf8TDHzau1z/zsz83jtPjH/cP995738lTp37t139juVoeHR1FlF/4xV88PDx88pOf9Iqv/Gq/8iu/fO7c+Sc84YnzxfxXfvXXjA8PD3/nd35HEd/2rd/2sIc99LbbnvHSL/VSwzhKEiCJ+4n7CbCRQAKDAONQAAgQYBBgwEjGQjyAQuth+N3f/f3lev0Xf/7nr/AKLz+u15ubGz/zcz//l3/5V835lKc+9dLe3mKx8Vd/9Zcv/VIvOQzrL/jCL2ktn/70pzfnz/z0T5dSf+xHf3R7e/uee+/9wR/4wfli8eSnPvklX+zFDw4On/CEJzzikY/+nd/57Zb5G7/+G3ffc+/h4eF6GO65597VavXUpz31KU95ynK1vvaaMyF9+Zd/5V1333P+/PmzZ8/+zV//zV133XXhwvmXeblX/L3f+73f+73f72p3++23/8Iv/MLB4eFv/fZvr1erc+fPrlbLn/vZn33N13xNbBAggUGAkbifJGMESAKBeSbxTKaW8gu/9Muz+eLJT37SS730Sw/rda3dn//5X5w4deonfuInl0fLv//7v7/1Gbfdd999T3j8E6Y23nHH7S//Mi/1J3/+509/+q17+3t/87d/W2r927/5m6c9/dZ77r23RLlw8cLupb1f+7Vf/6M//pPVaj2O4+Of8PgXf/EXH8bpR37oh17xFV/+4PDwsz7rszY2N/7oD/9oPpvtXrp0xx132H7CEx7/Ui/1km2akCRswIAkwFiI+xkDQlwhEABGQkKAQCCeSUIgAATi2QSAACSusJEAjEUIMICEAJDAIJC4wkhgSQACAQKwLUncz0YSAmXmYrHx27/9O/PF4hm3PmNn59iZ02ck/8M/PO5pT3/6hQsXn/iEJ95+x+0HB/tPftITX/GVXvVv/vqvvuVbvv3MNWf+5m/+xugXfvEXWsvbb799GMbf+Z3f+b0/+L03epM3/6M/+sM777zr3vvu+/u/+9v1ev23f/O3T37KU+6+556HPvShm5sbmZbAAIAkDCDJBlkIg7hCEoBAAAgMgLjCtiRJgG0hsCTASEgCWQhAYARI3M8GcT+JZ7IdEavVKmQACcQzSVwmhAGEMBgMWGIax1OnTvazbrUeSu1U+oiyubnZdZ2kcRh2L+5m+hVf8RWH9fr222/f2Ng8eerU8RMn+6r16rC1tlj0BwcHx08cjwg7Nzc2VsP63Lmzt9/2jFOnTz3koQ8BNre2h3G85957n/GM28Zh2Fgs9vb3b3vGbXuXLu3v74Ouv/56ITCAAIMQCCGeD9uAJSQZgwBsQAhAIAFCPAe11ra3tq+59tr1apWZh3u7YEq3sblZuzqOU631+LFj6/Xq9Jkzu5f2T56+9vDwcLVaP+MZtz79aU8bx3GxMb9w8fxyudzYWBimlkdHRyrdcr0+dmyHNlx37TXPeMYzjh079hIv/uLCtdYz11wDuveee+6+687lcjmM4+bmxmq13N3dvfOuuy5cuLBarba3t7e2toDZfFG77vY7brv99ttKjUuXLmUbdy9dWizmLbPr+1pKZiLAPJsAQJIQRhIAtnkmgcBckc6u76+//vrtre2NxeJw/5Kk2vdTaxcvXLz16U87fvzYQx7y4MypTdOFi+dms9nNt9xCv1lKd/fdd58/f+7wYG+9WtVaJYFr0f7+Xmttc2Pjwvnz47g+c+b05sbm4eFRm6anPv3pd9x222I2Wy6Xy+Vq+9ix7Z2d6669trXpxhtuaJmHBwcRAQYACUkYQMg8mxCAARCYKww2lwnzbBIYIySDeSYh8SwSzyJxhSzAgJC4wnbagBAWBoPASAAIhMQVkgCDkBASBgMGIV9//XXDMG4sFsd2tlerI1RuueUWhZ761Kc84xm3bm5sbG5sbG9uAfPFxu7F86vl0a23Pv3C+fOkJW67/RmHhwebGxsH+0cA+O6779zb2ztartbD2PWdodTS951tAEAgEMYIBEiSEIB4NvPcxLMJSbZtA5IASVwmAAOyMAgAmWcxQhJIAOYy8Wxgysd/3McuFgs7ARAg7mcABICwkACBFbEeho2NzRMnTvRd13VF0l133nnjDTfOZrNHP/rRD37Ig2+55eZHPOJh29vbN910U62ds91yy4O2trcWi4377jv7mMc86pprrj11+nRr7ZGPfMSJkyf2L13a3t566EMfeuMNN54+feb4ieOzrj927NgNN1534vixhzz4QTs728d2dh784Adff8P1j3jEwx/0oFs2Fhs7O9tOS7ItCcAgAMC2BCBAABK2QQaJZxK2JUCAEM9NgIRRRBzb2ZnN+o2trb6fLebzaWo33HDjDTfcuLO15WzzWb9aLW+5+ebFfH7q1KlHPPxhN99000033vDQhz7k1KnTj3rkI2+86cbjx48/4mEPf/CDHmTzmMc+5uDgYHNz69jO9l133y14+Zd/uZtvvumee++74Ybr77777gc/+MHHjh170IMetDw6mvXd8WM72zs7j3zEIx784AfdeNONt9zyoOuuv3a1Xj3kQTcdHR1ubW094pGPPHP69KMf/eiHPPTBD37wQ26++eb1enXzTTfdcP31p0+fLqUCEiCDACEAbCMkACEhQMIAiMsEYCPJcPLkycViY70eNjYWtda77767tekRD3/Ytddec+21101Tu+WW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",
      "media_type": "image/png"
    }
  }
]

Read (E:/a327ex/RICOCHET/reference/02 - GENERAL UI ELEMENTS .png)

[
  {
    "type": "image",
    "source": {
      "type": "base64",
      "data": "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",
      "media_type": "image/png"
    }
  }
]

The RICOCHET templates page confirms the standard layouts (HUD, shop, pause, settings, results, etc.). Here's my concrete plan.

Design brief — Chunk 7f: ui_modal + 3 reference screens

ui_modal (→ widgets.lua, the one real widget)

A scrim + centered panel + buttons. opts: title, body (string or lines), buttons (array of {label, variant, value}), id, width? (default ~240), dismiss_on_scrim? (default true), edition?. Returns { result } — the clicked button's value, or 'dismiss' on an outside click, else nil. Auto-sizes height to content, centers on screen.

Input capture — the honest immediate-mode mechanism: a global ui_input_locked, checked by one new line in ui_claim_hot (if ui_input_locked then return end). The contract: the caller raises ui_input_locked = modal_open before drawing the screen behind the modal, so background widgets go inert; ui_modal lowers it as its first act, so its own buttons (drawn last, on top) work normally. Dismiss = a mouse press outside the panel rect. Scrim = a full-screen translucent dark rect (drawn raw, like the slot's disabled dimmer).

Three reference composition pages (no new widgets — pure assembly)

page_hud — in-game overlay: HP + MP bars stacked top-left (with labels); score/wave/gold chips (ui_label) top-right; a row of ~5 ability ui_slots bottom-center with keybind labels; center left empty (the play area).

page_shopSHOP title top-center, gold chip top-right; a row of 3 ui_cards; bottom bar with a reroll button (secondary) and a leave button (primary). Leave opens a confirm ui_modal ("Leave the shop?" / Cancel · Leave) — this is where the modal is demoed and where input-capture is exercised (the cards behind it go inert).

page_inventoryui_tabs (items / orbs / relics) top; a 5×4 ui_slot grid on the left; a detail panel on the right (selected item's icon + name + desc + a couple stat lines); selecting a grid slot updates the detail panel.

All three are full-screen (480×270), prepended to the gallery. Spacing/structure is the focus; visual cohesion is your later pass.

Touched files

widgets.lua (ui_modal), state.lua (ui_input_locked global + the ui_claim_hot line), gallery.lua (3 pages + file-local state), CLAUDE.md.

That's 3 new pages + 1 widget — the minimum, since full screens each need their own page. Sound right?

Yes.

Implementing — starting with the input-lock plumbing in state.lua.

Edit (E:/a327ex/attack-template/snkrx/ui/state.lua)

The file E:/a327ex/attack-template/snkrx/ui/state.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/state.lua)

The file E:/a327ex/attack-template/snkrx/ui/state.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the three composite pages in gallery.lua.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/state.lua snkrx/ui/widgets.lua...)

snkrx/ui/state.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

All three files syntax-check. Updating docs.

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

All files syntax-check, docs synced.

What's new:

ui_modal (widgets.lua) — a modal dialog: full-screen translucent scrim + a centered auto-height panel with title / body / button row. Returns { result } (clicked button's value, or 'dismiss' on an outside press). Input capture via the new ui_input_locked global — ui_claim_hot refuses every widget while it's raised; the caller raises it before drawing the screen behind, and ui_modal lowers it for its own buttons.

Three composite reference screens (gallery pages, assembled purely from existing elements — no new widgets):

Gallery now opens on hud (page 1/13).

To test: F4, then [/] across the first three pages:

Spacing/structure is the focus here; the visual-cohesion pass is yours later. Let me know what needs adjusting.

You can remove the red dots all over the place on elements, not necessary anymore.

Grep (audit_dot|red_dot|ui_new_editions|ui_is_new_edition)

attack-template\snkrx\ui\primitives.lua:40:  ui_audit_dot(r, fill, ed)
attack-template\snkrx\ui\primitives.lua:201:  ui_audit_dot(r, opts.bg or charcoal, opts.edition)
attack-template\snkrx\ui\widgets.lua:252:  ui_audit_dot(lr, dot_color, ed)
attack-template\snkrx\ui\paint.lua:22:  Editions 50..58 (the chrome greys) are flagged in ui_new_editions —
attack-template\snkrx\ui\paint.lua:44:ui_new_editions = {}
attack-template\snkrx\ui\paint.lua:45:for e = 50, 58 do ui_new_editions[e] = true end
attack-template\snkrx\ui\paint.lua:54:-- ui_is_new_edition(ed) -> bool — true for a newly-created chrome edition.
attack-template\snkrx\ui\paint.lua:55:function ui_is_new_edition(ed)
attack-template\snkrx\ui\paint.lua:56:  return ui_new_editions[ed] == true
attack-template\snkrx\ui\paint.lua:111:  ui_red_dot(rect)        — a 4px flat red marker at rect's top-right.
attack-template\snkrx\ui\paint.lua:112:  ui_audit_dot(rect, color, override)
attack-template\snkrx\ui\paint.lua:116:  Box widgets (panel, button, label) call ui_audit_dot on their fill
attack-template\snkrx\ui\paint.lua:123:function ui_red_dot(rect)
attack-template\snkrx\ui\paint.lua:128:function ui_audit_dot(rect, color, override)
attack-template\snkrx\ui\paint.lua:129:  if ui_is_new_edition(ui_edition_for(color, override)) then
attack-template\snkrx\ui\paint.lua:130:    ui_red_dot(rect)

Removing the audit-dot machinery entirely — calls + the now-dead functions.

Edit (E:/a327ex/attack-template/snkrx/ui/paint.lua)

The file E:/a327ex/attack-template/snkrx/ui/paint.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/paint.lua)

The file E:/a327ex/attack-template/snkrx/ui/paint.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/paint.lua)

The file E:/a327ex/attack-template/snkrx/ui/paint.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/paint.lua)

The file E:/a327ex/attack-template/snkrx/ui/paint.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/paint.lua snkrx/ui/primitives....)

snkrx/ui/paint.lua OK
snkrx/ui/primitives.lua OK
snkrx/ui/widgets.lua OK
---leftover refs---
none

Bash (grep -niE 'red.dot|red audit|audit dot|new_edition|ui_new_edition' E:/a327ex/att...)

636:- **Red audit dots:** the chrome editions (50..58) are flagged "new"
637:  in `ui_new_editions`; `ui_panel` / `ui_label` / `ui_button` draw a
638:  small flat red dot top-right when their fill resolves to one — an
728:        ├── paint.lua           # edition-backed coloring (draw wrappers + red dots)

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

624  - `paint.lua` holds `ui_color_edition` (token → edition) and the
625   `ui_rrect` / `ui_rect` / `ui_glyph_text` draw wrappers that bracket
626   each draw with `edition_set`. Widgets go through these, never raw
627   `layer_*` for colored draws.
628 - Edition resolution (`ui_edition_for`): global override → per-element
629   `opts.edition` → the token table. Every widget accepts `opts.edition`.
630 - `ui_global_edition` is the gallery's preview override — it cycles
631   only colour-PRESERVING editions: per-color / dynamic (23) /
632   palette-cycle (24) / polychrome (12). Hue-locked editions are
633   excluded from the UI — they force one hue and erase the colour
634   semantics the UI depends on.
635 - `ui_field_scale` / `ui_dither` tune shimmer density and dither.
636 - **Red audit dots:** the chrome editions (50..58) are flagged "new"
637   in `ui_new_editions`; `ui_panel` / `ui_label` / `ui_button` draw a
638   small flat red dot top-right when their fill resolves to one — an
639   audit of the invented per-color table. Dots show only in per-color
640   mode (a global override resolves to a non-chrome edition).
641 

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

All audit-dot machinery removed — ui_red_dot, ui_audit_dot, ui_new_editions, ui_is_new_edition deleted from paint.lua, the calls dropped from ui_panel / ui_label / ui_button, stale docblock mentions cleaned up in all three files + CLAUDE.md. Syntax-checks clean, no leftover references.

To test: F4 — the small red dots on the top-right corner of panels, labels, buttons (and slots) are gone across every page.

[Pasted image/webp]

[Pasted image/webp]

[Pasted image/webp]

[Pasted image/webp]

I just uploaded 4 images to you. Try to create these 4 with our existing elements. You can use more than 4 screens for this. Don't worry about matching them visually, just logically. Make sure that the elements you create have unique names I can refer to later because I'll ask for edits on them and from those edits we'll decide how their final form should be in the full generalizable API.

I've studied all four sheets. They're a comprehensive pixel-game UI kit — and they're a superset of what we've built. Most of it maps onto existing elements; a handful are genuinely new. Here's the survey and plan.

What maps to existing elements

panels, buttons (+states), labels, rich-text tags, item-icon tiles, slot states, inventory grids, progress/health bars, slider, tabs, segmented controls (= ui_tabs), checkbox, radio, text input, dividers, list/table rows, info card (≈ ui_tooltip), item cards, drag-drop targets, HUD/shop composites. All reusable as-is or with minor params.

New elements I'd create (each gets a unique ui_* name)

Extensions to existing elements (no new name, just params)

Approach

Recreate the sheets as gallery pages one sheet at a time (likely ~1–2 gallery pages per sheet, so 5–8 total), reusing existing elements and building the new named ones as the sheet that needs them comes up. After each sheet you review, request edits on named elements, and we lock their final API form. Logical fidelity over visual — as you said.

Two questions before I start:

AskUserQuestion

Your questions have been answered: "Which sheet should I recreate first?"="Create all of them at once.", "How should the new elements (ui_badge, ui_tag, etc.) be built?"="Create elements first then the sheet, but don't give me a turn in between, do it all at once,.". You can now continue with these answers in mind.

The user wants the whole build at once. Executing — new elements first, then the sheet pages. Starting with primitives.lua.

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/widget...)

snkrx/ui/primitives.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

All syntax-check. Updating docs.

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

All four sheets are now covered by the gallery — new named elements built first, then the screens assembled. Syntax-checks clean, docs synced.

New elements (the names to refer to for edits)

Name What it is
ui_badge Solid-color pill marker — sheet 2's NEW/HOT/PRO/VIP/SALE and sheet 3's rarity pill labels.
ui_tag Outlined chip: colored icon glyph + label (magic / ranged / aoe / unique / binds).
ui_stat_chip Compact icon + label + value readout (gold 120, lvl 7, dur 64/100).
ui_pips A row of filled/empty progress dots (tier ●●●○○).
ui_icon_button Square glyph-only button — ui_button with a glyph label, full juice + variants.
ui_divider (extended) New style: thin / thick / dotted / dashed / double.
ui_slot (extended) target gains 'partial' (orange drag ring).

Panel variants (primary/warning/success/danger) are just ui_panel with a colored border — no new widget needed.

New gallery pages (4)

The rest of the 4 sheets — typography, slots, buttons, form controls, cards, HUD, shop, inventory, list rows, item cards — was already covered by the existing 13 pages. Gallery is now 17 pages, opening on badges.

To test: F4, page with [/] through badges, chrome, skillset, pause (pages 1–4). Check each new element reads logically and is spaced sensibly. Then tell me which named elements need edits — we'll refine those into their final API form.

Let's work on elements one by one. The main throughline we need to fix is that all elements need to look cohesively thick. One line borders = out. Either thick borders or no borders at all, negative space used well, like with the [ ] on the tags. Let's start with the badges, where are those supposed to be used? Are they like tags inside a card or similar?

Good throughline — let me answer the placement question first, then propose how badges should look under "thick / no thin border."

Where badges live

Badges are status / promo markers that ride on other elements, almost never standalone. Three patterns:

  1. On cards — a "NEW" / "SALE" badge pinned to a shop card's corner; a "RARE" / "LEGENDARY" rarity pill on an item card.
  2. Inline with a title — "EQUIPPED" / "LOCKED" next to an ability name in a detail panel (exactly how EQUIPPED is used on the skillset page right now).
  3. On list rows / tabs — a small count badge ("3") next to a tab label or a row item.

Distinct from the other small-text elements:

So yes — basically "promo marker on a card or detail panel."

Thickness — the design fix

ui_badge already has no border (solid color fill, dark text) — that's the "no thin border, contrast via fill" option, which fits your rule. What makes it read thin right now is the body font (LanaPixel @11 — a slim pixel font) and modest padding.

Proposed changes — visual only, API unchanged:

That should hit "cohesively thick" without changing the API or the use sites.

Gallery rework for the showcase

Right now the badges page shows two floating rows of badges and nothing else — which doesn't tell you where they go. I'd rework the page's badges section to demonstrate placement:

Sound right on all three (placement understanding / thickness via PixulBrush + padding / showcase rework)? Once you confirm, I'll do it as one change.

Go ahead.

Implementing. First the ui_badge widget tweaks:

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/galler...)

snkrx/ui/primitives.lua OK
snkrx/ui/gallery.lua OK

Both files syntax-check.

What changed:

ui_badge — default font is now ui_font_pixul (PixulBrush — the bold/chunky font), padding bumped to pad_x=7 / pad_y=3 (was 5/2). No border, solid fill, dark text. API unchanged. Docblock updated to spell out the "rides another element / never standalone" intent and the no-border-by-design rationale.

badges gallery page — section 01 reworked to demonstrate placement:

Page renumbered: 01 Badges, 02 Tags, 03 Stat Chips, 04 Pips (was 5 sections, the floating "Pill Labels" section collapsed into the badges vocab).

To test: F4badges page. Check the three placement mocks read like real placements (corner badge on card, inline badge on row, pill next to title), the vocab strip stays on one row, and the badges themselves now feel chunkier with the PixulBrush font + heavier padding.

Tell me what to adjust on ui_badge — or what to move to next.

These are not functionally any different from buttons, so basically let's just have a button object, a non-interactable button object that looks the same.

Right — consolidating. The change: ui_button gains an auto-size mode (no rect → sizes from x/y + label + padding) and an arbitrary color opt that overrides the variant preset. Without an id it's already static (no juice, no hover). Drop ui_badge. Existing button callers (rects + variants) are unaffected — purely additive.

Default label color: stays text (light) — same as today's variant buttons, since "looks the same as buttons" is the whole point. Caller can pass label_color = bg for dark text where a bright fill needs it.

Rewriting ui_button:

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now drop ui_badge from primitives.lua:

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Update the gallery callers:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/widget...)

snkrx/ui/primitives.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK
--- leftover ui_badge ---
none

All clean. Updating docs:

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (grep -nE 'ui_button|button (SNKRX' E:/a327ex/attack-template/.claude/CLAUDE.md ...)

575:  `ui_button`, `ui_bar`, `ui_tabs`, `ui_checkbox`, `ui_radio`,
589:occupied states + drag-target overlay), button (SNKRX-style: flat,
612:(a square glyph-only button — ui_button with a glyph label).

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

588  Widgets: slot (inventory cell — selected/locked/disabled/
589 occupied states + drag-target overlay), button (SNKRX-style: flat,
590 scale-pop, inverts white on hover, layered hover sounds; variants
591 primary/secondary/danger/ghost), bar (progress / health — health mode
592 is the v1 two-bar tween: a fast `front` bar + a delayed slow white
593 `back` bar exposing the lost-health chunk, a counting-down value text,
594 and the Emoji-Aimer cash-register kick on damage; fill is flat-cut on

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (grep -n 'ui_badge|badge' E:/a327ex/attack-template/.claude/CLAUDE.md)

592:"badges" by passing `x, y` + `color` instead of `rect` + `variant`,

Done. ui_badge is gone — ui_button is the unified element.

ui_button now does both roles:

Same widget, same look, same chunky ui_font_pixul font, same pad_x=7 / pad_y=3 padding in auto-size mode. The decision tree is:

Returns { hovered, clicked, x, y, w, h } — the rect info lets the vocab-strip-style chaining (x = x + ui_button({...}).w + 4) work.

Callers updated: page_badges (4 placements + vocab strip) and page_skillset (EQUIPPED) now call ui_button directly. text=label=. The text color default changed: vocab strip badges now use light text (button-style) instead of dark. The EQUIPPED and corner NEW and inline LEGENDARY badges still read well; the vocab strip's yellow VIP and light_blue rare may have low contrast — if so, easy fix is label_color = bg per badge or as a default-when-color-is-given.

To test: F4badges page. The placements should look indistinguishable from before in shape. The vocab strip will read with light text now — eyeball it and tell me if any of the bright fills (yellow, light_blue) need dark text reinstated, or anything else to tweak.

[Pasted image/png]

They look odd in some circumstances in terms of spacing, just fix that for now.

Two spacing issues visible: the NEW badge overlapping "whirl" in the card mock, and the vocab strip overflowing off the right (legendary cut off, mythic lost). Also the EQUIPPED sits in a huge empty gap on the list-row mock. Fixing those — no other changes.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

gallery.lua OK

Three spacing fixes:

  1. Card mock: widened 90→134 and the title rect now reserves room for the corner badge (ca.w - 30 - nw - 6), so whirl stops cleanly before NEW.
  2. List-row / title mocks: shifted both to a tighter 200-wide range (lr_x = 152), so EQUIPPED and LEGENDARY sit just past their text instead of stranded near the right edge.
  3. Vocab strip: split into two rows — uppercase (y=92) and rarity (y=108). Fits on screen, nothing clipped.

Sections 02 / 03 / 04 shifted down accordingly (130 / 168 / 206) — pips end at y=256, still inside 270.

To test: F4badges page. NEW should clear whirl; EQUIPPED and LEGENDARY should sit near their elements; both vocab rows fully on screen.

If we want these to be used as tags inside other elements, then I think it makes more sense to just use the [ tag ] construct that we use in other elements. These look better than these badges, which look too big.

Right — bracket motif over colored pills for inline tags. The badge-via-button experiment is overshooting visually for this use case.

Adding ui_bracket_tag and switching the placements + vocab to it.

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the gallery's badges page — switch placements + vocab to bracket tags, rename sections, collapse vocab to one row (brackets are narrower so they all fit).

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Update the skillset page's EQUIPPED marker:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/galler...)

snkrx/ui/primitives.lua OK
snkrx/ui/gallery.lua OK

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Done. Both files syntax-check.

What changed:

New: ui_bracket_tag (primitives.lua) — [label] rendered inline via the bracket-motif rich text. Muted Awesome brackets, label in opts.color (default text) in PixulBrush between them. No container, no fill — just text. Returns the rect it occupied.

badges gallery page — section 01 retitled Tags:

Section 02 renamed to Icon Tags (still ui_tag, the heavier outlined-chip alternative). Sections 03/04 shifted up since the vocab collapses to one row.

skillset page — the EQUIPPED marker next to the ability title is now [EQUIPPED] rather than a green pill.

ui_button's auto-size + color additions are left intact (still work for any other use case), just no longer used for the tag role.

To test: F4badges page. All three placements + the vocab strip should now read as lightweight bracket tags. Also page through to skillset to see [EQUIPPED] instead of the green pill.

These look better, I think what we could use for these is a font that is thick but smaller than the current one. Let me try to find it.

Acknowledged — waiting on the font. When you have it, a couple of slots to think about:

If you also want it tried on other small-text spots (button labels, tag chips, stat chips, list rows), let me know and I can swap those defaults in the same pass.

I added 3 fonts, Bold Pixel, More, Pirkkala, let's first just test which sizes are right for each. Create a new view where you just have test with each font at different sizes so I can see what looks right/wrong.

Let me find the new fonts in assets and then build the test view.

Bash (ls E:/a327ex/attack-template/assets/ | grep -iE 'bold|pirkkala|more|pixel' )

BoldPixels.ttf
FatPixelFont.ttf
LanaPixel.ttf
More 15.ttf
ark-pixel-10px-proportional-latin.ttf
ark-pixel-12px-proportional-latin.ttf
pirkkala.ttf

Found BoldPixels.ttf, More 15.ttf, pirkkala.ttf. Setting up the test view.

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the gallery page:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/init.lua snkrx/ui/gallery.lua;...)

snkrx/ui/init.lua OK
snkrx/ui/gallery.lua OK

Both clean.

What's there:

To test: F4 opens on fonts. Eyeball each font/size combo — note which ones look thick + readable at small sizes (focus is below the current PixulBrush @8). Tell me the size(s) you like for each font, or which font wins outright, and I'll wire it into ui_bracket_tag (and anywhere else worth swapping). If you want a different sample string or different size points (e.g. add 7, 9, 14), say so.

Loaded font: ui_head_l (16.0px, rough) atlas=512x512 Loaded font: ui_head_s (8.0px, rough) atlas=512x512 Loaded font: ui_body_lana (11.0px, rough) atlas=512x512 Loaded font: ui_body_ark (10.0px, rough) atlas=512x512 Loaded font: ui_pixul (8.0px, rough) atlas=512x512 Loaded font: ui_bracket (16.0px, rough) atlas=512x512 Loaded font: test_bold_6 (6.0px, rough) atlas=512x512 Loaded font: test_bold_8 (8.0px, rough) atlas=512x512 Loaded font: test_bold_10 (10.0px, rough) atlas=512x512 Loaded font: test_bold_12 (12.0px, rough) atlas=512x512 Loaded font: test_more_6 (6.0px, rough) atlas=512x512 Loaded font: test_more_8 (8.0px, rough) atlas=512x512 Loaded font: test_more_10 (10.0px, rough) atlas=512x512 Loaded font: test_more_12 (12.0px, rough) atlas=512x512 Loaded font: test_pirkkala_6 (6.0px, rough) atlas=512x512 Maximum number of fonts (16) reached ERROR: anchor/font.lua:22: Failed to load font: assets/pirkkala.ttf stack traceback: [C]: in function 'font_load' anchor/font.lua:22: in field 'new' anchor/class.lua:28: in global 'font' anchor/font.lua:40: in function 'font_register' snkrx/ui/init.lua:67: in main chunk [C]: in function 'require' snkrx/init.lua:154: in main chunk [C]: in function 'require' main.lua:42: in main chunk

Hit the engine's 16-font limit. 6 UI fonts + 12 trial = 18; loaded 15 before the error. Let me also check if sound_tuner or main.lua registers another font that'd push us over even with reductions.

Bash (grep -rn 'font_register|font_load' E:/a327ex/attack-template/main.lua E:/a327ex...)

E:/a327ex/attack-template/snkrx/sound_tuner.lua:40:fonts.tune = font_register('monogram', 'assets/monogram.ttf', 12)

Bash (grep -rn 'font_register|font_load' E:/a327ex/attack-template/ --include='*.lua'...)

E:/a327ex/attack-template/anchor/font.lua:5:    fonts.main = font_register('main', 'assets/monogram.ttf', 11)
E:/a327ex/attack-template/anchor/font.lua:22:  font_load(name, path, size, filter)
E:/a327ex/attack-template/anchor/font.lua:39:function font_register(name, path, size, filter)
E:/a327ex/attack-template/snkrx/sound_tuner.lua:40:fonts.tune = font_register('monogram', 'assets/monogram.ttf', 12)
E:/a327ex/attack-template/snkrx/ui/init.lua:26:ui_font_header_l  = font_register('ui_head_l',    'assets/Awesome 9.ttf',                       16)
E:/a327ex/attack-template/snkrx/ui/init.lua:27:ui_font_header_s  = font_register('ui_head_s',    'assets/FatPixelFont.ttf',                     8)
E:/a327ex/attack-template/snkrx/ui/init.lua:28:ui_font_body_lana = font_register('ui_body_lana', 'assets/LanaPixel.ttf',                       11)
E:/a327ex/attack-template/snkrx/ui/init.lua:29:ui_font_body_ark  = font_register('ui_body_ark',  'assets/ark-pixel-10px-proportional-latin.ttf', 10)
E:/a327ex/attack-template/snkrx/ui/init.lua:33:ui_font_pixul     = font_register('ui_pixul',     'assets/PixulBrush.ttf',                        8)
E:/a327ex/attack-template/snkrx/ui/init.lua:38:ui_font_bracket   = font_register('ui_bracket',   'assets/Awesome 9.ttf',                        16)
E:/a327ex/attack-template/snkrx/ui/init.lua:67:    f.at[sz] = font_register('test_' .. f.name:lower() .. '_' .. sz,

Read (E:/a327ex/attack-template/anchor/font.lua)

1    --[[
2     font — thin wrapper over C font functions.
3   
4     Usage:
5       fonts.main = font_register('main', 'assets/monogram.ttf', 11)
6       layer_text(game_layer, "Hello", fonts.main, 100, 50, color)
7   
8     A font is a plain table with .name, .size, .height plus query methods.
9     Stays as a simple class/struct pattern for consistent access.
10  ]]
11  
12  font = class()
13  
14  --- `filter` is optional: 'smooth' (grayscale atlas + linear sampling) or
15  --- 'rough' (1-bit mono atlas + nearest sampling). Defaults to the engine's

Bash (grep -n 'require' E:/a327ex/attack-template/snkrx/init.lua | head -20)

4:  `require('snkrx')`, from main.lua and AFTER `require('anchor')({...})`,
17:  The toolkit files live flat in snkrx/; this file requires them as
29:require('snkrx.palette')
30:require('snkrx.edition')
32:require('snkrx.geometry')
34:-- stack but, as in the pre-refactor scene, nothing requires them yet.)
46:require('snkrx.stats')
47:require('snkrx.fx')
50:sound_tuning = require('snkrx.sound_tuning')
138:require('snkrx.player')
139:require('snkrx.seeker')
140:require('snkrx.wall')
143:require('snkrx.projectile')
144:require('snkrx.area')
145:require('snkrx.beam')
146:require('snkrx.flicker')
147:require('snkrx.airborne')
148:require('snkrx.prop')
151:require('snkrx.sound_tuner')
154:require('snkrx.ui')

Read (E:/a327ex/attack-template/snkrx/sound_tuner.lua)

35   bind('tune_sr_up',      'key:=')
36  bind('tune_replay',     'key:space')
37  bind('tune_save',       'key:s')
38  
39  if not fonts then fonts = {} end
40  fonts.tune = font_register('monogram', 'assets/monogram.ttf', 12)
41  
42  local tune_layer = layer_new('tune')
43  local tune_bg = color(0, 0, 0, 220)
44  local tune_mode = false
45  local tune_index = 1
46  local tune_list = {}
47  local tune_replay_timer = 0
48  local tune_last_handle = -1
49  local REPLAY_INTERVAL = 0.5

Bash (grep -nE 'MAX_FONTS|font_count|max.*font' E:/a327ex/Anchor2/engine/src/anchor.c ...)

122:// Font bytes derive from font_count * atlas_size^2 * 4 — not tracked here.
1002:#define MAX_FONTS 16
1003:static Font* font_registry[MAX_FONTS];
1004:static int font_count = 0;
1047:    for (int i = 0; i < font_count; i++) {
1054:    if (font_count >= MAX_FONTS) {
1055:        fprintf(stderr, "Maximum number of fonts (%d) reached\n", MAX_FONTS);
1225:    font_registry[font_count++] = font;
1233:    for (int i = 0; i < font_count; i++) {
1243:            for (int j = i; j < font_count - 1; j++) {

Bash (grep -rnE 'font_register|font_load' E:/a327ex/attack-template/anchor/ 2>/dev/nul...)

E:/a327ex/attack-template/anchor/font.lua:5:    fonts.main = font_register('main', 'assets/monogram.ttf', 11)
E:/a327ex/attack-template/anchor/font.lua:22:  font_load(name, path, size, filter)
E:/a327ex/attack-template/anchor/font.lua:39:function font_register(name, path, size, filter)

Engine cap is 16 fonts and we're sneaking past it (the hidden one is monogram from sound_tuner, registered before the log started). Two changes to fit 3 sizes × 3 fonts safely:

  1. Make ui_font_bracket an alias of ui_font_header_l — they were registering the same Awesome 9.ttf @16 twice. Frees a slot, behavior unchanged.
  2. Drop test sizes from 4 → 3 per font: {6, 8, 10}.

That gives 5 UI + monogram + 9 test = 15 fonts, one slot of buffer under the cap.

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

init.lua OK

Try again — should now load cleanly. The fonts page shows each of the three candidates at 6 / 8 / 10. Tell me which font + size feels right and I'll re-register that one at the chosen size (and a couple of nearby sizes for fine-tuning) so we can wire it into the bracket tag (and elsewhere if you want).

Just up the limit to 64 instead.

Engine change — bumping MAX_FONTS from 16 to 64 in anchor.c, then rebuilding. Let me also check no other related constants are tied to 16, and restore the 4th test size + drop the workarounds where useful.

Bash (grep -nE 'MAX_FONTS|font_registry[|font_count' E:/a327ex/Anchor2/engine/src/anc...)

122:// Font bytes derive from font_count * atlas_size^2 * 4 — not tracked here.
1002:#define MAX_FONTS 16
1003:static Font* font_registry[MAX_FONTS];
1004:static int font_count = 0;
1047:    for (int i = 0; i < font_count; i++) {
1048:        if (strcmp(font_registry[i]->name, name) == 0) {
1050:            return font_registry[i];
1054:    if (font_count >= MAX_FONTS) {
1055:        fprintf(stderr, "Maximum number of fonts (%d) reached\n", MAX_FONTS);
1225:    font_registry[font_count++] = font;
1233:    for (int i = 0; i < font_count; i++) {
1234:        if (strcmp(font_registry[i]->name, name) == 0) {
1235:            Font* font = font_registry[i];
1243:            for (int j = i; j < font_count - 1; j++) {
1244:                font_registry[j] = font_registry[j + 1];
1246:            font_count--;
1255:    for (int i = 0; i < font_count; i++) {
1256:        if (strcmp(font_registry[i]->name, name) == 0) {
1257:            return font_registry[i];
8650:    lua_pushinteger(L, font_count);

Bash (cat E:/a327ex/Anchor2/engine/build.bat 2>/dev/null | head -20; echo "---"; ls -l...)

Exit code 2
@echo off
setlocal

cd /d "%~dp0"

:: Find and run vcvarsall.bat for Visual Studio
if exist "C:\Program Files\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvarsall.bat" (
    call "C:\Program Files\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 >nul 2>&1
) else if exist "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" (
    call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 >nul 2>&1
) else if exist "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" (
    call "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" x64 >nul 2>&1
) else if exist "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" (
    call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 >nul 2>&1
) else (
    echo ERROR: Could not find Visual Studio
    exit /b 1
)

if not exist build mkdir build
---
-rwxr-xr-x 1 adn 197121 4185088 May 17 22:07 E:/a327ex/attack-template/anchor.exe*

Bash (cat E:/a327ex/Anchor2/engine/build.bat | sed -n '20,80p')

if not exist build mkdir build

:: Build Lua library if it doesn't exist
if not exist lib\lua.lib (
    echo Building Lua library...
    if not exist build\lua_obj mkdir build\lua_obj
    cl.exe /nologo /O2 /W3 /c /I"include/lua" ^
        include/lua/lapi.c include/lua/lauxlib.c include/lua/lbaselib.c ^
        include/lua/lcode.c include/lua/lcorolib.c include/lua/lctype.c ^
        include/lua/ldblib.c include/lua/ldebug.c include/lua/ldo.c ^
        include/lua/ldump.c include/lua/lfunc.c include/lua/lgc.c ^
        include/lua/linit.c include/lua/liolib.c include/lua/llex.c ^
        include/lua/lmathlib.c include/lua/lmem.c include/lua/loadlib.c ^
        include/lua/lobject.c include/lua/lopcodes.c include/lua/loslib.c ^
        include/lua/lparser.c include/lua/lstate.c include/lua/lstring.c ^
        include/lua/lstrlib.c include/lua/ltable.c include/lua/ltablib.c ^
        include/lua/ltm.c include/lua/lundump.c include/lua/lutf8lib.c ^
        include/lua/lvm.c include/lua/lzio.c ^
        /Fo"build\lua_obj\\"
    if %ERRORLEVEL% neq 0 (
        echo Lua build failed!
        exit /b 1
    )
    lib.exe /nologo /out:lib\lua.lib build\lua_obj\*.obj
    if %ERRORLEVEL% neq 0 (
        echo Lua library creation failed!
        exit /b 1
    )
    rmdir /s /q build\lua_obj
    echo Lua library built.
... [31 more lines]

Bash (grep -nE 'anchor.exe|copy|\copy|.exe' E:/a327ex/Anchor2/engine/build.bat | hea...)

26:    cl.exe /nologo /O2 /W3 /c /I"include/lua" ^
43:    lib.exe /nologo /out:lib\lua.lib build\lua_obj\*.obj
56:    cl.exe /nologo /O2 /W3 /c /std:c17 /DNDEBUG /I"include" /I"include/box2d" ^
74:    lib.exe /nologo /out:lib\box2d.lib build\box2d_obj\*.obj
84:cl.exe /nologo /O2 /W3 ^
87:    /Fe"build/anchor.exe" ^
99:echo Build successful: build/anchor.exe
103:    copy /Y "build\anchor.exe" "E:\a327ex\emoji-ball-battles\tools\anchor.exe" >nul

Bash (sed -n '95,130p' E:/a327ex/Anchor2/engine/build.bat)

    echo Build failed!
    exit /b 1
)

echo Build successful: build/anchor.exe

:: Copy to emoji-ball-battles if it exists
if exist "E:\a327ex\emoji-ball-battles\tools" (
    copy /Y "build\anchor.exe" "E:\a327ex\emoji-ball-battles\tools\anchor.exe" >nul
    echo Copied to emoji-ball-battles/tools/
)

Plan: bump MAX_FONTS to 64 in anchor.c, rebuild, copy the new exe into attack-template/, and restore the 4-size test grid. Keeping the ui_font_bracket alias — it's a real improvement either way (no point loading the same font twice).

Edit (E:/a327ex/Anchor2/engine/src/anchor.c)

<tool_use_error>File has not been read yet. Read it first before writing to it.</tool_use_error>

Read (E:/a327ex/Anchor2/engine/src/anchor.c)

1000 static FT_Library ft_library = NULL;
1001    
1002    #define MAX_FONTS 16
1003    static Font* font_registry[MAX_FONTS];
1004    static int font_count = 0;
1005    
1006    // UTF-8 decoding helper - returns codepoint and advances pointer
1007    static uint32_t utf8_decode(const char** str) {
1008        const unsigned char* s = (const unsigned char*)*str;
1009        uint32_t codepoint;

Edit (E:/a327ex/Anchor2/engine/src/anchor.c)

The file E:/a327ex/Anchor2/engine/src/anchor.c has been updated successfully. (file state is current in your context — no need to Read it back)

Now rebuild the engine:

Bash (cd /e/a327ex/Anchor2/engine && cmd //c build.bat 2>&1 | tail -25)

'build.bat' is not recognized as an internal or external command,
operable program or batch file.

Bash (cmd //c "cd /d E:\a327ex\Anchor2\engine && build.bat" 2>&1 | tail -25)

'build.bat' is not recognized as an internal or external command,
operable program or batch file.

Bash (ls -la E:/a327ex/Anchor2/engine/*.bat)

-rw-r--r-- 1 adn 197121 4830 Apr 13 09:47 E:/a327ex/Anchor2/engine/build.bat
-rw-r--r-- 1 adn 197121  101 Apr 13 09:47 E:/a327ex/Anchor2/engine/run-web.bat
-rw-r--r-- 1 adn 197121  171 Apr 13 09:47 E:/a327ex/Anchor2/engine/run.bat

Bash (cmd //c "E:\a327ex\Anchor2\engine\build.bat" 2>&1 | tail -25)

src/anchor.c(3649): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(4894): warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strdup. See online help for details.
src/anchor.c(6013): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(6898): warning C4244: 'initializing': conversion from 'lua_Number' to 'float', possible loss of data
src/anchor.c(6899): warning C4244: 'initializing': conversion from 'lua_Number' to 'float', possible loss of data
src/anchor.c(8672): warning C4244: '=': conversion from 'lua_Integer' to 'int', possible loss of data
src/anchor.c(8673): warning C4244: '=': conversion from 'lua_Integer' to 'int', possible loss of data
src/anchor.c(8679): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(8793): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10131): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10135): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10140): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10144): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10150): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10154): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10160): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10164): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10703): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10705): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10708): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
src/anchor.c(10711): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
gl.c
Generating Code...
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
Build successful: build/anchor.exe

Build succeeded. Copy the new exe to attack-template and restore the 4-size grid:

Bash (cp E:/a327ex/Anchor2/engine/build/anchor.exe E:/a327ex/attack-template/anchor.ex...)

Exit code 1
cp: cannot create regular file 'E:/a327ex/attack-template/anchor.exe': Device or resource busy

Bash (cmd //c "copy /Y E:\a327ex\Anchor2\engine\build\anchor.exe E:\a327ex\attack-temp...)

Exit code 1
The process cannot access the file because it is being used by another process.
        0 file(s) copied.

The current attack-template anchor.exe is locked — the game is open. Restoring the 4-size grid in the meantime:

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

init.lua OK

Status:

Close the running game, then either:

Then F4fonts page should show all 12 trial-font cells.

Loaded font: ui_head_l (16.0px, rough) atlas=512x512 Loaded font: ui_head_s (8.0px, rough) atlas=512x512 Loaded font: ui_body_lana (11.0px, rough) atlas=512x512 Loaded font: ui_body_ark (10.0px, rough) atlas=512x512 Loaded font: ui_pixul (8.0px, rough) atlas=512x512 Loaded font: test_bold_6 (6.0px, rough) atlas=512x512 Loaded font: test_bold_8 (8.0px, rough) atlas=512x512 Loaded font: test_bold_10 (10.0px, rough) atlas=512x512 Loaded font: test_bold_12 (12.0px, rough) atlas=512x512 Loaded font: test_more_6 (6.0px, rough) atlas=512x512 Loaded font: test_more_8 (8.0px, rough) atlas=512x512 Loaded font: test_more_10 (10.0px, rough) atlas=512x512 Loaded font: test_more_12 (12.0px, rough) atlas=512x512 Loaded font: test_pirkkala_6 (6.0px, rough) atlas=512x512 Loaded font: test_pirkkala_8 (8.0px, rough) atlas=512x512 Maximum number of fonts (16) reached ERROR: anchor/font.lua:22: Failed to load font: assets/pirkkala.ttf stack traceback: [C]: in function 'font_load' anchor/font.lua:22: in field 'new' anchor/class.lua:28: in global 'font' anchor/font.lua:40: in function 'font_register' snkrx/ui/init.lua:70: in main chunk [C]: in function 'require' snkrx/init.lua:154: in main chunk [C]: in function 'require' main.lua:42: in main chunk

[Request interrupted by user]

Common mistake is forgetting to copy the new Anchor.exe, ah, I see it was locked, copy it now.

Bash (cp E:/a327ex/Anchor2/engine/build/anchor.exe E:/a327ex/attack-template/anchor.ex...)

-rwxr-xr-x 1 adn 197121 4185088 May 24 11:46 E:/a327ex/attack-template/anchor.exe*

Copied (May 24 11:46 confirms the new binary). Run again — all 12 trial fonts should load this time, and the fonts page will show the full grid.

16, 24, 32 for more and bold, 14 in intervals of 2 up to 32 for pirkala

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/init.lua snkrx/ui/gallery.lua;...)

snkrx/ui/init.lua OK
snkrx/ui/gallery.lua OK

Done. Two pages now:

Split because Pirkkala alone at those sizes (sum of row heights ~240px) fills the screen and leaves no room for the others. F4 opens on fonts; ] to flip to fonts-pirk. Tell me which sizes look right per font.

pirkala and bold work at 16, more at 32, you can remove the pages now. I think for the badges let's try to see what pirkala looks like, i like it more than bold, and more is too big for it

Picked Pirkkala@16 for tags. Cleanup + wire-up:

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now wire ui_bracket_tag to use Pirkkala for everything (no separate bracket font kludge needed — Pirkkala has its own brackets if it's a real pixel font):

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/init.lua snkrx/ui/gallery.lua ...)

snkrx/ui/init.lua OK
snkrx/ui/gallery.lua OK
snkrx/ui/primitives.lua OK

One thing I should fix — the badge placements' right-anchor calcs were measuring with ui_font_bracket + ui_font_pixul, but ui_bracket_tag now uses just Pirkkala for everything. Updating:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

gallery.lua OK

Done. Summary:

Gallery opens back on badges. Heads-up: the bracket tags will be visibly larger now (Pirkkala@16 vs the old ~10px mixed font), so the [NEW] / [EQUIPPED] / [LEGENDARY] placements may need to breathe more — eyeball it and tell me what to tune (font size, padding, placement y-offsets). And if Pirkkala doesn't render [ ] cleanly we'll add the bracket-font opt back.

Hmmm, still too big, let's try the [ tag ] but with Ark Pixel instead.

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated. All occurrences were successfully replaced. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/galler...)

snkrx/ui/primitives.lua OK
snkrx/ui/gallery.lua OK

Swapped — ui_bracket_tag defaults to ui_font_body_ark (Ark Pixel @10) now, and the badge placements' width measurements use it too. ui_font_pirkkala stays registered (harmless under the 64-font cap) in case you want to come back to it.

F4badges. Tags should be substantially smaller. May still need a couple of placement y-offset tweaks once you see it — just say what's off.

It works, remove the icon tags, make it so that the stat chips also default to Ark, and make sure that any text inside stat chips is always capitalized.

Let me first verify ui_tag isn't used outside the gallery, then make all three changes.

Bash (grep -rn 'ui_tag\b' E:/a327ex/attack-template/ --include='*.lua' 2>/dev/null)

E:/a327ex/attack-template/snkrx/ui/gallery.lua:692:-- ── Page: badges (ui_bracket_tag / ui_tag / ui_stat_chip / ui_pips) ─
E:/a327ex/attack-template/snkrx/ui/gallery.lua:748:    x = x + ui_tag({ x = x, y = 136, glyph = t[1], glyph_color = t[2],
E:/a327ex/attack-template/snkrx/ui/primitives.lua:332:  ui_tag(opts) -> rect
E:/a327ex/attack-template/snkrx/ui/primitives.lua:346:function ui_tag(opts)

Read (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

328    return r
329 end
330 
331 --[[
332   ui_tag(opts) -> rect
333 
334   An outlined chip: a colored icon glyph + a label — magic / ranged /
335   aoe / unique. charcoal fill + panel_border outline. Auto-sizes.
336 
337   opts:
338     x, y         top-left
339     glyph        optional icon glyph (drawn in glyph_color)
340     glyph_color  icon accent color (default text)
341     text         the label
342     text_color   label color (default text)
343     font         (default ui_font_body)
344     edition
345 ]]
346 function ui_tag(opts)
347   local font = opts.font or ui_font_body
348   local px, py, gap = 5, 2, 4
349   local gw = opts.glyph and font:text_width(opts.glyph) or 0
350   local tw = font:text_width(opts.text)
351   local r  = { x = opts.x, y = opts.y, h = font.height + 2*py,
352                w = px + (opts.glyph and (gw + gap) or 0) + tw + px }
353   local ed = opts.edition
354   ui_rrect(r.x, r.y, r.w, r.h, 3, panel_border, ed)
355   ui_rrect(r.x + 1, r.y + 1, r.w - 2, r.h - 2, 2, charcoal, ed)
356   local x = r.x + px
357   if opts.glyph then
... [12 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now update ui_stat_chip — default to Ark, force-uppercase the text:

Read (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

331  --[[
332   ui_stat_chip(opts) -> rect
333 
334   A compact stat / resource readout — an optional icon glyph, a muted
335   label, and a colored value: 'gold 120', 'lvl 7', 'dur 64/100'. Built
336   as a ui_label with stat-shaped runs; the charcoal container + auto-
337   sizing come from ui_label. Returns its rect.
338 
339   opts:
340     x, y         top-left
341     glyph        optional icon glyph
342     glyph_color  icon color (default value_color)
343     label        optional muted label text
344     value        the value text
345     value_color  value color (default yellow)
346     font, edition
347 ]]
348 function ui_stat_chip(opts)
349   local vcol = opts.value_color or yellow
350   local runs = {}
351   if opts.glyph then
352     runs[#runs + 1] = { text = opts.glyph .. ' ',
353                         color = opts.glyph_color or vcol }
354   end
355   if opts.label then
356     runs[#runs + 1] = { text = opts.label .. ' ', color = text_muted }
357   end
358   runs[#runs + 1] = { text = opts.value, color = vcol }
359   return ui_label({ x = opts.x, y = opts.y, runs = runs,
360                     font = opts.font, edition = opts.edition })
... [5 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now strip the icon-tags section from the gallery and renumber what's left:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/galler...)

snkrx/ui/primitives.lua OK
snkrx/ui/gallery.lua OK
---leftover ui_tag---
none

Quick doc sync:

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Done. Summary:

F4badges to confirm.

OK, page 1 is done, and I also understand another issue with the UI currently. In SNKRX, all elements go through the shadow layer, so usually UI panels have a soft shadow to the right and down, like literally everything else in the game. Inside a panel, there's no such thing, but the panels themselves and other UI elements outside panels do. This gives elements the classic SNKRX UI thickness that I'm after. So the change is: instead of panels and other UI elements having a 1-pixel border around them, they have no such border, but they go through the shadow system. For this to be visible, the background also has to be a bit brighter than it is now, since it's too dark.

Let me check what shadow infrastructure exists in the project before designing.

Bash (grep -rniE 'shadow' E:/a327ex/attack-template/snkrx/ E:/a327ex/attack-template/m...)

---v1 shadow---

This is a real architectural shift — shadow system, drop the 1px borders, brighten the background. Brief before code.

Design brief — UI shadow system + brighter bg

Approach. A new ui_shadow_layer paired with ui_layer. Every colored UI draw (ui_rrect/ui_rect/ui_glyph_text in paint.lua) writes the same shape twice: once to ui_shadow_layer at offset (+2, +2) in a flat dark shadow color, once to ui_layer normally. In ui_gallery_draw, render the shadow layer first then ui_layer on top.

The "no shadow on stuff inside panels" rule emerges automatically from draw order: a text inside a panel writes its shadow at panel.x+10+2 / panel.y+10+2 — which is inside the panel's body rect. The panel's own body fill on ui_layer covers that region, so the text shadow is hidden. The panel's own shadow only protrudes at its right + bottom edges (the only parts not covered by anything). Same SNKRX look, no per-element opt-in needed.

Borders go away. ui_panel's two-rect border + fill collapses to a single rrect fill. ui_label, ui_button (solid variants), ui_text_input, ui_modal, etc. also drop their 1px border. The shadow IS the chrome now. The two-rect outlines stay only where they were a deliberate visual (the segment-active green-outline cell in ui_tabs, the green-selected slot border, etc.).

Background brighten. Bumping the bg palette token a few shades brighter so shadows have something to read against. This is a global palette change — it affects the game floor too, which matches SNKRX (their bg is noticeably brighter than ours).

Tunables. ui_shadow_color (default ~rgba(0,0,0,100)), ui_shadow_offset_x/y (default 2, 2). Exposed as globals next to ui_field_scale/ui_dither so you can iterate without code edits.

Files touched.

One concern. The edition shader pipeline writes to a single layer at a time. The shadow draws go through layer_rounded_rectangle directly (no edition bracketing — shadows are flat black, the edition system shouldn't touch them). So per-element draw work goes from 1 shader-bracketed call to 1 shader-bracketed + 1 plain call. Cheap.

One scoping question:

AskUserQuestion

Your questions have been answered: "How should the `bg` brighten work?"="[No preference]". You can now continue with these answers in mind.

[Request interrupted by user]

Your approach for the shadow seems incorrect, there's no need to draw the same shape twice, just draw the shape to a layer, and then the shadow layer itself is derived from the canvas of the layers that it applies to, this is how the shadow is done in every other project. Look at how it's done in the recent projects, like Emoji Aimer, but also Invoker/Orblike itself.

Bash (grep -rniE 'shadow' E:/a327ex/emoji-aimer/main.lua 2>/dev/null | head -25)

11:  at scale 3, sky gradient bg, layer pipeline with shadow + outline shaders).
205:shadow_layer        = layer_new('shadow')
288:shadow_shader    = shader_load_file('assets/shadow.frag')
564:-- to effects_layer so it gets the outline + shadow.
599:-- completes. Drawn on effects_layer so it gets the outline + shadow.
5631:  -- Derive shadow + outline passes via the outline / shadow shaders.
5632:  layer_clear(shadow_layer)
5633:  layer_draw_from(shadow_layer, game_layer,    shadow_shader)
5634:  layer_draw_from(shadow_layer, effects_layer, shadow_shader)
5659:  layer_draw(shadow_layer, 4, 4)

Bash (sed -n '5625,5670p' E:/a327ex/emoji-aimer/main.lua)

  -- badges onto shop_level_layer too. Empty queue is a no-op.
  layer_render(shop_level_layer)
  shader_set_vec4_immediate(recolor_shader,
    'u_target_color', 83/255, 175/255, 239/255, 1)
  layer_draw_from(ui_content_layer, shop_level_layer, recolor_shader)

  -- Derive shadow + outline passes via the outline / shadow shaders.
  layer_clear(shadow_layer)
  layer_draw_from(shadow_layer, game_layer,    shadow_shader)
  layer_draw_from(shadow_layer, effects_layer, shadow_shader)

  layer_clear(game_outline)
  layer_draw_from(game_outline, game_layer, outline_shader)
  layer_clear(effects_outline)
  layer_draw_from(effects_outline, effects_layer, outline_shader)
  layer_clear(ui_panel_outline)
  layer_draw_from(ui_panel_outline, ui_panel_layer, outline_shader)
  layer_clear(ui_content_outline)
  layer_draw_from(ui_content_outline, ui_content_layer, outline_shader)
  layer_clear(ui_top_panel_outline)
  layer_draw_from(ui_top_panel_outline, ui_top_panel_layer, outline_shader)
  layer_clear(ui_top_content_outline)
  layer_draw_from(ui_top_content_outline, ui_top_content_layer, outline_shader)
  layer_clear(shop_particle_outline)
  layer_draw_from(shop_particle_outline, shop_particle_layer, outline_shader)
  layer_clear(cursor_outline)
  layer_draw_from(cursor_outline, cursor_layer, outline_shader)
  layer_clear(transition_outline)
  layer_draw_from(transition_outline, transition_layer, outline_shader)
  layer_clear(payout_outline)
... [16 more lines]

Got it — derived via a shader. Let me find the shader file used elsewhere.

Bash (find E:/a327ex/emoji-aimer/assets E:/a327ex/Invoker/assets -name 'shadow*' 2>/de...)

E:/a327ex/emoji-aimer/assets/shadow.frag
E:/a327ex/Invoker/assets/shadow.frag
---
// Shadow shader - creates a dark, semi-transparent silhouette
// Draw this layer at an offset to create drop shadow effect

in vec2 TexCoord;
out vec4 FragColor;
uniform sampler2D u_texture;

void main() {
    float a = texture(u_texture, TexCoord).a;
    FragColor = vec4(0.5, 0.5, 0.5, a * 0.5);
}

Bash (cat E:/a327ex/Invoker/assets/shadow.frag 2>/dev/null)

// Shadow shader - creates a dark, semi-transparent silhouette
// Draw this layer at an offset to create drop shadow effect

in vec2 TexCoord;
out vec4 FragColor;
uniform sampler2D u_texture;

void main() {
    float a = texture(u_texture, TexCoord).a;
    FragColor = vec4(0.1, 0.1, 0.1, a * 0.5);
}

Right — derive the shadow from the layer's own canvas via a shader, no double draws. Let me check the palette and revise the plan.

Bash (grep -n '^bg ' E:/a327ex/attack-template/snkrx/palette.lua; echo "---invoker bg-...)

53:bg            = color(22, 28, 34)
---invoker bg---
75:bg_color = color(17, 17, 17)
4976:bg = an:layer('bg')
4977:bg.camera = nil

Bash (sed -n '48,65p' E:/a327ex/attack-template/snkrx/palette.lua)

-- =============================================================================

-- Chrome / grayscale ladder, dark → light. Use these for backgrounds,
-- panels, borders, and text. The 9-step ladder gives enough resolution to
-- distinguish UI strata without going cluttered.
bg            = color(22, 28, 34)
slot_fill     = color(27, 31, 34)
panel_fill    = color(31, 33, 38)
charcoal      = color(45, 48, 51)
panel_border  = color(56, 60, 65)
grey          = color(74, 77, 80)
text_muted    = color(140, 140, 145)
white         = color(200, 200, 200)
text          = color(240, 240, 235)

-- Accents, roughly by hue. These 9 colors are deliberately matched to the
-- shader's palette_color() table for the palette-cycling polychrome edition
-- (mode 24). Keeping that lockstep is what makes mode 24 look like "the

Right — layer_draw_from(shadow_layer, ui_layer, shadow_shader) derives the shadow from ui_layer's canvas. No paint.lua changes — the only places that touch the pipeline are gallery.lua's render flow and init.lua (load shader, create layer). Plus ui_panel drops its border, and the dark end of the palette ladder bumps up (bg above slot_fill above panel_fill — have to lift all three or the chrome semantic inverts).

Executing.

Bash (cp E:/a327ex/Invoker/assets/shadow.frag E:/a327ex/attack-template/assets/shadow....)

-rw-r--r-- 1 adn 197121 312 May 24 18:01 E:/a327ex/attack-template/assets/shadow.frag

Edit (E:/a327ex/attack-template/snkrx/palette.lua)

The file E:/a327ex/attack-template/snkrx/palette.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now wire the shadow layer + shader into init.lua:

Edit (E:/a327ex/attack-template/snkrx/ui/init.lua)

The file E:/a327ex/attack-template/snkrx/ui/init.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now update ui_gallery_draw to use the shadow pipeline:

Bash (grep -n 'ui_gallery_draw|layer_render(ui_layer)|layer_draw(ui_layer)' E:/a327e...)

20:    ui_layer commands from ui_gallery_update(); ui_gallery_draw() is
1009:  ui_gallery_draw()
1014:function ui_gallery_draw()
1016:  layer_render(ui_layer)
1017:  layer_draw(ui_layer)

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

1005   pg.draw(ui_layer)
1006    end
1007    
1008    --[[
1009      ui_gallery_draw()
1010    
1011      Flush ui_layer to the screen. All command queueing happened in
1012      ui_gallery_update; this is just the render/draw pair.
1013    ]]
1014    function ui_gallery_draw()
1015      if not ui_gallery_active then return end
1016      layer_render(ui_layer)
1017      layer_draw(ui_layer)
1018    end
1019    

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now drop ui_panel's default border (collapse two-rect → single rrect fill):

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/palette.lua snkrx/ui/init.lua snk...)

snkrx/palette.lua OK
snkrx/ui/init.lua OK
snkrx/ui/primitives.lua OK
snkrx/ui/gallery.lua OK

Bash (grep -n 'shader_load_file|layer_draw_from|layer_clear' E:/a327ex/Anchor2/docs/...)

E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:36:layer_clear(layer)
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:37:layer_draw_from(dst, src, shader?)
E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:101:shader_load_file(path) -> shader
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:287:layer_clear(lyr)                    -- clear the layer's FBO
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:289:layer_draw_from(dst, src, shader?)  -- sample src's texture into dst

All API functions exist. Done.

Summary:

No paint.lua / per-element draw changes — shadow is purely a layer-composite effect, no double draws.

To test: F4 — every panel/widget should now cast a soft drop shadow down-right; the background should read noticeably brighter; inside-panel content should naturally have no shadow on the panel surface (because the panel's body fill covers it). Tunables to fiddle live: ui_shadow_offset_x/y (1–3 px is the usable range) and you can edit assets/shadow.frag to change the shadow color/alpha.

Tell me what's off and what's next.

I see the background change, I see the removal of the borders, I don't see the drop shadow.

I see the bug. The gallery's bg fill — layer_rectangle(ui_layer, 0, 0, width, height, bg()) — paints the entire ui_layer opaque, so when the shader derives the shadow from its alpha channel, the shadow is a full-screen dark tint at offset, not discrete drop shadows behind chrome.

Fix: put the bg fill on a separate layer so ui_layer stays transparent except where actual chrome/text is drawn.

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

983      end
984   end
985 
986   ui_state_begin_frame()
987   ui_juice_update(dt)
988 
989   -- Queue the overlay onto ui_layer.
990   local pg = ui_gallery_pages[ui_gallery_page]
991   layer_rectangle(ui_layer, 0, 0, width, height, bg())
992   layer_text(ui_layer, 'UI KIT', ui_font_header_l, 8, 6, text())
993   local edname = (ui_global_edition == 0) and 'per-color'
994     or edition_name(ui_global_edition)
995   layer_text(ui_layer,
996     'body: ' .. ui_font_body_name() .. '   edition: ' .. edname
997       .. string.format('   fs: %.2f', ui_field_scale)
998       .. '   dither: ' .. dither_name(ui_dither),
999     ui_font_body, 8, 24, text_muted())
1000    
1001      local ind = ui_gallery_page .. '/' .. #ui_gallery_pages .. '  ' .. pg.name
1002      layer_text(ui_layer, ind, ui_font_body,
1003        width - ui_font_body:text_width(ind) - 8, 11, text_muted())
1004    
1005      pg.draw(ui_layer)
1006    end
1007    

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

gallery.lua OK

Fixed. The cause: the gallery's bg fill was painting ui_layer fully opaque, so the shader was deriving a full-screen shadow that became a screen-wide dark tint at offset — invisible against the dark bg.

Now:

F4 → drop shadows should now be visible down-right of every panel, button, text, badge, etc. The header text at the top will also cast small shadows. Tunables: ui_shadow_offset_x/y (currently 2 each) live in init.lua; the shadow color/alpha is in assets/shadow.frag (vec4(0.1, 0.1, 0.1, a * 0.5)).

[Pasted image/png]

Yes, this looks very good. Is the shadow currently 2 pixels away on both directions?

Yes — ui_shadow_offset_x = 2 and ui_shadow_offset_y = 2, both set in snkrx/ui/init.lua (the line right under ui_shadow_layer = layer_new('ui_shadow')). Tweak either live to thin/fatten the shadow, change them asymmetrically, or even set negatives to flip the direction.

OK. The elements on the first page are good. For the elements on the second page we need to fix PANEL VARIANTS and DRAG TARGETS. Why do panel variants have different color 1 pixel borders? Same for drag targets, but dashed ones. Can we find another way of conveying whatever information those borders are coveying?

Right — both need non-thin-border replacements:

Implementing.

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the drag-target overlay — replace the dashed ring with a tinted fill:

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (grep -n 'draw_drag_target|gap_color' E:/a327ex/attack-template/snkrx/ui/widgets...)

12:  loops (draw_drag_target). Every widget accepts opts.edition to force
33:  draw_drag_target(r, kind, override)
41:local function draw_drag_target(r, kind, override)
75:    gap_color  color of the 1px gap inside the dashed ring (default bg)
139:    draw_drag_target(lr, opts.target, opts.gap_color, ed)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the gallery — switch panel variants to stripe:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/widget...)

snkrx/ui/primitives.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Done.

Panel variantsui_panel gains a stripe opt (color, optional stripe_width default 3). Draws a thick vertical bar on the left edge, inset from the rounded corners so it doesn't poke past them. The chrome page's variants now use the stripe instead of a 1px border; default has no stripe (it's the baseline).

Drag targetsdraw_drag_target collapsed to a single semi-transparent (~130/255 alpha) colored wash over the slot, edition-shaded. The dashed-perimeter + gap-ring logic is gone. The slot's icon / lock glyph stays visible through the tint, but the slot clearly reads green / orange / red. gap_color opt removed from ui_slot (it was the gap-ring color, no longer needed).

To test: F4 → page to chrome. Panel Variants should now show a colored bar on the left of each (except default). Drag Targets should show three tinted slots (green / orange / red) instead of dashed rings, plus the locked one at the end.

In the previous changes you made regarding the shadow, did you somehow also change the base color of the elements in some way?

Yes — I did. To keep the chrome ladder consistent (bg < slot_fill < panel_fill), I lifted all three of the dark-end tokens, not just bg. From snkrx/palette.lua:

Token Old New
bg (22, 28, 34) (34, 40, 46)
slot_fill (27, 31, 34) (40, 44, 47)
panel_fill (31, 33, 38) (46, 48, 52)

(I called it out in the brief — "Have to lift all three or the chrome semantic inverts" — but it was a single line buried in a longer message, easy to miss.)

So panels and slots are visibly brighter too, not just the bg. The rest of the palette (charcoal, panel_border, grey, all accents) was left alone.

If you want only the bg brighter and panels/slots back to their old tones, I can revert slot_fill and panel_fill — but then the bg will read brighter than the slots, which inverts the "slot is a recessed cell inside the panel surface" semantic (slot would appear lighter than its surrounding bg, like a raised tile instead of a recessed one). Two options if so:

  1. Revert slot/panel, accept the inverted ladder (slots and panels become darker than the floor).
  2. Brighten only bg by a smaller amount (e.g. (28, 32, 38)) that stays below slot_fill's old (27, 31, 34) — so the ladder ordering is preserved without lifting slot/panel.

Which direction, or leave it as-is?

Change slot_fill and panel_fill back, I just to see what it looks like.

Edit (E:/a327ex/attack-template/snkrx/palette.lua)

The file E:/a327ex/attack-template/snkrx/palette.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Reverted. bg stays at the brighter (34, 40, 46); slot_fill and panel_fill back to their originals. Panels/slots will now read darker than the bg (the "raised tile" inversion I mentioned). Take a look and let me know if that's better or worse.

This is better, but it's like the delta between colors got different. You didn't change anything about the editions themselves, right?

I didn't touch paint.lua or the edition shader directly, BUT changing palette Lua values has a subtle cascade through the edition system that explains the "different delta" you're seeing.

The setup: each of the 18 palette tokens has a "mimic edition" (50–67) in assets/draw_shader.frag's ui_palette_color(i) function — and those RGBs are hardcoded in the shader. The Lua bg = color(34, 40, 46) change updates the Lua-side color, but edition 50 (the bg mimic) in the shader still outputs the old (22, 28, 34) plus shimmer.

So you've got two different "bg" colors floating around now:

Same logic applied to slot_fill / panel_fill, but those are now BACK in sync (Lua reverted to original, shader hardcode was original).

So if anything looks visually inconsistent (e.g. a ghost button reads as a different shade than the floor around it), that's the drift. To fix: bump edition 50's RGB in ui_palette_color() to match the new bg. Want me to do that?

What is the purpose of the panel variants? Where would they be used in a real life scenario?

Panel variants are a web/productivity-app idiom — colored containers that convey semantic category of the contained content:

In an actual SNKRX-style game UI, the only place I'd reach for them is a confirmation modal with a danger stripe ("leave shop?", "quit run?") and maybe a toast/notification stack with green/red toasts for rewards vs errors. Possibly a HUD low-HP warning banner.

Honestly, most game UIs convey state through other channels — icon color, text color, a status chip, a flash on the bar — rather than coloring a whole panel. The web pattern of "colored alert callouts" maps poorly to game HUDs/menus where every pixel is already chrome.

So: panel variants are real and used in a handful of spots (modals, toasts, banners), but if you're trying to keep the toolkit minimal, you could drop the stripe opt entirely and just use those spots' existing accents (the modal's primary/danger button, a danger-tinted toast bg). Want me to keep it or pull it?

[Pasted image/png]

Those can be removed then. For some reason now the per-color edition shader has some portion of it that are getting way too dark, this wasn't happening before from what I can remember. Do you have any idea what might have changed it? This is across the board and probably something to do with the color being used, or something else...

Two things — removing the panel variants first, then I'll dig into the shimmer issue.

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/galler...)

snkrx/ui/primitives.lua OK
snkrx/ui/gallery.lua OK

Now the shimmer issue. I have a theory — let me verify by reading the edition shader's alpha handling.

Bash (grep -nE 'FragColor|gl_FragColor|out vec4|noise|shimmer|ui_palette_color|u_editi...)

26://               apply_edition() as the basis for the organic_field shimmer,
27://               so the shimmer is world-stable as the camera moves.
39://   u_edition   Edition mode (integer-as-float). 0 = no transform.
40://               2..14 = HSL-driven shimmer presets (ruby, rose, amber,
44://                       preserve original lightness, no shimmer).
45://               23 = dynamic-hue shimmer (centered on the input color's
51://   u_time      Elapsed seconds, used by the shimmer / palette-cycle modes
100:out vec4 FragColor;
106:uniform float u_edition;
109:// Field scale: how tightly the organic-field noise is packed in world space.
110:// 0.15 (the original Invoker default) gives a slow, broad shimmer — useful
112:// 0.5, 1.0) compress the noise so a small entity (a 10×10 player, an 8×8
120:// of continuous shimmer. The underlying field still animates over time;
125:// Optional HP-bar uniforms (only read when u_edition is 30 or 31).
186:// EDITION SUPPORT — HSL helpers, organic noise field, accent palette table,
189:// rgb<->hsl conversions and the organic_field noise pattern are from
231://   - pseudo-random noise hashed from pixel position (modes 7..8)
235:// place of smooth shimmer. Inspired by Surma's ditherpunk catalog —
246://   7  noise / 4 lvl       grainy 4-level pseudo-random stipple
247://   8  noise / 8 lvl       grainy 8-level pseudo-random stipple
313:float dither_noise(vec2 pix) {
396:    if (mode ==  7) return dither_quantize(field,  4.0, dither_noise(pix));
397:    if (mode ==  8) return dither_quantize(field,  8.0, dither_noise(pix));
424:// Smooth pseudo-noise driven by three drifting sample points. Returns a
454:// position (= vPos), which anchors the shimmer to world coords.
456:// reproduce one of these exactly (plus a lightness shimmer) so the UI
459:vec3 ui_palette_color(int i) {
485:    // remain readable, skip the organic shimmer entirely. These are the
487:    // override rather than a hue-locked shimmer.
504:    // Shared field computation for all hue-shimmer modes. The slight sat

Bash (grep -nE 'main()|FragColor =|color.a|premult|color.rgb' E:/a327ex/attack-tem...)

134:// dispatches it in main(). For the template we use the engine's existing
452:// Apply the edition color transformation. Called from main() at the END
624:void main() {
667:        FragColor = vec4(col, sprite_alpha);
750:    FragColor = vec4(col, vColor.a * alpha);

Read (E:/a327ex/attack-template/assets/draw_shader.frag)

720          alpha = 1.0 - smoothstep(-u_aa_width, u_aa_width, d);
721     } else {
722         alpha = 1.0 - step(0.0, d);
723     }
724 
725     // Discard fragments outside the SDF shape. Critical for stencil
726     // correctness — if we just emitted alpha=0 the fragment would still
727     // count as "drawn" and write 1 to the stencil buffer, making any
728     // SDF shape (layer_circle etc.) function as a rectangular stencil
729     // mask the size of its bounding quad. Discard skips color, depth,
730     // AND stencil writes for that fragment.
731     if (alpha <= 0.0) discard;
732 
733     vec3 col = vColor.rgb + vAddColor;
734 
735     int edition = int(u_edition + 0.5);
736 
737     // HP-bar horizontal clipping (editions 30 and 31). Discard fragments
738     // past u_hp_clip_r so a full-width rounded rect renders as a partial
739     // fill with sharp vertical cutoffs at the fill boundary.
740     if ((edition == 30 || edition == 31) && vUV.x > u_hp_clip_r) {
741         discard;
742     }
743 
744     // Apply edition on non-zero alpha. Alpha-zero pixels stay transparent —
745     // no point spending shimmer math on them.
746     if (edition > 0 && alpha > 0.01) {
747         col = apply_edition(col, edition, vPos);
748     }
749 
... [3 more lines]

Read (E:/a327ex/attack-template/assets/draw_shader.frag)

455  // The 18 locked UI palette tokens, indexed 0..17. Editions 50..67 each
456 // reproduce one of these exactly (plus a lightness shimmer) so the UI
457 // can be drawn through the edition pipeline without drifting off the
458 // locked palette. Keep in lockstep with palette.lua.
459 vec3 ui_palette_color(int i) {
460     if (i == 0)  return vec3( 22.0,  28.0,  34.0) / 255.0;  // bg
461     if (i == 1)  return vec3( 27.0,  31.0,  34.0) / 255.0;  // slot_fill
462     if (i == 2)  return vec3( 31.0,  33.0,  38.0) / 255.0;  // panel_fill
463     if (i == 3)  return vec3( 45.0,  48.0,  51.0) / 255.0;  // charcoal
464     if (i == 4)  return vec3( 56.0,  60.0,  65.0) / 255.0;  // panel_border
465     if (i == 5)  return vec3( 74.0,  77.0,  80.0) / 255.0;  // grey
466     if (i == 6)  return vec3(140.0, 140.0, 145.0) / 255.0;  // text_muted
467     if (i == 7)  return vec3(200.0, 200.0, 200.0) / 255.0;  // white
468     if (i == 8)  return vec3(240.0, 240.0, 235.0) / 255.0;  // text
469     if (i == 9)  return vec3(210.0,  49.0,  56.0) / 255.0;  // red
470     if (i == 10) return vec3(233.0, 108.0,  27.0) / 255.0;  // orange
471     if (i == 11) return vec3(234.0, 171.0,  28.0) / 255.0;  // yellow
472     if (i == 12) return vec3(148.0, 176.0,  41.0) / 255.0;  // lime
473     if (i == 13) return vec3(106.0, 166.0,  52.0) / 255.0;  // green
474     if (i == 14) return vec3( 35.0, 143.0, 194.0) / 255.0;  // light_blue
475     if (i == 15) return vec3( 39.0,  88.0, 180.0) / 255.0;  // blue
476     if (i == 16) return vec3(110.0,  63.0, 178.0) / 255.0;  // violet
477     return            vec3(208.0,  66.0, 120.0) / 255.0;    // pink (17)
478 }
479 
480 vec3 apply_edition(vec3 col, int edition, vec2 world_pos) {
481     if (edition <= 0) return col;
482 
483     // Flat-color override range (15..22): force the color to a specific
484     // RGB triplet, preserve the original lightness so highlights/shadows
... [65 more lines]

Read (E:/a327ex/attack-template/assets/draw_shader.frag)

555          vec3 b = palette_color(i_b);
556         vec3 mixed = mix(a, b, lerp_t);
557         vec3 mixed_hsl = rgb2hsl(mixed);
558         mixed_hsl.z = hsl.z;
559         return hsl2rgb(mixed_hsl);
560     } else if (edition >= 50 && edition <= 67) {
561         // UI mimic editions (50..67): reproduce a locked palette token
562         // exactly, plus a subtle lightness shimmer so the UI breathes.
563         // The draw's base color is ignored — the edition IS the color.
564         vec3 uc = ui_palette_color(edition - 50);
565         vec3 uh = rgb2hsl(uc);
566         uh.z = clamp(uh.z + (res - 0.5)*0.18, 0.0, 1.0);
567         return hsl2rgb(uh);
568     } else {
569         // Hue-locked shimmers: each tied to a specific hue center.
570         // Spread is ±0.05 except gold (5), which is tightened to ±0.03 to
571         // stay in the warm-yellow band without bleeding into green.
572         //
573         // Two flavors:
574         //   STATIC  (modes 2..11)   hue + sat shift only. The hue wobble
575         //                           is small (±0.05) so the color reads as
576         //                           "ruby/amber/lime/etc." without obvious
577         //                           animation — though it IS animating.
578         //   MOVING  (modes 40..49)  same hue + sat as the static version,
579         //                           PLUS a lightness wave (0.65×..1.1×)
580         //                           driven by the same `res` factor that
581         //                           silver uses. The brightness modulation
582         //                           is what actually makes the shimmer
583         //                           visible to the eye — hue shifts of the
584         //                           same magnitude read as near-static.
... [35 more lines]

Found it. The UI mimic editions (50–67) modulate lightness by (res - 0.5) * 0.18 — a ±0.09 HSL-lightness swing applied to the locked palette color. For dark chrome (panel_fill HSL lightness ~0.135), that swing covers roughly 0.045 → 0.225 — almost half the way to black on the dark end. The shimmer has always been doing this; from the shader (draw_shader.frag line 566):

uh.z = clamp(uh.z + (res - 0.5)*0.18, 0.0, 1.0);

What changed isn't the shimmer math — it's the bg contrast. The bg went brighter (34, 40, 46) while panel_fill stayed at the original dark (31, 33, 38). The panel is now visibly darker than its surrounding bg, so the same shimmer-noise dark valleys that were always there now read as "way too dark" by comparison. Your eye is reading the brighter bg as the reference, which makes the chrome's natural dark patches feel exaggerated.

Three ways to fix (pick one):

AskUserQuestion

Your questions have been answered: "How should the shimmer-on-dark-chrome darkening be fixed?"="Re-darken the bg". You can now continue with these answers in mind.

Edit (E:/a327ex/attack-template/snkrx/palette.lua)

The file E:/a327ex/attack-template/snkrx/palette.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

palette.lua OK

bg is now (26, 30, 36) — modestly above the original (22, 28, 34), basically tied with slot_fill's perceived brightness (avg 30.7 vs slot's 30.6). The contrast that was making the panel-interior shimmer valleys feel "way too dark" should reduce — chrome shimmer's natural ±0.09 lightness range now sits closer to bg's reference luminance, so the dark patches read less extreme.

If it's still too dark or now too dark-against-bg, knobs to try: smaller bg bump (24, 30, 36), or move to one of the shader-level fixes (cap shimmer to brighten-only, or reduce amplitude).

By those can be removed I mean the panel variants entirely.

Bash (grep -nE 'stripe|panel_variant|Panel Variants' E:/a327ex/attack-template/snkrx/u...)

E:/a327ex/attack-template/snkrx/edition.lua:53:      Diagonal stripes / "line-diag" (modes 12..18):
E:/a327ex/attack-template/snkrx/edition.lua:54:       12  line diag 2x2  ..  18  line diag 8x8 — stripes at sizes 2..8
E:/a327ex/attack-template/snkrx/edition.lua:55:      Anti-diagonal stripes / "line-diag-flip" (modes 19..25):
E:/a327ex/attack-template/snkrx/edition.lua:58:       26  line horizontal      2-level horizontal stripes
E:/a327ex/attack-template/snkrx/edition.lua:59:       27  line vertical        2-level vertical stripes

Bash (grep -n 'function ui_panel|stripe|opts.border' E:/a327ex/attack-template/snkrx...)

33:function ui_panel(opts)
39:  if opts.border then
40:    local bw = opts.border_width or 1
41:    ui_rrect(r.x, r.y, r.w, r.h, rad, opts.border, ed)

Panel variants are already fully gone — both the chrome-page section and the stripe opt on ui_panel were removed in the earlier edit. Confirming the current state:

The border opt on ui_panel stays in the API — but it's not for variants anymore. It's used by ui_slot and ui_card to draw a state-indicator border on selected/hovered (the 2px green selected border, etc.). Different concept from the rejected colored-variant idea.

If you also want border removed (e.g., move state indication to a different mechanism), let me know — but the panel variants themselves are gone.

Even with bg darkened it's still off, increase bg again and do one of the other options, of changing the amplitude, but make sure that it only applies to UI.

Edit (E:/a327ex/attack-template/snkrx/palette.lua)

The file E:/a327ex/attack-template/snkrx/palette.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now reduce shimmer amplitude on the UI mimic editions (50–67) only. Game editions (2–14, 23, 24, etc.) are untouched.

Edit (E:/a327ex/attack-template/assets/draw_shader.frag)

The file E:/a327ex/attack-template/assets/draw_shader.frag has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

palette.lua OK

Done — two changes:

  1. palette.luabg back to (34, 40, 46) (the brighter value).
  2. assets/draw_shader.frag — UI mimic editions (50–67) amplitude reduced from ±0.09 → ±0.04 (multiplier 0.18 → 0.08). The dark patches on bg/slot_fill/panel_fill chrome should shrink to less than half their previous swing.

This is UI-only by construction — editions 50–67 are exclusively used by the toolkit (via paint.lua's ui_color_edition table). Game entities use editions 2–14 (hue-locked), 23 (dynamic), 24 (palette-cycle), etc., which retain their original amplitudes.

If 0.08 over-flattens the breathing (shimmer becomes too subtle to read), I can push it back up — say 0.12. If still too dark in patches, drop further. The knob is the 0.08 in draw_shader.frag line 567.

OK. A few element edits now. Rightmost icon button (?) still has single line border. Drag targets still have single line borders. On page 3, the elements to the left still have single line borders AND the selection green border on them looks off, we need another visual phrase here. The one you reached for with the panel variants was the right idea, and it's also present in page 9 with the list, where you have items in a sort of list and the vertical green marker on the side, do that here for those elements to the side, have them in a sort of list and the selection is based on this vertical element to the left instead of around each element.

Let me look at the current skillset page to figure out the rework, and inspect the slot/button to plan border drops.

Bash (grep -nE 'page_skillset|gallery_skill_sel' E:/a327ex/attack-template/snkrx/ui/ga...)

800:local gallery_skill_sel = 1
802:local function page_skillset(lyr)
813:      selected = (gallery_skill_sel == i) })
814:    if res.clicked and sk then gallery_skill_sel = i end
820:  local sel    = skills[gallery_skill_sel] or skills[1]
924:  { name = 'skillset',   draw = page_skillset   },

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

800  local gallery_skill_sel = 1
801 
802 local function page_skillset(lyr)
803   gallery_section_label(lyr, 8, 38, 1, 'Skillset')
804 
805   -- Left: a vertical column of ability slots; empties read as locked.
806   local skills = { { fill = light_blue, glyph = 'W' },
807                    { fill = red, glyph = 'F' },
808                    { fill = green, glyph = 'T' } }
809   for i = 1, 5 do
810     local sk  = skills[i]
811     local res = ui_slot({ rect = rect_new(8, 56 + (i - 1)*34, 30, 30),
812       id = 'skill' .. i, icon = sk, locked = (sk == nil),
813       selected = (gallery_skill_sel == i) })
814     if res.clicked and sk then gallery_skill_sel = i end
815   end
816 
817   -- Right: the detail panel for the selected ability.
818   local panel = rect_new(52, 56, width - 52 - 8, 198)
819   ui_panel({ rect = panel })
820   local sel    = skills[gallery_skill_sel] or skills[1]
821   local px, py = panel.x + 12, panel.y + 12

Three changes:

  1. ui_slot — drops the default panel_border and hover grey borders (both 1px). Only the selected state still draws a border (2px green), kept as an option for callers that want it (like the inventory grid).
  2. ui_button ghost variant — label-only when not hovered (drop the 1px panel_border outline). Hovered ghost still inverts to white-fill, so the button is visible once moused over.
  3. page_skillset — rework the left column as a list with a left vertical green stripe for selection (the ui_list_row accent style); ditch the green border around the selected slot.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the skillset rework — list-style with left-stripe selection:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/widgets.lua snkrx/ui/gallery.l...)

snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Done. Summary:

Effects across pages:

Tell me which to tune next.

The color is still bothering me. Is the amplitude change only applying to the gray color with the panels or with everything? It should only affect that. And currently, what's the lowest/highest values reached?

Honest answer: the amplitude change is applying to all 18 UI mimic editions (50–67) — that includes the accent colors (red/orange/green/etc.), not just the grayscale chrome. Fixing that now to only affect 50–58 (the chrome tokens).

Edit (E:/a327ex/attack-template/assets/draw_shader.frag)

The file E:/a327ex/attack-template/assets/draw_shader.frag has been updated successfully. (file state is current in your context — no need to Read it back)

Fixed — only editions 50–58 (the chrome tokens: bg / slot_fill / panel_fill / charcoal / panel_border / grey / text_muted / white / text) now use the reduced amplitude. Editions 59–67 (the accents: red / orange / yellow / lime / green / light_blue / blue / violet / pink) are back to the original 0.18 — they have higher base lightness and benefit from the lively shimmer.

Current lightness ranges (HSL L, 0..1 scale) at amp 0.08 (±0.04) for chrome:

Token Base L Range Approx avg RGB at extremes
bg 0.110 0.070..0.150 ~14 → ~30
slot_fill 0.120 0.080..0.160 ~16 → ~33
panel_fill 0.135 0.095..0.175 ~22 → ~40
charcoal 0.188 0.148..0.228 ~29 → ~46
panel_border 0.237 0.197..0.277 ~39 → ~56
grey 0.302 0.262..0.342 ~57 → ~77
text_muted 0.559 0.519..0.599 ~127 → ~157
white 0.784 0.744..0.824 ~187 → ~213
text 0.931 0.891..0.971 ~225 → ~250

Caveat that may still bother you: panel_fill at its dark extreme (~RGB 22) is still noticeably darker than the new bg (34, 40, 46), so the dark patches are smaller but not gone. Two further moves if it still reads off:

Want either of those, or leave as-is?

Let's try brighten only? I do need the delta to exist though because I need to see the dither effect and that requires a big enough gradient.

Switching chrome (50–58) to brighten-only at amp 0.18. That gives a 0..+0.09 lightness shift — same total width as the old symmetric ±0.04 but all upward. The dither gradient stays visible (the field still varies across the same range, just one-sided). Accents (59–67) keep their symmetric ±0.09.

Edit (E:/a327ex/attack-template/assets/draw_shader.frag)

The file E:/a327ex/attack-template/assets/draw_shader.frag has been updated successfully. (file state is current in your context — no need to Read it back)

Done. Updated chrome lightness ranges (brighten-only, 0..+0.09 from base):

Token Base L Range Approx RGB avg
bg 0.110 0.110..0.200 ~28 → ~46
slot_fill 0.120 0.120..0.210 ~31 → ~48
panel_fill 0.135 0.135..0.225 ~34 → ~52
charcoal 0.188 0.188..0.278 ~48 → ~67
panel_border 0.237 0.237..0.327 ~60 → ~78
grey 0.302 0.302..0.392 ~77 → ~93
text_muted 0.559 0.559..0.649 ~143 → ~170
white 0.784 0.784..0.874 ~200 → ~222
text 0.931 0.931..1.000 ~237 → ~255

So panel_fill always stays ≥ ~34 RGB avg (its base), never dips into the "dark patch" territory it had with the symmetric swing. The dither/noise field still varies across that 0.09 range, so the shimmer pattern remains visible — just always brighter than base, never below.

If the shimmer reads as too subtle (since you only see the brighten direction), I can push the amp to 0.30 (range 0..+0.15) for a more pronounced "highlight" effect. Otherwise this should settle the dark-patch issue.

We'll do a pass on this in another session I think, including adding additional background patterns instead of only this one noise pattern we have now. But let's leave that for later. Now let's continue fixing elements. On page 4, that particular HP bar is too thin and doesn't need any values in it. The minimap is supposed to have dashed lines between the points? Those aren't visible. General rule: font for text = Lana, font for single UI lines and other individual UI elements = Ark. So inside the status panel it should be Ark. Then from page 5 to page 17 you need to apply the general changes to elements we made in the previous pages. Do the ones you're sure about in one go, flag the ones you're unsure about explaining to me what you're unsure about and I'll give more direction.

Let me handle page 4 first, then sweep 5–17.

Bash (grep -n 'page_pause|page_hud|page_shop|page_inventory|page_cards|page_conte...)

64:local function page_primitives(lyr)
117:local function page_compose(lyr)
183:local function page_slots(lyr)
275:local function page_buttons(lyr)
301:local function page_tags(lyr)
336:local function page_bars(lyr)
371:local function page_tabs(lyr)
399:local function page_form(lyr)
439:local function page_content(lyr)
490:local function page_cards(lyr)
519:local function page_hud(lyr)
567:local function page_shop(lyr)
647:local function page_inventory(lyr)
861:local function page_pause(lyr)
932:  { name = 'pause',      draw = page_pause      },
933:  { name = 'hud',        draw = page_hud        },
934:  { name = 'shop',       draw = page_shop       },
935:  { name = 'inventory',  draw = page_inventory  },
936:  { name = 'cards',      draw = page_cards      },
937:  { name = 'content',    draw = page_content    },
938:  { name = 'form',       draw = page_form       },
939:  { name = 'tabs',       draw = page_tabs       },
940:  { name = 'bars',       draw = page_bars       },
941:  { name = 'compose',    draw = page_compose    },
942:  { name = 'tags',       draw = page_tags       },

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

861  local function page_pause(lyr)
862   -- Top: a compact status strip.
863   ui_text({ rect = rect_new(8, 40, 18, 8), text = 'HP', color = text_muted })
864   ui_bar({ rect = rect_new(28, 40, 90, 8), value = 64, max = 100,
865            color = green })
866   ui_text({ rect = rect_new(8, 50, 18, 8), text = 'MP', color = text_muted })
867   ui_bar({ rect = rect_new(28, 51, 90, 6), fill = 0.45, color = light_blue })
868   local mini = { { red, 'F' }, { light_blue, 'I' }, { green, 'S' },
869                  { violet, 'T' } }
870   local x = 128
871   for _, m in ipairs(mini) do
872     ui_item_icon({ rect = rect_new(x, 40, 16, 16), fill = m[1],
873                    glyph = m[2] })
874     x = x + 20
875   end
876   ui_stat_chip({ x = 224, y = 42, label = 'wave', value = '7',
877                  value_color = text })
878   ui_stat_chip({ x = 286, y = 42, glyph = 'o', label = 'gold',
879                  value = '236' })
880 
881   -- Pause menu panel (left).
882   local pm = rect_new(8, 72, 200, 180)
883   ui_panel({ rect = pm })
884   ui_text({ rect = rect_new(pm.x, pm.y + 12, pm.w, 16), text = 'PAUSED',
885             font = ui_font_header_l, align_h = 'center' })
886   local pbtns = { { 'resume', 'primary' }, { 'options', 'secondary' },
887                   { 'return to town', 'secondary' }, { 'quit run', 'danger' } }
888   local by = pm.y + 42
889   for i, b in ipairs(pbtns) do
890     ui_button({ rect = rect_new(pm.x + 20, by, pm.w - 40, 24),
... [30 more lines]

Bash (grep -nE 'layer_line\b|^### layer_line' E:/a327ex/Anchor2/docs/ENGINE_API_QUICK....)

E:/a327ex/Anchor2/docs/ENGINE_API_QUICK.md:15:layer_line(layer, x1, y1, x2, y2, width, color)
E:/a327ex/Anchor2/docs/FRAMEWORK_API_QUICK.md:241:layer_line(lyr, x1, y1, x2, y2, width, color)

Let me check what the other pages need by reading them. Then I'll do a focused pass.

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

519  local function page_hud(lyr)
520   -- Top-left: HP + MP bars.
521   ui_text({ rect = rect_new(8, 42, 18, 10), text = 'HP', color = text_muted })
522   ui_bar({ rect = rect_new(28, 42, 124, 10), value = 72, max = 100,
523            color = green })
524   ui_text({ rect = rect_new(8, 56, 18, 8), text = 'MP', color = text_muted })
525   ui_bar({ rect = rect_new(28, 57, 124, 6), fill = 0.6, color = light_blue })
526 
527   -- Top-right: resource chips, laid out left-to-right.
528   local x = 300
529   local function chip(label, val, vc)
530     local r = ui_label({ x = x, y = 42, runs = {
531       { text = label .. ' ', color = text_muted },
532       { text = val, color = vc } } })
533     x = x + r.w + 6
534   end
535   chip('score', '1240', text)
536   chip('wave', '7', yellow)
537   chip('gold', '86', yellow)
538 
539   -- Top-center: an enemy / boss HP bar.
540   ui_text({ rect = rect_new(0, 60, width, 8), text = 'STONE GOLEM',
541             color = text_muted, align_h = 'center' })
542   ui_bar({ rect = rect_new(math.floor(width/2 - 80), 70, 160, 6),
543            fill = 0.85, color = red })
544 
545   -- Bottom-center: the ability slot bar with keybind captions.
546   local icons = {
547     { fill = red,    glyph = 'F' }, { fill = light_blue, glyph = 'I' },
548     { fill = green,  glyph = 'S' }, { fill = violet,     glyph = 'T' },
... [20 more lines]

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

336  local function page_bars(lyr)
337   -- 01 PROGRESS BARS — static (no id, no juice); thick + thin.
338   gallery_section_label(lyr, 8, 38, 1, 'Progress Bars')
339   ui_bar({ rect = rect_new(8, 54, 200, 12), fill = 0.72 })
340   ui_text({ rect = rect_new(214, 54, 40, 12), text = '72%', color = text_muted })
341   ui_bar({ rect = rect_new(8, 74, 200, 5), fill = 0.45, color = light_blue })
342   ui_text({ rect = rect_new(214, 73, 40, 7), text = '45%', color = text_muted })
343   ui_bar({ rect = rect_new(8, 88, 200, 12), fill = 1.0, color = yellow })
344 
345   -- 02 HEALTH BAR — interactive: damage drops it; watch the bar pop,
346   -- flash white, and the trailing chunk ease down to the new fill.
347   gallery_section_label(lyr, 8, 122, 2, 'Health Bar')
348   ui_bar({ rect = rect_new(8, 140, 220, 14), id = 'hp', color = green,
349            value = gallery_hp*100, max = 100 })
350   if ui_button({ rect = rect_new(8, 166, 66, 22), id = 'hp_dmg',
351                  label = 'damage', variant = 'danger' }).clicked then
352     gallery_hp = math.max(0, gallery_hp - 0.18)
353   end
354   if ui_button({ rect = rect_new(82, 166, 52, 22), id = 'hp_heal',
355                  label = 'heal', variant = 'primary' }).clicked then
356     gallery_hp = math.min(1, gallery_hp + 0.25)
357   end
358   if ui_button({ rect = rect_new(142, 166, 56, 22), id = 'hp_reset',
359                  label = 'reset', variant = 'secondary' }).clicked then
360     gallery_hp = 1.0
361   end
362 end
363 
364 -- ── Page: tabs ────────────────────────────────────────────────────
365 -- Active selections for the demo strips. Caller-owned, file-scope so
... [35 more lines]

Bash (grep -n 'local gallery_bg_layer|function gallery_section_label' E:/a327ex/attac...)

31:local gallery_bg_layer = layer_new('ui_gallery_bg')
39:function gallery_section_label(lyr, x, y, num, title)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now page 4 fixes — HP bar thicker + no value, fonts → Ark, dashed minimap connectors:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

935    ui_panel({ rect = mp })
936   ui_text({ rect = rect_new(mp.x + 10, mp.y + 8, 100, 10), text = 'MINIMAP',
937             color = text_muted, font = ui_font_body_ark })
938   local nodes = { { 0.15, 0.55 }, { 0.4, 0.35 }, { 0.62, 0.7 },
939                   { 0.85, 0.45 } }
940   -- Pre-compute node screen positions, draw dashed connectors first
941   -- so the node dots overlap them at the joints.
942   local pos = {}
943   for i, nd in ipairs(nodes) do
944     pos[i] = { mp.x + 14 + nd[1]*(mp.w - 34),

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

948      draw_dashed_line(lyr, pos[i][1] + 3, pos[i][2] + 3,
949                      pos[i + 1][1] + 3, pos[i + 1][2] + 3,
950                      panel_border())
951   end
952   for i, p in ipairs(pos) do
953     ui_rrect(p[1], p[2], 6, 6, 3,
954              (i == #nodes) and red or green, nil)
955   end
956 end
957 

Now widget defaults — switching ui_label, ui_tabs, ui_checkbox, ui_radio defaults to Ark per the rule.

Bash (grep -n 'opts.font or ui_font_body\b|opts.font or ui_font_body$' E:/a327ex/atta...)

E:/a327ex/attack-template/snkrx/ui/primitives.lua:162:  local font = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/primitives.lua:205:  local font  = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/widgets.lua:525:  local font = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/widgets.lua:581:  local font = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/widgets.lua:910:  local font = opts.font or ui_font_body

Bash (grep -nB1 'opts.font or ui_font_body\b' E:/a327ex/attack-template/snkrx/ui/primi...)

E:/a327ex/attack-template/snkrx/ui/primitives.lua-161-function ui_rich_text(opts)
E:/a327ex/attack-template/snkrx/ui/primitives.lua:162:  local font = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/primitives.lua-204-function ui_label(opts)
E:/a327ex/attack-template/snkrx/ui/primitives.lua:205:  local font  = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/widgets.lua:525:  local font = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/widgets.lua:581:  local font = opts.font or ui_font_body
E:/a327ex/attack-template/snkrx/ui/widgets.lua:910:  local font = opts.font or ui_font_body

Bash (grep -nE '^function ui_(checkbox|radio|text_input|tabs)' E:/a327ex/attack-templa...)

370:function ui_tabs(opts)
522:function ui_checkbox(opts)
578:function ui_radio(opts)
907:function ui_text_input(opts)

Bash (grep -nB1 -A2 'opts.font' E:/a327ex/attack-template/snkrx/ui/widgets.lua | grep ...)

---
  local rad     = opts.radius or 6
  local pad     = opts.pad or 3
  local ed      = opts.edition
  local font    = opts.font
    or (variant == 'segment' and ui_font_header_l or ui_font_body)
  local n       = #items
  local gap     = 2

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

203  ]]
204 function ui_label(opts)
205   local font  = opts.font or ui_font_body
206   local pad_x = opts.pad_x or 6
207   local pad_y = opts.pad_y or 3

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

522  function ui_checkbox(opts)
523   local r    = opts.rect
524   local id   = opts.id
525   local font = opts.font or ui_font_body
526   local ed   = opts.edition
527   local on   = opts.checked
528 
529   -- Hit region spans the indicator box plus the label.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

578  function ui_radio(opts)
579   local r    = opts.rect
580   local id   = opts.id
581   local font = opts.font or ui_font_body
582   local ed   = opts.edition
583   local on   = opts.selected
584 

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Page 5 (HUD) — HP/MP labels, boss-name label, keybind captions → Ark:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Page 12 (bars) — percentage labels → Ark:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/widget...)

snkrx/ui/primitives.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/gallery.lua OK

Wait — I changed the HUD HP bar to drop its value text too, but the user only specified the pause HP bar. Reverting HUD back to showing the value, since HUD bars usually want exact HP/100:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

gallery.lua OK

Done

Page 4 (pause):

Page 5 (HUD):

Page 12 (bars):

Widget defaults updated (cascades to every caller — these are the "individual UI element" widgets the rule covers):

Effects: chips on the HUD (score/wave/gold), tabs on inventory, checkboxes on form, etc., all flip to Ark automatically.

Flagged — want your call

  1. ui_text default: kept at Lana. It's used both for description lines (Lana, per rule) and single UI lines (should be Ark). If I switch the default to Ark, every desc/paragraph caller (tooltip body, card desc, skillset desc, inventory desc) needs an explicit font = ui_font_body override. Switch the default and add explicit Lana to desc callers, or leave default and explicitly pass Ark to single-line callers? (Currently I'm doing the latter, per-call.)
  2. ui_button default font (PixulBrush): per the rule, buttons are single UI lines → Ark. But PixulBrush was a deliberate "distinctive button font" choice (chunky brush). Keep PixulBrush as the button font's identity, or switch to Ark for consistency?
  3. gallery_section_label (the "01 BADGES" / "02 STAT CHIPS" headers atop each gallery page): currently Lana. They're single UI lines. Switch to Ark too?
  4. ui_card title font and ui_tooltip title font: both currently Awesome header_l @16 — chunky distinctive titles. Keep, or switch to Ark for consistency?
  5. Inventory detail panel & skillset detail panel desc lines: I left them as default Lana (they're description paragraphs). The type field on inventory (single word like "orb") is currently default Lana — should it be Ark? Same for stat lines that aren't ui_stat_chip?
  6. HUD HP bar value display: kept value/max text. Want me to drop it like the pause one and make HP a plain bar with no text?

Pages 6 / 7 / 8 / 9 / 10 / 11 / 13 / 14 / 15 / 16 / 17 weren't explicitly edited because the changes I'm sure about (widget defaults) already propagate to them, and any further per-page font swaps depend on your answers above. Once you weigh in I'll sweep them.

stat chips failed to propagate, their rule was always capitalized, they're not after page 4. HP values on page 5 need to go down 1 pixel, the general SLOT + ICON construct, where there's a slot and an icon inside it, currently the icon is smaller which leaves a border of 1-2 pixels from the slot, let's make it so that the icon is always the same size as the slot, so when the slot is filled it's just as though it were a button with the icon with nothing around it. Such elements are present in page 3, 5, 7, 13, 16. Cards on page 6 still have 1 pixel border, shouldn't be the case. We should find another way to make it visible that one card is selected versus another, I don't know how though. But maybe something that's visually similar to the solution we have in page 3. Juice on the cards is too abrupt and odd, is the way things are juice across the board the same in terms of the spring pulls? We want springs that feel softer and less aggressive in general. The buttons are for the most part fine, but on bigger elements like the cards it seems odd. The tabs we have on page 7 look odd now with the awesome font, let's try the Ark font there too, all caps. Selection of inventory items with the full green border is a no-go in that same page, we need a new general way of showing selection when elements are in a grid. In a vertical/horizontal line we what we did in page 3, but in a grid we might need something else, don't know what though. Page 8 same problems with the cards. Page 9 is all ok. Page 10 has all elements (Except slider) with 1 pixel borders, those need to go. Page 11 has tabs, same change as in the other page that also had tabs, you can remove the SEGMENTS elements entirely. Text on health bar in page 12 can also go 1 pixel down. stat chips in page 13 need to have the all caps change to them too, we already decided that stat chips will be all caps Ark, so you can remove the ones with pixul on page 14. Buttons will use pixul, can remove the other 2 fonts entirely on page 15. Page 16 contains everything we already talked about from other pages that also needs changing, page 17 whatever.

Big batch — let me work through this systematically. First, let me investigate a few things before coding.

Bash (grep -nE '^### spring_new|^### spring_add|^### spring_pull' E:/a327ex/Anchor2/do...)

---
grep: Unmatched ( or \(

Bash (grep -nE 'spring_new|spring_add|spring_pull|spring_update' E:/a327ex/Anchor2/doc...)

545:spring at value 1 is created by `spring_new()`.
548:spring_new() -> s                             -- auto-adds 'main' at x=1
549:spring_add(s, name, x?, frequency?, bounce?)  -- frequency default 5, bounce default 0.5
550:spring_pull(s, name, force, frequency?, bounce?)
553:spring_update(s, dt)

Read (E:/a327ex/attack-template/anchor/spring.lua)

1    --[[
2     spring — procedural damped spring animation.
3   
4     Usage:
5       self.spring = spring_new()                       -- in constructor
6       spring_add(self.spring, 'scale', 1, 5, 0.5)      -- name, initial value, frequency, bounce
7       spring_pull(self.spring, 'scale', 0.3)           -- apply impulse
8       spring_update(self.spring, dt)                   -- in update
9   
10      -- Read current value:
11      local s = self.spring.scale.x
12  
13    A default 'main' spring at value 1 is created on spring_new() for convenience.
14    You typically use spring.main.x as a single pulsing value for hit flashes,
15    click feedback, etc.
16  
17    Spring parameters:
18      frequency - oscillations per second (higher = faster)
19      bounce    - bounciness 0-1 (0=no overshoot, 1=infinite oscillation)
20      bounce=0.5 is moderate overshoot, common for hit reactions.
21  ]]
22  
23  --[[
24    spring_new()
25    Creates a new spring container with a default 'main' spring at value 1.
26  ]]
27  function spring_new()
28    local s = {
29      _names = {},
30    }
... [30 more lines]

Read (E:/a327ex/attack-template/anchor/spring.lua)

58   --[[
59    spring_pull(s, name, force, [frequency], [bounce])
60    Applies an impulse to a named spring. Optionally updates frequency/bounce.
61    This is the "jolt" operation used for hit reactions.
62  ]]
63  function spring_pull(s, name, force, frequency, bounce)
64    local sp = s[name]
65    if not sp then return end
66    if frequency then
67      sp.k = (2*math.pi*frequency)^2
68      sp.d = 4*math.pi*(1 - (bounce or 0.5))*frequency
69    end
70    sp.x = sp.x + force
71  end
72  
73  --[[
74    spring_set_target(s, name, value)
75    Changes where the named spring settles.
76  ]]
77  function spring_set_target(s, name, value)
78    if s[name] then s[name].target_x = value end
79  end
80  
81  --[[
82    spring_at_rest(s, name, [threshold])

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

671  }
672 
673 local function page_inventory(lyr)
674   -- Section tabs.
675   local tabs = ui_tabs({ rect = rect_new(8, 40, 200, 22), id = 'inv_tabs',
676     items = { 'items', 'orbs', 'relics' }, active = gallery_inv_tab,
677     font = ui_font_pixul })
678   if tabs.clicked then gallery_inv_tab = tabs.clicked end
679 
680   -- Left: a 5x4 item grid.

Let me check stat-chip-like usages across pages and read the pages I haven't seen:

Bash (grep -n 'ui_stat_chip|ui_label.runs.color = ' E:/a327ex/attack-template/snkrx...)

724:-- ── Page: badges (ui_bracket_tag / ui_stat_chip / ui_pips) ───────
780:    x = x + ui_stat_chip({ x = x, y = 136, label = c[1], value = c[2],
866:  ui_stat_chip({ x = px, y = py + 62, glyph = '*', label = 'damage',
868:  ui_stat_chip({ x = px + 96, y = py + 62, label = 'cooldown',
903:  ui_stat_chip({ x = 224, y = 42, label = 'wave', value = '7',
905:  ui_stat_chip({ x = 286, y = 42, glyph = 'o', label = 'gold',

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

117  
118   y = y + 4
119   local ar = rect_new(8, y, 200, 38)
120   ui_panel({ rect = ar })
121   local arows = rect_split_v(rect_contract(ar, 3), 3)
122   ui_text({ rect = arows[1], text = 'left',   align_h = 'left'   })
123   ui_text({ rect = arows[2], text = 'center', align_h = 'center' })
124   ui_text({ rect = arows[3], text = 'right',  align_h = 'right'  })
125   y = y + 38 + 10
126 
127   -- 03 DIVIDER — horizontal + vertical.
128   gallery_section_label(lyr, 8, y, 3, 'Divider')
129   y = y + 14
130   ui_divider({ rect = rect_new(8, y + 6, 220, 1) })
131   ui_divider({ rect = rect_new(244, y, 1, 28), orient = 'v' })
132 end
133 
134 -- ── Page: composition demo ────────────────────────────────────────
135 -- A shop screen composed from EVERY element built so far — panel,
136 -- text, divider, item_icon, slot, button, rich_text, label.
137 local function page_compose(lyr)
138   -- Top bar: gold label · SHOP title · level label · underline.
139   ui_label({ x = 8, y = 40, runs = {
140     { text = 'gold ', color = text_muted }, { text = '26', color = yellow } } })
141   ui_text({ rect = rect_new(0, 40, width, 16), text = 'SHOP',
142             font = ui_font_header_l, align_h = 'center' })
143   local lw = ui_font_body:text_width('level 7') + 12
144   ui_label({ x = width - 8 - lw, y = 40, runs = {
145     { text = 'level ', color = text_muted }, { text = '7', color = yellow } } })
146   ui_divider({ rect = rect_new(8, 62, width - 16, 1) })
... [45 more lines]

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

301              color = text_muted })
302   button_row(64, ui_font_header_l, 'awe_')
303 
304   ui_text({ rect = rect_new(8, 92, 200, 10), text = 'PixulBrush',
305             color = text_muted })
306   button_row(104, ui_font_pixul, 'pix_')
307 
308   ui_text({ rect = rect_new(8, 132, 200, 10), text = 'body font',
309             color = text_muted })
310   button_row(144, ui_font_body, 'bod_')
311 
312   ui_text({ rect = rect_new(8, 176, 320, 12), color = text_muted,
313             text = 'last clicked:  ' .. gallery_btn_log })
314 
315   gallery_section_label(lyr, 8, 196, 2, 'Disabled')
316   ui_button({ rect = rect_new(8, 210, 80, 22), label = 'locked',
317               variant = 'primary', disabled = true })
318 end
319 
320 -- ── Page: rich text & labels ──────────────────────────────────────
321 local function page_tags(lyr)
322   -- A small muted caption naming the font a row is drawn in.
323   local function caption(y, s)
324     ui_text({ rect = rect_new(8, y, 48, 14), text = s, color = text_muted })
325   end
326 
327   -- 01 RICH TEXT — the metadata motif: PixulBrush words with the [ ]
328   -- glyphs in Awesome (see meta_runs). Shown left-aligned and centered.
329   gallery_section_label(lyr, 8, 38, 1, 'Rich Text')
330   ui_rich_text({ x = 8, y = 56, runs = meta_runs, font = ui_font_pixul })
... [10 more lines]

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

340      r = ui_label({ x = x, y = y, font = font, runs = {
341       { text = 'level ', color = text_muted }, { text = '7', color = yellow } } })
342     x = x + r.w + 8
343     ui_label({ x = x, y = y, font = font, runs = {
344       { text = 'gold ', color = text_muted }, { text = '26', color = yellow } } })
345   end
346   caption(124, 'body')
347   label_row(120, ui_font_body)
348   caption(152, 'pixul')
349   label_row(148, ui_font_pixul)
350 end
351 
352 -- ── Page: bars ────────────────────────────────────────────────────
353 -- Current health fraction for the interactive demo. Caller-owned.
354 local gallery_hp = 1.0
355 
356 local function page_bars(lyr)
357   -- 01 PROGRESS BARS — static (no id, no juice); thick + thin.
358   gallery_section_label(lyr, 8, 38, 1, 'Progress Bars')
359   ui_bar({ rect = rect_new(8, 54, 200, 12), fill = 0.72 })
360   ui_text({ rect = rect_new(214, 54, 40, 12), text = '72%', color = text_muted,
361             font = ui_font_body_ark })
362   ui_bar({ rect = rect_new(8, 74, 200, 5), fill = 0.45, color = light_blue })
363   ui_text({ rect = rect_new(214, 73, 40, 7), text = '45%', color = text_muted,
364             font = ui_font_body_ark })
365   ui_bar({ rect = rect_new(8, 88, 200, 12), fill = 1.0, color = yellow })
366 
367   -- 02 HEALTH BAR — interactive: damage drops it; watch the bar pop,
368   -- flash white, and the trailing chunk ease down to the new fill.
369   gallery_section_label(lyr, 8, 122, 2, 'Health Bar')

Big batch. Let me work through widget-level changes first, then per-page.

Bash (grep -nE 'opts.icon_pad|opts.icon\b' E:/a327ex/attack-template/snkrx/ui/widgets....)

117:  if opts.icon then
118:    local pad = opts.icon_pad or 2
120:                   fill = opts.icon.fill, glyph = opts.icon.glyph,
121:                   glyph_font = opts.icon.glyph_font,
122:                   glyph_color = opts.icon.glyph_color, edition = ed })
842:  if opts.icon then
844:                   fill = opts.icon.fill, glyph = opts.icon.glyph,
845:                   glyph_font = opts.icon.glyph_font, edition = ed })

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

95         ui_state.active_id = nil
96      end
97    end
98    if id then ui_juice_hover(id, hovered) end
99  
100   -- Scale-spring bounce around the slot center.
101   local s = (id and not opts.disabled) and ui_juice_scale(id) or 1
102   layer_push(ui_layer, r.x + r.w/2, r.y + r.h/2, 0, s, s)
103   local lr = { x = -r.w/2, y = -r.h/2, w = r.w, h = r.h }
104 
105   -- Chrome — no default border (the shadow gives chrome thickness);
106   -- selected still draws a 2px green border (thick enough to satisfy
107   -- the "no thin borders" rule). Hover is now indicated by the
108   -- scale-pop juice alone.
109   if opts.selected then
110     ui_panel({ rect = lr, bg = slot_fill, border = green,
111                border_width = 2, radius = rad, edition = ed })
112   else
113     ui_panel({ rect = lr, bg = slot_fill, radius = rad, edition = ed })
114   end
115 
116   -- Occupancy.
117   if opts.icon then
118     local pad = opts.icon_pad or 2
119     ui_item_icon({ rect = rect_contract(lr, pad),
120                    fill = opts.icon.fill, glyph = opts.icon.glyph,
121                    glyph_font = opts.icon.glyph_font,
122                    glyph_color = opts.icon.glyph_color, edition = ed })
123   end
124 
... [25 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now ui_card — drop the border, add top stripe for selected:

Bash (grep -nE 'function ui_card|opts.selected.+border|ui_panel.+border' E:/a327ex/att...)

808:function ui_card(opts)
838:  if     opts.selected then border = green
841:  ui_panel({ rect = lr, border = border, radius = 4, edition = ed })

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

832    local s = (id and ui_juice_scale(id)) or 1
833   layer_push(ui_layer, r.x + r.w/2, r.y + r.h/2, 0, s, s)
834   local lr = { x = -r.w/2, y = -r.h/2, w = r.w, h = r.h }
835 
836   -- Chrome: border by state.
837   local border = panel_border
838   if     opts.selected then border = green
839   elseif hovered       then border = grey
840   end
841   ui_panel({ rect = lr, border = border, radius = 4, edition = ed })
842 
843   -- Icon tile, centered horizontally near the top.
844   local isz = opts.icon_size or 40
845   if opts.icon then
846     ui_item_icon({ rect = { x = -isz/2, y = lr.y + pad, w = isz, h = isz },
847                    fill = opts.icon.fill, glyph = opts.icon.glyph,
848                    glyph_font = opts.icon.glyph_font, edition = ed })
849   end
850 
851   -- Title, centered, below the icon.
852   local ty = lr.y + pad + isz + 6
853   ui_text({ rect = { x = lr.x, y = ty, w = lr.w, h = ui_font_header_l.height },
854             text = opts.title, font = ui_font_header_l,
855             color = opts.title_color or text, align_h = 'center',
856             align_v = 'top', edition = ed })

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now ui_checkbox / ui_radio — drop off-state border outlines:

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

555    -- Label, to the right (drawn outside the scale push).
556   if opts.label then
557     ui_text({ rect = { x = r.x + r.w + 6, y = r.y, w = lw + 4, h = r.h },
558               text = opts.label, font = font, color = text,
559               align_v = 'center', edition = ed })
560   end
561 
562   return { checked = checked, clicked = clicked }
563 end
564 
565 --[[
566   ui_radio(opts) -> { selected, clicked }
567 
568   One radio button: a circular indicator + an optional label, the whole
569   row clickable, with the SNKRX juice. The caller places each radio of

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

540  
541   -- Indicator — scale-popped around the box center.
542   local s = (id and ui_juice_scale(id)) or 1
543   layer_push(ui_layer, r.x + r.w/2, r.y + r.h/2, 0, s, s)
544   local lc = { x = -r.w/2, y = -r.h/2, w = r.w, h = r.h }
545   if on then
546     ui_rrect(lc.x, lc.y, lc.w, lc.h, 3, green, ed)
547     draw_checkmark(lc.w, lc.h, text, ed)
548   else
549     ui_rrect(lc.x, lc.y, lc.w, lc.h, 3,
550       hovered and grey or panel_border, ed)
551     ui_rrect(lc.x + 1, lc.y + 1, lc.w - 2, lc.h - 2, 2, charcoal, ed)
552   end
553   layer_pop(ui_layer)
554 

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

595    local s = (id and ui_juice_scale(id)) or 1
596   layer_push(ui_layer, r.x + r.w/2, r.y + r.h/2, 0, s, s)
597   local lc = { x = -r.w/2, y = -r.h/2, w = r.w, h = r.h }
598   -- Circle = border ring + charcoal interior (radius = side/2).
599   ui_rrect(lc.x, lc.y, lc.w, lc.h, lc.w/2,
600     hovered and grey or panel_border, ed)
601   ui_rrect(lc.x + 1, lc.y + 1, lc.w - 2, lc.h - 2, (lc.w - 2)/2,
602     charcoal, ed)
603   if on then
604     local d = math.floor(lc.w*0.45 + 0.5)
605     ui_rrect(-d/2, -d/2, d, d, d/2, green, ed)
606   end
607   layer_pop(ui_layer)
608 
609   if opts.label then
610     ui_text({ rect = { x = r.x + r.w + 6, y = r.y, w = lw + 4, h = r.h },
611               text = opts.label, font = font, color = text,
612               align_v = 'center', edition = ed })
613   end
614 
615   return { selected = clicked or on, clicked = clicked }
616 end

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now ui_text_input — drop border:

Bash (grep -n 'function ui_text_input|border = panel_border|border = green|border =...)

910:function ui_text_input(opts)
945:  local border = panel_border
946:  if     focused then border = green
947:  elseif hovered then border = grey
949:  ui_rrect(r.x, r.y, r.w, r.h, 4, border, ed)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

942    end
943 
944   -- Chrome — charcoal field, border by state.
945   local border = panel_border
946   if     focused then border = green
947   elseif hovered then border = grey
948   end
949   ui_rrect(r.x, r.y, r.w, r.h, 4, border, ed)
950   ui_rrect(r.x + 1, r.y + 1, r.w - 2, r.h - 2, 3, charcoal, ed)
951 
952   -- Content + caret, stencil-clipped to the field interior.
953   local inner_x, inner_w = r.x + pad, r.w - 2*pad

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now softer springs in juice.lua:

Read (E:/a327ex/attack-template/snkrx/ui/juice.lua)

35   
36  -- HP bar tween tuning (seconds). The front bar snaps fast toward the
37  -- current HP; the back bar waits out the delay then eases slowly down;
38  -- the value text counts down on its own ease.
39  local BAR_FRONT_DUR  = 0.18
40  local BAR_BACK_DELAY = 0.15
41  local BAR_BACK_DUR   = 0.5
42  local BAR_VALUE_DUR  = 0.35
43  
44  -- The "cash-register kick" (Emoji Aimer's gold chip): on damage the
45  -- whole bar drops BAR_KICK px instantly, then returns linearly to 0.
46  local BAR_KICK     = 4
47  local BAR_KICK_DUR = 0.25
48  
49  local function entry(id)

Bash (sed -n '49,58p' E:/a327ex/attack-template/snkrx/ui/juice.lua)

local function entry(id)
  local e = ui_juice[id]
  if not e then
    e = { spring = spring_new(), was_hovered = false }
    ui_juice[id] = e
  end
  return e
end

-- Tick every spring + the shared HP bar scheduler. Call once per frame

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now ui_bar value text shift down 1px:

Bash (grep -n 'opts.max then|text = math.floor' E:/a327ex/attack-template/snkrx/ui/wi...)

316:  if opts.max then
341:  if opts.max then
343:              text = math.floor((shown_v or 0) + 0.5) .. ' / ' .. opts.max })

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

339  
340   -- Centered value text — health mode only (counts down via shown_v).
341   if opts.max then
342     ui_text({ rect = dr, align_h = 'center', color = text, edition = ed,
343               text = math.floor((shown_v or 0) + 0.5) .. ' / ' .. opts.max })
344   end
345 end

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now page changes — HUD chips → ui_stat_chip:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Inventory tabs — uppercased + drop pixul override:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Tabs page — uppercase + drop pixul override + remove segments:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Buttons page — keep only PixulBrush row:

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

293  end
294 
295 local function page_buttons(lyr)
296   gallery_section_label(lyr, 8, 38, 1, 'Buttons')
297 
298   -- The same buttons in three fonts — Awesome / PixulBrush / body
299   -- (B flips the body row between LanaPixel and Ark Pixel).
300   ui_text({ rect = rect_new(8, 52, 200, 10), text = 'Awesome',
301             color = text_muted })
302   button_row(64, ui_font_header_l, 'awe_')
303 
304   ui_text({ rect = rect_new(8, 92, 200, 10), text = 'PixulBrush',
305             color = text_muted })
306   button_row(104, ui_font_pixul, 'pix_')
307 
308   ui_text({ rect = rect_new(8, 132, 200, 10), text = 'body font',
309             color = text_muted })
310   button_row(144, ui_font_body, 'bod_')
311 
312   ui_text({ rect = rect_new(8, 176, 320, 12), color = text_muted,
313             text = 'last clicked:  ' .. gallery_btn_log })
314 
315   gallery_section_label(lyr, 8, 196, 2, 'Disabled')
316   ui_button({ rect = rect_new(8, 210, 80, 22), label = 'locked',
317               variant = 'primary', disabled = true })
318 end
319 

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Tags page — remove the PixulBrush label row:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Compose page — replace ui_label stat-chip-like calls with ui_stat_chip:

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/primitives.lua snkrx/ui/widget...)

snkrx/ui/primitives.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/juice.lua OK
snkrx/ui/gallery.lua OK

All clean. Here's everything in this pass:

Widget-level changes (cascade to all callers)

Per-page changes

Things to flag

  1. Inventory grid selection: I went with the same top stripe for ui_slot selected, on the theory that the page-3 vertical-stripe-on-the-side has a natural horizontal analog (top stripe on the cell). It might still feel cramped on a 4×5 grid where every selection shifts visual weight to the top edge. If you want something more grid-native (corner triangle marker, brighter cell fill, raised cell, etc.), say so.
  2. Cards selection: same top-stripe treatment. The card is wide enough that a 3px green bar across the top reads as a tab-style "active" marker. If you'd rather it be the bottom edge (underline-style) or something else, easy to swap.
  3. ui_text_input focus: now caret-only. If that feels too quiet (the field doesn't visibly change when focused, only the caret appears), I can add a small thick (2px) green left stripe when focused — same idiom as the page-3 selection.
  4. Stat chip text: ui_stat_chip auto-uppercases label + value. I noticed the page-13 compose page hardcoded 'gold' as the value — should the chip's value sometimes stay original-case (e.g., for labels that are already words, or proper-noun values)? Right now everything in a chip goes through :upper(). Could exempt the value if it's a non-numeric string.
  5. HUD HP bar text shift: applied via the global ui_bar +1 y. Should look right on page 5 (h=10 bar) and page 12 (h=14 bar). If page 12's text now sits TOO low, the +1 might need to apply only when bar h is below some threshold.

Tell me where to tune.

Let's have the green selection thing be on the bottom right corner, like the green thing is like a line on the bottom right corner of the element, make sure that it's rounded like the element too, and make sure that it's another color when the element is green, otherwise it isn't visible. Juice amount (intensity) should be lower based on the area of the element, bigger area = lower intensity.

Two pieces — selection corner-marker, and area-scaled juice. Doing both in one pass.

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/juice.lua)

75     end
76    return e
77  end
78  
79  -- Tick every spring + the shared HP bar scheduler. Call once per frame
80  -- before widgets draw.
81  function ui_juice_update(dt)
82    for _, e in pairs(ui_juice) do
83      spring_update(e.spring, dt)
84    end
85    timer_update(ui_timer, dt)
86  end
87  
88  -- Current scale for widget `id` — 1 at rest, bounces after a pull.
89  function ui_juice_scale(id)
90    return entry(id).spring.main.x
91  end
92  
93  -- Kick the widget's spring (a bounce). force defaults to 0.2.
94  function ui_juice_pull(id, force)
95    spring_pull(entry(id).spring, 'main', force or 0.2)
96  end
97  
98  -- Feed this frame's hover state. On the hover-enter edge (was false,
99  -- now true) it bounces the spring and plays the SNKRX hover sound,
100 -- pitch-jittered so repeats don't sound mechanical.
101 --
102 -- SNKRX has two hover sounds: clickable elements layer the click 'pop'
103 -- over the bamboo; hover-only (non-clickable) elements get the bamboo
104 -- alone. `clickable` defaults to true — pass false for the latter. No
... [5 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now update all widget call sites to pass their rect for area scaling:

Bash (grep -n 'ui_juice_pull|ui_juice_hover' E:/a327ex/attack-template/snkrx/ui/widge...)

91:      ui_juice_pull(id, 0.15)
98:  if id then ui_juice_hover(id, hovered) end
221:      ui_juice_pull(id, 0.2)
228:  if id then ui_juice_hover(id, hovered) end
416:        ui_juice_pull(cid, 0.2)
422:      ui_juice_hover(cid, hovered)
472:      ui_juice_pull(id, 0.2)
478:    ui_juice_hover(id, hovered)
662:      ui_juice_pull(id, 0.2)
669:    ui_juice_hover(id, hovered)
738:    ui_juice_hover(id, hovered)   -- hover sound only; scale unused
824:      ui_juice_pull(id, 0.15)
830:    ui_juice_hover(id, hovered)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

85     if id and not opts.disabled then
86      ui_claim_hot(id, r)
87      hovered = ui_is_hot(id)
88      if hovered and mouse_is_pressed(1) then
89        ui_state.active_id = id
90        ui_state.focus_id  = id
91        ui_juice_pull(id, 0.15)
92      end
93      if ui_state.active_id == id and mouse_is_released(1) then
94        if hovered then clicked = true end
95        ui_state.active_id = nil
96      end
97    end
98    if id then ui_juice_hover(id, hovered) end
99  

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

215    if id and not opts.disabled then
216     ui_claim_hot(id, r)
217     hovered = ui_is_hot(id)
218     if hovered and mouse_is_pressed(1) then
219       ui_state.active_id = id
220       ui_state.focus_id  = id
221       ui_juice_pull(id, 0.2)
222     end
223     if ui_state.active_id == id and mouse_is_released(1) then
224       if hovered then clicked = true end
225       ui_state.active_id = nil
226     end
227   end
228   if id then ui_juice_hover(id, hovered) end
229 
230   -- Scale-spring bounce around the center.
231   local s = (id and not opts.disabled) and ui_juice_scale(id) or 1

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

410      if cid then
411       ui_claim_hot(cid, cell)
412       hovered = ui_is_hot(cid)
413       if hovered and mouse_is_pressed(1) then
414         ui_state.active_id = cid
415         ui_state.focus_id  = cid
416         ui_juice_pull(cid, 0.2)
417       end
418       if ui_state.active_id == cid and mouse_is_released(1) then
419         if hovered then clicked = i end
420         ui_state.active_id = nil
421       end
422       ui_juice_hover(cid, hovered)
423     end
424 

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

464  local function form_control_interact(id, hit)
465   local hovered, clicked = false, false
466   if id then
467     ui_claim_hot(id, hit)
468     hovered = ui_is_hot(id)
469     if hovered and mouse_is_pressed(1) then
470       ui_state.active_id = id
471       ui_state.focus_id  = id
472       ui_juice_pull(id, 0.2)
473     end
474     if ui_state.active_id == id and mouse_is_released(1) then
475       if hovered then clicked = true end
476       ui_state.active_id = nil
477     end
478     ui_juice_hover(id, hovered)
479   end
480   return hovered, clicked

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

655    local hovered = false
656   if id then
657     ui_claim_hot(id, r)
658     hovered = ui_is_hot(id)
659     if hovered and mouse_is_pressed(1) then
660       ui_state.active_id = id
661       ui_state.focus_id  = id
662       ui_juice_pull(id, 0.2)
663     end
664     if ui_state.active_id == id then
665       local mx = mouse_position()
666       value = math.clamp((mx - r.x - knob_r)/travel, 0, 1)
667       if mouse_is_released(1) then ui_state.active_id = nil end
668     end
669     ui_juice_hover(id, hovered)
670   end
671 
672   local cy      = math.floor(r.y + r.h/2 + 0.5)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

734      if ui_state.active_id == id and mouse_is_released(1) then
735       if hovered then clicked = true end
736       ui_state.active_id = nil
737     end
738     ui_juice_hover(id, hovered)   -- hover sound only; scale unused
739   end
740 
741   -- Background: header / hover / selected all get the charcoal fill.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

818    if id then
819     ui_claim_hot(id, r)
820     hovered = ui_is_hot(id)
821     if hovered and mouse_is_pressed(1) then
822       ui_state.active_id = id
823       ui_state.focus_id  = id
824       ui_juice_pull(id, 0.15)
825     end
826     if ui_state.active_id == id and mouse_is_released(1) then
827       if hovered then clicked = true end
828       ui_state.active_id = nil
829     end
830     ui_juice_hover(id, hovered)
831   end
832 
833   -- Scale-spring bounce around the card center.
834   local s = (id and ui_juice_scale(id)) or 1

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the corner-marker selection — bottom-right rounded accent that matches the element's corner curve.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/juice.lua snkrx/ui/widgets.lua...)

snkrx/ui/juice.lua OK
snkrx/ui/widgets.lua OK

Done.

Selection corner-marker (replaces top stripe on both ui_slot and ui_card):

Area-scaled juice:

Effect: a ~144×180 card now pulls at 30% of a slot's intensity. A button at ~60×22 pulls at ~83%. Cards should feel decisively softer.

To check:

The corner thing you added is a small rect, I meant it should be a line following the edge of the element, like the corner of the area attack objects.

Let me look at how the area attack corner brackets are drawn.

Bash (grep -n 'corner_brackets|bracket|corner' E:/a327ex/attack-template/snkrx/area....)

7:    'rect'    + jagged=false:  filled rect + bracket corners
146:  self.corner_brackets = args.corner_brackets or false
402:    -- Smooth rect: filled rect + bracket corners.
406:    local bracket = math.min(w, h)*0.1
410:    layer_line(layer, -hw, -hh, -hw + bracket, -hh, 2, c)
411:    layer_line(layer, -hw, -hh, -hw, -hh + bracket, 2, c)
412:    layer_line(layer,  hw, -hh,  hw - bracket, -hh, 2, c)
413:    layer_line(layer,  hw, -hh,  hw, -hh + bracket, 2, c)
414:    layer_line(layer, -hw,  hh, -hw + bracket,  hh, 2, c)
415:    layer_line(layer, -hw,  hh, -hw,  hh - bracket, 2, c)
416:    layer_line(layer,  hw,  hh,  hw - bracket,  hh, 2, c)
417:    layer_line(layer,  hw,  hh,  hw,  hh - bracket, 2, c)
439:    if self.corner_brackets then
440:      -- Per-vertex bracket marks: two short line segments at each
442:      -- Mirrors the smooth-rect bracket style applied to N-gons.

Read (E:/a327ex/attack-template/snkrx/area.lua)

400  
401   elseif self.shape == 'rect' and not self.jagged then
402     -- Smooth rect: filled rect + bracket corners.
403     local w = r*2
404     local h = (self.rect_h or self.visual_radius)*2*s
405     local hw, hh = w/2, h/2
406     local bracket = math.min(w, h)*0.1
407 
408     layer_push(layer, self.x, self.y, self.r, 1, 1)
409     layer_rectangle(layer, -hw, -hh, w, h, self.fill_color())
410     layer_line(layer, -hw, -hh, -hw + bracket, -hh, 2, c)
411     layer_line(layer, -hw, -hh, -hw, -hh + bracket, 2, c)
412     layer_line(layer,  hw, -hh,  hw - bracket, -hh, 2, c)
413     layer_line(layer,  hw, -hh,  hw, -hh + bracket, 2, c)
414     layer_line(layer, -hw,  hh, -hw + bracket,  hh, 2, c)
415     layer_line(layer, -hw,  hh, -hw,  hh - bracket, 2, c)
416     layer_line(layer,  hw,  hh,  hw - bracket,  hh, 2, c)
417     layer_line(layer,  hw,  hh,  hw,  hh - bracket, 2, c)
418     layer_pop(layer)
419 
420   else
421     -- Vertex-driven shapes: jagged circle, jagged rect, polygon (smooth or jagged).
422     -- All draw a fill + polygon outline. Rect is non-radial so it uses
423     -- triangle fan from center; circle and polygon use a cheap radial
424     -- disc fill at 0.85r (matches v1).

Got it — an L-bracket following the edge, with the corner curving along the element's rounded corner. Replacing the rect marker with that.

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

30   end
31  
32  --[[
33    draw_drag_target(r, kind, override)
34  
35    The drag-target overlay: a semi-transparent colored wash drawn ON
36    TOP of the slot chrome (and any icon / lock glyph). The slot still
37    reads as itself, but it's clearly tinted green / orange / red to
38    indicate valid / partial / invalid. Replaces the old dashed-ring
39    border, which violated the "no thin borders" rule.
40  ]]
41  local function draw_drag_target(r, kind, override)
42    local col = green
43    if     kind == 'invalid' then col = red
44    elseif kind == 'partial' then col = orange
45    end
46    edition_set(ui_layer, ui_edition_for(col, override),
47                ui_field_scale, ui_dither)
48    layer_rounded_rectangle(ui_layer, r.x, r.y, r.w, r.h, 3,
49                            with_alpha(col, 130)())
50    edition_clear(ui_layer)
51  end
52  
53  --[[
54    ui_slot(opts) -> { hovered, clicked }
55  
56    The square slot — inventory cells, equipment slots, orb sockets.
57  
58    opts:
59      rect       {x, y, w, h}
... [5 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now swap the rect markers in ui_slot and ui_card to use the bracket:

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

widgets.lua OK

Done. The selected marker is now a draw_corner_bracket — two straight layer_line arms (one along the bottom edge, one along the right edge) joined by a layer_line-polyline quarter-arc that follows the element's rad corner curve. Same idea as snkrx/area.lua's corner_brackets on a smooth rect, but adapted to follow a rounded corner instead of meeting at a sharp 90°.

Per-element arm lengths:

Thickness 2 everywhere. Color logic unchanged (green default, flips to text if the element's primary color is green).

To check: F4 → page 7 (inventory) — a selected grid slot should show an L-bracket hugging the bottom-right. Same on page 6/8 cards (selected card → bottom-right bracket). For a green-themed item (iron blade fill, twin-shot card title), the bracket should appear in light text color so it's visible against the green.

Hm, let's try a little square on the top-left, with a small margin so it's not touching the edges.

[Request interrupted by user]

Hm, let's try a little square on the top-left, with a small margin so it's not touching the edges. Blue color for green one, and the color should change only on elements where the green element takes over entirely, like in inventory slots, for the cards it can remain green when the color of the element is green.

Switching to a small top-left square marker with margin. Removing the now-unused corner-bracket helper.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

widgets.lua OK

Done.

Let's just try 2 pixel border for the cards, 1 pixel border for the inventory slots. Like it was before.

Switching back to border-based selection — 1px green border for slots, 2px green border for cards. Dropping the top-left square markers.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

<tool_use_error>String to replace not found in file.
String:   -- Chrome — no default border (the shadow gives chrome thickness);
  -- selected still draws a 2px green border (thick enough to satisfy
  -- the "no thin borders" rule). Hover is now indicated by the
  -- scale-pop juice alone.
  if opts.selected then
    ui_panel({ rect = lr, bg = slot_fill, border = green,
               border_width = 2, radius = rad, edition = ed })
  else
    ui_panel({ rect = lr, bg = slot_fill, radius = rad, edition = ed })
  end
(note: Edit also tried swapping \uXXXX escapes and their characters; neither form matched, so the mismatch is likely elsewhere in old_string. Re-read the file and copy the exact surrounding text.)</tool_use_error>

Bash (grep -n 'opts.selected|border = green|ui_rrect.green.ed' E:/a327ex/attack-te...)

145:  if opts.selected then
436:      ui_rrect(lc.x, lc.y, lc.w, lc.h, cell_rad, green, ed)
553:    ui_rrect(lc.x, lc.y, lc.w, lc.h, 3, green, ed)
586:  Returns `clicked` and `selected` (= clicked or opts.selected).
593:  local on   = opts.selected
610:    ui_rrect(-d/2, -d/2, d, d, d/2, green, ed)
683:    ui_rrect(r.x, cy - track_h/2, fill_w, track_h, trad, green, ed)
689:  ui_rrect(-knob_r, -knob_r, knob_d, knob_d, knob_r, green, ed)
745:  if header or hovered or opts.selected then
748:  if opts.selected and not header then
848:  if opts.selected then
849:    ui_rrect(lr.x + 5, lr.y + 5, 6, 6, 1, green, ed)
885:    ui_rrect(fx, fy, fw, fh, 3, f.color or green, ed)

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

142    -- so it doesn't touch the edges. The icon fills the slot entirely,
143   -- so when its fill is green the marker would vanish — flip to blue
144   -- in that case.
145   if opts.selected then
146     local primary = (opts.icon and opts.icon.fill) or slot_fill
147     local mc     = (primary == green) and blue or green
148     ui_rrect(lr.x + 3, lr.y + 3, 5, 5, 1, mc, ed)
149   end
150 
151   layer_pop(ui_layer)
152   return { hovered = hovered, clicked = clicked }
153 end
154 
155 --[[
156   ui_button(opts) -> { hovered, clicked, x, y, w, h }
157 
158   A SNKRX-style button: a flat rounded rect that bounces on a scale
159   spring (hover-enter + click), plays the layered hover sounds, and
160   inverts to near-white on hover.
161 

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

122    if opts.locked then
123     ui_text({ rect = lr, text = opts.lock_glyph or 'L',
124               font = ui_font_header_l, color = text_muted,
125               align_h = 'center', align_v = 'center', edition = ed })
126   end
127 
128   -- Disabled: dim the whole slot toward the bg (a flat overlay, drawn
129   -- raw — it's a translucent dimmer, not a normal coloured element).
130   if opts.disabled then
131     layer_rounded_rectangle(ui_layer, lr.x, lr.y, lr.w, lr.h, rad,
132       with_alpha(bg, 150)())
133   end
134 
135   -- Drag-target overlay, on top of everything.
136   if opts.target == 'valid' or opts.target == 'invalid'
137      or opts.target == 'partial' then
138     draw_drag_target(lr, opts.target, ed)
139   end
140 
141   -- Selected: a small square pinned to the top-left, with a margin
142   -- so it doesn't touch the edges. The icon fills the slot entirely,
143   -- so when its fill is green the marker would vanish — flip to blue
144   -- in that case.
145   if opts.selected then
146     local primary = (opts.icon and opts.icon.fill) or slot_fill
147     local mc     = (primary == green) and blue or green
148     ui_rrect(lr.x + 3, lr.y + 3, 5, 5, 1, mc, ed)
149   end

Bash (grep -n 'ui_panel.*slot_fill|ui_panel({ rect = lr' E:/a327ex/attack-template/sn...)

107:  ui_panel({ rect = lr, bg = slot_fill, radius = rad, edition = ed })
847:  ui_panel({ rect = lr, radius = rad, edition = ed })

Read (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

98     if id then ui_juice_hover(id, hovered, nil, r) end
99  
100   -- Scale-spring bounce around the slot center.
101   local s = (id and not opts.disabled) and ui_juice_scale(id) or 1
102   layer_push(ui_layer, r.x + r.w/2, r.y + r.h/2, 0, s, s)
103   local lr = { x = -r.w/2, y = -r.h/2, w = r.w, h = r.h }
104 
105   -- Chrome — no default border (the shadow gives chrome thickness).
106   -- Hover is indicated by the scale-pop juice alone.
107   ui_panel({ rect = lr, bg = slot_fill, radius = rad, edition = ed })
108 
109   -- Occupancy. Default pad is 0 — the icon fills the slot so an
110   -- occupied slot reads as just the icon (no slot frame around it).
111   -- The icon inherits the slot's radius so its corners match.
112   if opts.icon then

The icon fills the slot now (no padding), so a panel-border approach would be hidden behind the icon. Using stencil to cut a clean 1px rounded outline drawn on top of the icon. Cards still work via the regular panel-border path since their content has internal padding.

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/widgets.lua)

The file E:/a327ex/attack-template/snkrx/ui/widgets.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

widgets.lua OK

Done.

Great, seems like everything is finally done. What does the general code for doing the elements looks like? What does a new instance have to do in general?

One-time setup

In main.lua, after require('anchor')({...}):

require('snkrx')                              -- pulls UI + attack carriers
ui_typed_text = engine_get_typed_text()       -- in update() — drains SDL text input AND captures it for ui_text_input

The toolkit auto-creates ui_layer, ui_shadow_layer, ui_shadow_shader, loads fonts, etc. — no extra plumbing.

Per-frame contract (without the gallery)

function update(dt)
  ui_typed_text = engine_get_typed_text()
  ...
  ui_state_begin_frame()                      -- reset hot_id, ui_capturing_text, ui_input_locked
  ui_juice_update(dt)                         -- tick springs + HP-bar tweens

  -- Queue widget draws here (they push to ui_layer).
  ui_panel({ rect = ... })
  if ui_button({ rect = ..., id = 'play', label = 'play',
                 variant = 'primary' }).clicked then ... end
end

function draw()
  -- ... game layers ...
  -- UI shadow pipeline (last):
  layer_render(ui_layer)
  layer_clear(ui_shadow_layer)
  layer_draw_from(ui_shadow_layer, ui_layer, ui_shadow_shader)
  layer_draw(ui_shadow_layer, ui_shadow_offset_x, ui_shadow_offset_y)
  layer_draw(ui_layer)
end

(The gallery does the equivalent inside ui_gallery_update/ui_gallery_draw.)

Calling convention

Every widget takes one opts table, returns a table.

-- typical pattern
local r = ui_text_input({ rect=..., id='name', text=my_name,
                          placeholder='player name' })
my_name = r.text
if r.submitted then ... end

Widget toolkit

Primitives (pure draw, primitives.lua): ui_panel, ui_text, ui_divider, ui_item_icon, ui_rich_text, ui_label, ui_tooltip, ui_bracket_tag, ui_stat_chip, ui_pips.

Interactive widgets (widgets.lua): ui_slot, ui_button (primary/secondary/danger/ghost), ui_icon_button, ui_bar (progress / health with juice), ui_tabs (tab/segment), ui_checkbox, ui_radio, ui_slider, ui_list_row, ui_card, ui_text_input, ui_modal.

Key idioms

That's the whole API surface. A forking game does the per-frame contract, calls widgets where it wants UI, and that's it.

OK, make sure that everything is documented properly, that the final main.lua file contains the code necessary to make the UI work, but not any actual UI code, it should just be the player as it is now. Comments can include explanations on how to use the UI module, like there are comments for the attack system. Don't know if the attack system has any other documentation, but if you feel new instances will need it for the UI system, you can add it in more detail wherever you wish. Make sure everything is properly compartmentalized without hiding details from main.lua, the same way we decided for the attack system. Ask any questions on decisions you aren't sure about. After you're done with this, if you have no questions to ask me, you can proceed directly to ending the session, naming it "UI Generalization 2"

Let me read the current state of main.lua and the attack-template docs to match style.

Read (E:/a327ex/attack-template/main.lua)

1    --[[
2     attack-template / main.lua — clean reference scene.
3   
4     This is your file. It is a complete, minimal scene: a player you can
5     move (WASD / arrows), the five-layer render stack, a camera, physics,
6     and the update / draw skeleton — all wired and ready, but firing no
7     attacks. Read it top to bottom; it is the contract you build on.
8   
9     THE TOOLKIT.  `require('snkrx')` (below) pulls in the SNKRX attack
10    toolkit from snkrx/ — the carriers (projectile / area / beam /
11    flicker / prop), the edition draw-shader stack, fx, sounds, the
12    example entities, and all the plumbing. snkrx/ is plain, readable
13    Lua, not a black box: open snkrx/<carrier>.lua for the full set of
14    opts each spawn_* helper accepts.
15  
16    ADDING AN ATTACK.  Every carrier already has its object list and its
17    update / draw loop wired below. To add an attack you only:
18      1. bind a key in the INPUT section,
19      2. call the carrier's spawn_* helper on that press inside update()
20         — see the ATTACKS comment block there.
21    Nothing else: no new list, no new loop.
22  
23    TEST ENTITIES.  player / seeker / wall live in snkrx/. Treat them as
24    the real files for those features — either edit snkrx/player.lua etc.
25    directly, or drop a replacement player.lua / seeker.lua / wall.lua
26    beside this main.lua and require it right after require('snkrx').
27  
28    DEBUG.  F2 toggles the collider overlay. F3 opens the per-sound DSP
29    tuner.
30  ]]
... [262 more lines]

Let me look at the current state of the UI section in CLAUDE.md and any module docblocks that may be stale.

Bash (grep -n '## UI toolkit|^### |^---' E:/a327ex/attack-template/.claude/CLAUDE.md...)

14:### What a design brief contains
33:### After the brief is agreed
40:### Trivial changes skip the brief
58:---
91:---
117:---
145:---
152:### Visual / edition stack (from edition-template)
165:### Entities
193:### Carriers
254:### Sounds
282:### Physics
315:### Hit-stop / time scale
324:### Collisions handled (in main.lua's `update`)
334:### `seeker:wall_bump` — streak-based wall response
344:### Edition system integration
358:### Debug
372:### Runtime DSP + sound tuning
393:### Keybindings — the clean `main.lua`
406:---
410:### Edition shader integration
417:### Camera mouse coords
420:### Rotatable collider bodies
428:### Player rotation: r vs visual_r
432:### Update order in main.lua
449:### Layer hierarchy (draw order, bottom to top)
460:### Anchor 2 procedural style
466:---
518:---
547:---

Bash (grep -n 'UI toolkit|## UI|UI kit' E:/a327ex/attack-template/.claude/CLAUDE.md ...)

75:- **`snkrx/ui/`** — the UI toolkit: a generalizable SNKRX / GLIMPO-style
78:  the "UI toolkit" section below.
113:8. **`snkrx/ui/`** — the UI toolkit (only when doing UI work). Start
114:   at `snkrx/ui/gallery.lua` (the F4 test scene) and the "UI toolkit"
549:## UI toolkit (snkrx/ui/)
671:- **`engine_get_typed_text()` must be drained** each frame even if nothing consumes typed input — otherwise SDL's text-input queue fills up after ~32 keypresses and warns per-press forever. main.lua does this at the top of `update()` as `ui_typed_text = engine_get_typed_text()` — draining it AND capturing the frame's typed string into the global the focused `ui_text_input` reads. A game using the UI toolkit must keep this line.
728:    └── ui/                     # the UI toolkit — require('snkrx') loads it

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

549  ## UI toolkit (snkrx/ui/)
550 
551 A generalizable SNKRX / GLIMPO-style UI element set, loaded by
552 `require('snkrx')` alongside the attack carriers. Built one element at
553 a time from the Orblike / Invoker UI mockups and SNKRX's own source.
554 
555 ### Calling convention
556 
557 Every widget takes ONE opts table; the rect is `opts.rect` — a
558 `{x,y,w,h}` table, exactly what RectCut (`ui/rect.lua`) produces.
559 Widgets draw to the global `ui_layer`. Colors are the 18 locked
560 palette tokens from `snkrx/palette.lua`.
561 
562 ### Files
563 
564 - `rect.lua` — RectCut layout primitive (cut / get / add / contract /
565   center / split).
566 - `state.lua` — `ui_state`: frame-local hot/active/focus, explicit
567   string widget ids. The rules-based interaction substrate.
568 - `juice.lua` — per-id retained juice: a scale spring (hover/click
569   bounce + the SNKRX hover sounds) and the bar trail/flash registry.
570 - `paint.lua` — edition-backed coloring (see below).
571 - `primitives.lua` — pure draw: `ui_panel`, `ui_text`, `ui_divider`,
572   `ui_item_icon`, `ui_rich_text`, `ui_label`, `ui_tooltip`,
573   `ui_bracket_tag`, `ui_stat_chip`, `ui_pips`, + `rarity_color`.
574 - `widgets.lua` — interactive (consult ui_state + juice): `ui_slot`,
575   `ui_button`, `ui_bar`, `ui_tabs`, `ui_checkbox`, `ui_radio`,
576   `ui_slider`, `ui_list_row`, `ui_card`, `ui_text_input`, `ui_modal`,
577   `ui_icon_button`.
578 - `gallery.lua` — the F4 test scene; the in-engine mockup kit.
... [70 more lines]

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

647  ### Fonts (in `assets/`)
648 
649 Headers: `Awesome 9.ttf` @16 (`ui_font_header_l`), `FatPixelFont.ttf`
650 @8 (`ui_font_header_s`). Body: `LanaPixel.ttf` @11 and `ark-pixel-
651 10px-proportional-latin.ttf` @10 — `ui_font_body` toggles between the
652 two. `PixulBrush.ttf` @8 (`ui_font_pixul`) is the button font.
653 `Awesome 9.ttf` @8 (`ui_font_bracket`) supplies `[ ]` glyphs for the
654 metadata rich-text motif (PixulBrush has no brackets). UI hover
655 sounds: `bamboo_hit_by_lord.ogg` + `467951__benzix2__ui-button-click.ogg`.
656 
657 ### Gallery keys
658 
659 `F4` toggle · `[` `]` page · `B` body font · `O`/`P` global edition ·
660 `K`/`L` field_scale · `U` dither.
661 
662 ---
663 
664 ## Common gotchas
665 
666 - **`triangulate` returns 6-number arrays in attack-template** (`{t1[1..6], t2[1..6], ...}`), NOT the v1 index-triple format (`{tri[1], tri[2], tri[3]}`). Adjust draw loops when porting v1 entity code that uses the v1 format.
667 - **`physics_raycast(x1, y1, x2, y2, tags)`** takes a tags TABLE (list of tag strings). Single-element list is `{'wall'}`, not `'wall'`.
668 - **`set_edition(layer, 0)` after every bracketed draw** — the shader uniform persists across subsequent draws on the same layer if you don't reset it.
669 - **Sensor fixtures need `physics_enable_sensor`, not `physics_enable_collision`.** The engine has separate masks for blocking collisions vs sensor events. Projectile (sensor) ↔ enemy uses the sensor enable; player/seeker (solid) ↔ wall uses collision enable. Cost us a debug cycle when projectiles wouldn't fire enemy events.
670 - **Mouse buttons follow LÖVE2D convention** — `mouse:2` = right, `mouse:3` = middle. The engine swaps SDL's native 2↔3 at the event boundary (`sdl_to_anchor_mouse_button` in anchor.c). All downstream code sees the Anchor convention. No mental remap needed.
671 - **`engine_get_typed_text()` must be drained** each frame even if nothing consumes typed input — otherwise SDL's text-input queue fills up after ~32 keypresses and warns per-press forever. main.lua does this at the top of `update()` as `ui_typed_text = engine_get_typed_text()` — draining it AND capturing the frame's typed string into the global the focused `ui_text_input` reads. A game using the UI toolkit must keep this line.
672 - **Sounds load as originals** (NOT `_lightmed`). Bitcrush + SR-reduce applied at runtime via `sound_tuner` (F3) per the `sound_tuning.lua` table.
673 - **Don't run `./run.bat` yourself** — the user runs and tests. After framework changes, `lua54.exe -e "loadfile('main.lua')"` is the syntax-check (path: `E:/a327ex/Anchor/reference/love-compare/tools/lua54.exe`).
674 
675 ---
676 

Bash (grep -rn 'ui_font_pirkkala' E:/a327ex/attack-template 2>/dev/null)

E:/a327ex/attack-template/snkrx/ui/init.lua:58:ui_font_pirkkala = font_register('ui_pirkkala', 'assets/pirkkala.ttf', 16)

Bash (sed -n '1,25p' E:/a327ex/attack-template/snkrx/ui/widgets.lua)

--[[
  ui/widgets.lua — interactive UI widgets.

  Same opts-table / ui_layer convention as ui/primitives.lua. These
  widgets consult `ui_state` (ui/state.lua) — they derive hover via
  ui_claim_hot, run the mouse-down→up click machine, and return an
  interaction result. Each takes opts.id, an explicit caller-provided
  string identity.

  Coloring goes through the edition pipeline (ui/paint.lua): draws use
  the ui_rrect / ui_text wrappers, or bracket edition_set manually for
  loops (draw_drag_target). Every widget accepts opts.edition to force
  a specific edition for all its draws — the per-element override.

  They also carry SNKRX-style juice via ui/juice.lua: a per-id scale
  spring that bounces on hover-enter and click, and the hover sounds.

  The action-vs-rules split: a widget's *data* states (a slot's
  selected / occupied / locked / disabled) are caller-owned and passed
  in via opts. Its *interaction* state (hover, active, focus) is
  frame-local, derived here from ui_state. The juice + bar registries
  are the one retained sliver — keyed by the explicit id.
]]

-- Clone a palette token with a fixed alpha. Returns a callable color.

Bash (sed -n '1,20p' E:/a327ex/attack-template/snkrx/ui/primitives.lua; echo "==="; se...)

--[[
  ui/primitives.lua — Tier-1 UI primitives: panel, text, divider,
  item_icon, rich_text, label.

  Calling convention (whole toolkit): each widget takes ONE opts table.
  The rect is opts.rect — a {x, y, w, h} table, exactly what RectCut
  (ui/rect.lua) produces.

  Coloring goes through the edition pipeline (ui/paint.lua): these
  functions don't call layer_* directly, they call the ui_rrect /
  ui_rect / ui_glyph_text wrappers, which bracket each draw with the
  edition that mimics its palette color. Every primitive accepts an
  optional `opts.edition` to force a specific edition for its draws.

  These six are pure draw — no interaction, no ui_state. Interactive
  widgets live in ui/widgets.lua.
]]

--[[
  ui_panel(opts)
===
--[[
  ui/juice.lua — per-widget retained juice.

  Immediate-mode widgets are pure functions — they have nowhere to keep
  a spring, a hover edge, or an eased value. These registries are that
  place, keyed by the widget's explicit string id. The small, retained,
  action-based sliver the UI doctrine puts behind an id; everything
  else stays rules-based.

... [16 more lines]

Going to ask one clarifying question before proceeding, since I'm about to refactor more than just docs.

AskUserQuestion

Your questions have been answered: "The gallery currently couples per-frame plumbing into its hooks (ui_state_begin_frame + ui_juice_update fire only when the gallery is active). For a clean separation where main.lua always runs that plumbing regardless of the gallery, I'd refactor gallery.lua so:

- `ui_gallery_update` no longer calls begin_frame / juice_update internally (the dev's main.lua owns those, called once per frame).
- `ui_gallery_draw` is split into `ui_gallery_bg_draw` (handles only the gallery's full-screen bg fill, when active) — the UI shadow + composite live in main.lua so they apply to both gallery and real-game UI through the same pipeline.

This is a small but real refactor inside gallery.lua. Do it, or keep the gallery's hooks self-contained?"="Refactor for clean separation". You can now continue with these answers in mind.

Executing the refactor + cleanup. Step 1: state.lua snapshot so hotkey gating still works when begin_frame is hoisted to main.lua.

Read (E:/a327ex/attack-template/snkrx/ui/state.lua)

1    --[[
2     ui/state.lua — frame-local UI interaction state.
3   
4     `ui_state` holds the three interaction IDs, rebuilt every frame:
5       hot_id     widget under the cursor this frame
6       active_id  widget the mouse-down landed on (persists until release)
7       focus_id   widget last clicked (persists until the next click)
8   
9     `ui_state_begin_frame()` clears hot_id; call it once per frame before
10    any widget calls (the gallery does this in ui_gallery_update; a real
11    game calls it once per frame too). Widget IDs are explicit, caller-
12    provided strings — no auto-IDs.
13  
14    This is the rules-based, frame-local interaction layer the project's
15    action-vs-rules UI doctrine sanctions — it is NOT hidden persistent
16    state. Persistent UI state (what occupies a slot, a drag in progress)
17    is action-based and lives in caller-owned data, never here.
18  ]]
19  
20  ui_state = { hot_id = nil, active_id = nil, focus_id = nil }
21  
22  -- True for any frame a ui_text_input is focused (it sets this). The
23  -- caller (or the gallery) checks it to suppress letter hotkeys so
24  -- typing into a field doesn't also fire keybinds. Reset every frame
25  -- by ui_state_begin_frame, re-set by the focused field during draw —
26  -- so readers see a one-frame-lagged value, which is the safe lag.
27  ui_capturing_text = false
28  
29  -- Raised by the caller while a modal is open, BEFORE drawing the
30  -- screen behind it — ui_claim_hot then refuses every widget, so the
... [35 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/state.lua)

The file E:/a327ex/attack-template/snkrx/ui/state.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now refactor gallery.lua — drop begin_frame + juice_update from update, split draw into a bg-only function, use the snapshot for hotkey gating.

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

975    once per frame from main.lua's update().
976 ]]
977 function ui_gallery_update(dt)
978   if is_pressed('toggle_ui_gallery') then
979     ui_gallery_active = not ui_gallery_active
980   end
981   if not ui_gallery_active then return end
982 
983   -- Secondary hotkeys are letter/bracket keys, so they collide with
984   -- typing — suppress them while a ui_text_input is focused (the flag
985   -- lags one frame, which is the safe direction).
986   if not ui_capturing_text then
987     if is_pressed('ui_gallery_prev') then ui_gallery_cycle_page(-1) end
988     if is_pressed('ui_gallery_next') then ui_gallery_cycle_page(1)  end
989     if is_pressed('ui_gallery_font') then ui_font_body_toggle()     end
990     if is_pressed('ui_edition_prev') then ui_override_step(-1) end
991     if is_pressed('ui_edition_next') then ui_override_step(1)  end
992     if is_pressed('ui_dither_cycle') then ui_dither = next_dither(ui_dither) end
993     if is_pressed('ui_fs_down') then
994       ui_field_scale = math.max(0.05, ui_field_scale - 0.05)
995     end
996     if is_pressed('ui_fs_up') then
997       ui_field_scale = ui_field_scale + 0.05
998     end
999   end
1000    
1001      ui_state_begin_frame()
1002      ui_juice_update(dt)
1003    
1004      -- The full-screen bg fill goes to gallery_bg_layer (kept off
... [25 more lines]

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now refactor ui_gallery_drawui_gallery_bg_draw (bg only):

Read (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

1028   pg.draw(ui_layer)
1029    end
1030    
1031    --[[
1032      ui_gallery_draw()
1033    
1034      Flush ui_layer to the screen with the SNKRX-style drop shadow:
1035      render ui_layer's commands, derive ui_shadow_layer from its canvas
1036      via ui_shadow_shader, composite the shadow beneath at an offset,
1037      then composite ui_layer on top.
1038    ]]
1039    function ui_gallery_draw()
1040      if not ui_gallery_active then return end
1041      -- Render the bg fill + the ui commands queued in update.
1042      layer_render(gallery_bg_layer)
1043      layer_render(ui_layer)
1044      -- Derive the shadow from ui_layer's canvas.
1045      layer_clear(ui_shadow_layer)
1046      layer_draw_from(ui_shadow_layer, ui_layer, ui_shadow_shader)
1047      -- Composite bottom-to-top: bg, shadow at offset, ui chrome.
1048      layer_draw(gallery_bg_layer)
1049      layer_draw(ui_shadow_layer, ui_shadow_offset_x, ui_shadow_offset_y)

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now update the file header to reflect the new responsibilities:

Bash (sed -n '1,30p' E:/a327ex/attack-template/snkrx/ui/gallery.lua)

--[[
  ui/gallery.lua — the UI kit gallery / test scene.

  A paged, full-screen overlay that renders every UI element the toolkit
  ships — the in-engine equivalent of reference/mockup_ui_kit_*.html.
    F4         toggle the gallery
    [ / ]      previous / next page
    B          toggle the body font (LanaPixel <-> Ark Pixel)
    O / P      preview the whole UI under prev / next edition
               (per-color / dynamic / palette-cycle / polychrome)
    K / L      field_scale down / up (UI shimmer density)
    U          cycle the dither mode (32 modes)
  Each element chunk appends its showcase to a gallery page.

  WHY PAGE DRAWS RUN FROM update(), NOT draw():
    Interactive widgets hit-test with mouse_is_pressed / key_is_pressed,
    whose edge events are only true during update() (see MEMORY.md →
    "Anchor 2 input edge events are update-only"). Widgets also queue
    their layer commands in the same call. So the gallery queues ALL
    ui_layer commands from ui_gallery_update(); ui_gallery_draw() is
    only the layer_render + layer_draw flush.
]]

ui_gallery_active = false
ui_gallery_page   = 1

-- The gallery's full-screen background lives on its OWN layer (not on
-- ui_layer) so ui_layer stays transparent except where chrome / text
-- is drawn — that lets the shadow shader derive discrete drop shadows
-- only behind real UI elements, not as a full-screen dark tint.

Edit (E:/a327ex/attack-template/snkrx/ui/gallery.lua)

The file E:/a327ex/attack-template/snkrx/ui/gallery.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in snkrx/ui/state.lua snkrx/ui/gallery.lua...)

snkrx/ui/state.lua OK
snkrx/ui/gallery.lua OK

Now main.lua — top docblock + UI plumbing + commented gallery section:

Edit (E:/a327ex/attack-template/main.lua)

The file E:/a327ex/attack-template/main.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Strip the gallery binds out of INPUT (they'll move to the commented gallery section):

Edit (E:/a327ex/attack-template/main.lua)

The file E:/a327ex/attack-template/main.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Update the update() UI plumbing — typed_text capture (already there), add begin_frame + juice_update, drop ui_gallery_update:

Edit (E:/a327ex/attack-template/main.lua)

The file E:/a327ex/attack-template/main.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now draw() — drop ui_gallery_draw(), add the explicit UI render pipeline:

Edit (E:/a327ex/attack-template/main.lua)

The file E:/a327ex/attack-template/main.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && E:/a327ex/Anchor/reference/love-compare/tools/lu...)

main.lua OK

Now docblock cleanup for primitives.lua and juice.lua:

Edit (E:/a327ex/attack-template/snkrx/ui/primitives.lua)

The file E:/a327ex/attack-template/snkrx/ui/primitives.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/snkrx/ui/juice.lua)

The file E:/a327ex/attack-template/snkrx/ui/juice.lua has been updated successfully. (file state is current in your context — no need to Read it back)

Now the CLAUDE.md UI section overhaul:

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Now the element-set + the new sections (shadow / font rule / selection patterns / no-thin-borders):

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (grep -n 'ui_typed_text|gallery_bg|ui_gallery_draw' E:/a327ex/attack-template/....)

435:ui_typed_text = engine_get_typed_text()  -- drain + capture for ui_text_input
576:ui_typed_text = engine_get_typed_text()    -- drain SDL + capture
591:`ui_gallery_bg_draw()` composites the gallery's full-screen bg layer
617:  `ui_typed_text` (from main.lua), wires the toolkit modules.
668:  `ui_typed_text` each frame; backspace (UTF-8 aware), enter →
742:`gallery_bg_layer` for its bg fill; a real game's game-world layers
807:- **`engine_get_typed_text()` must be drained** each frame even if nothing consumes typed input — otherwise SDL's text-input queue fills up after ~32 keypresses and warns per-press forever. main.lua does this at the top of `update()` as `ui_typed_text = engine_get_typed_text()` — draining it AND capturing the frame's typed string into the global the focused `ui_text_input` reads. A game using the UI toolkit must keep this line.

Bash (grep -n 'gallery_bg_layer|ui/ ' E:/a327ex/attack-template/.claude/C...)

742:`gallery_bg_layer` for its bg fill; a real game's game-world layers
864:    └── ui/                     # the UI toolkit — require('snkrx') loads it
---
864:    └── ui/                     # the UI toolkit — require('snkrx') loads it

Read (E:/a327ex/attack-template/.claude/CLAUDE.md)

863      ├── symbols.lua             # from edition-template (present, currently unrequired)
864     └── ui/                     # the UI toolkit — require('snkrx') loads it
865         ├── init.lua            # UI aggregator: fonts, ui_layer, requires
866         ├── rect.lua            # RectCut layout primitive
867         ├── state.lua           # ui_state — frame-local hot/active/focus
868         ├── juice.lua           # per-widget spring / sound / bar juice registry
869         ├── paint.lua           # edition-backed coloring (draw wrappers)
870         ├── primitives.lua      # panel / text / divider / item_icon / rich_text / label / tooltip / bracket_tag / stat_chip / pips
871         ├── widgets.lua         # interactive: slot / button / bar / tabs / checkbox / radio / slider / list_row / card / text_input / modal / icon_button
872         └── gallery.lua         # F4 gallery / test scene
873 ```
874 

Edit (E:/a327ex/attack-template/.claude/CLAUDE.md)

The file E:/a327ex/attack-template/.claude/CLAUDE.md has been updated successfully. (file state is current in your context — no need to Read it back)

Bash (cd E:/a327ex/attack-template && for f in main.lua snkrx/ui/state.lua snkrx/ui/ga...)

main.lua OK
snkrx/ui/state.lua OK
snkrx/ui/gallery.lua OK
snkrx/ui/primitives.lua OK
snkrx/ui/juice.lua OK
snkrx/ui/widgets.lua OK
snkrx/ui/init.lua OK
snkrx/ui/paint.lua OK

Bash (sed -n '110,165p' E:/a327ex/attack-template/main.lua)

wall_layer    = layer_new('wall')     -- wall bodies
game_layer    = layer_new('game')     -- player + seekers + every carrier
effects_layer = layer_new('effects')  -- fxs (hit circles, particles, ...)
debug_layer   = layer_new('debug')    -- F2 collider overlay

main_camera = camera_new(width, height)
main_camera.x = width/2
main_camera.y = height/2

debug_draw_enabled = false

-- ============================================================
-- SCENE
-- ============================================================
-- The player — moved by the WASD / arrow binds, aims at the mouse.
p = player(width/2, height/2)
p.edition = edition_cycle[math.random(#edition_cycle)]

-- To add test targets, spawn seekers / a wall — e.g.:
--   for i = 1, 5 do
--     spawn_seeker(width/2 + random_float(-100, 100),
--                  height/2 + random_float(-100, 100))
--   end
--   local wx, wy = width/2 + 80, height/2
--   spawn_wall({ wx-8,wy-40, wx+8,wy-40, wx+8,wy+40, wx-8,wy+40 },
--              { edition = 0 })

function update(dt)
  sync_engine_globals()

... [26 more lines]

All clean — every file syntax-checks, docs are synced. Invoking the end-session skill.

Skill

Launching skill: end-session

Base directory for this skill: E:\a327ex.claude\skills\end-session

End Session Workflow

This skill is invoked from the same conversation where the work was done. You already have the full session context in memory — you do NOT need to read the transcript.

Step 1: Get Session Info

Ask the user for the session title (max 30 characters). Examples: "Anchor Phase 10 Part 5", "Physics Arena Setup", "Timer System Fix", "Thalien Lune Design".

Determine the project yourself from your session context — you know which repo(s) were worked on, which files were created/modified, and where they live. No need to ask. See Step 5 for the list of known project roots; if the session touched something outside the list, infer the root from the paths you actually edited.

Step 2: Write Summary

Write the summary from your conversation memory. You have the full session context — no need to read any files.

The summary should be thorough and detailed. Each major topic deserves its own section with multiple specific bullet points. Don't compress — expand.

Purpose: These summaries serve as searchable records. Future Claude instances will grep through past logs to find how specific topics were handled. The more detail you include, the more useful the summary becomes for finding relevant context later.

Format (this is just an example structure — adapt sections to match what actually happened):

# [Title]

## Summary

[1-2 sentence overview of the session's main focus]

**[Topic 1 - e.g., "Spring Module Implementation"]:**
- First specific detail about what was done
- Second detail - include file names, function names
- User correction or feedback (quote if notable)
- Technical decisions and why

**[Topic 2 - e.g., "Camera Research"]:**
- What was researched
- Key findings
- How it influenced implementation

**[Topic 3 - e.g., "Errors and Fixes"]:**
- Specific error message encountered
- Root cause identified
- How it was fixed

[Continue for each major topic...]

---

[Rest of transcript follows]

Rules: - Be thorough — If in doubt, include more detail, not less. Each topic should be as detailed as possible while still being a summary. - Think searchability — Future instances will search these logs. Include keywords, function names, error messages that someone might grep for. - One section per major topic — Don't combine unrelated work into one section - Chronological order — Sections should match conversation flow - Specific details — Error messages, file names, function names, parameter values - Include user quotes — When user gave notable feedback, quote it (e.g., "k/d variables are not intuitive at all") - Weight planning equally — Research, proposals, alternatives considered, user feedback on approach are as important as implementation - Weight problems solved — Errors, root causes, fixes, user corrections all matter - Technical specifics — Include formulas, API signatures, parameter changes when relevant

Step 3: Proceed Without Approval

Do NOT show the summary to the user for approval. Write it directly. The user can review the committed log after the fact and request a follow-up edit if anything is off.

Step 4: Convert Transcript and Write the Log File

# Find recent sessions (Claude + Cursor + Codex). Same script lives in Anchor2:
python E:/a327ex/Anchor2/scripts/find-recent-session.py --limit 5
# or: python E:/a327ex/Anchor/scripts/find-recent-session.py --limit 5

The script shows sessions sorted by when they ended. The first result is the current conversation (since end-session was invoked here). Use it.

Use a lowercase hyphenated slug derived from the title (e.g., "anchor-primitives-hitstop-animation").

Get the end timestamp for the Date frontmatter — this is the wall-clock time when end-session was invoked, NOT the time the JSONL started. Sessions often span multiple days, and the log should be filed under the day the work was wrapped up:

date "+%Y-%m-%d %H:%M:%S"

Use this output verbatim. Do not substitute the JSONL start timestamp; the log appears in the sidebar sorted by Date, and a multi-day session with a Date pinned to day 1 will sort below sessions that ended later but started later, hiding the most recent work.

Convert the transcript to markdown:

python E:/a327ex/Anchor2/scripts/jsonl-to-markdown.py [SESSION_PATH] /tmp/session-log.md
# or: python E:/a327ex/Anchor/scripts/jsonl-to-markdown.py ...

The same script auto-detects Claude Code JSONL vs Cursor/Composer agent JSONL (~/.cursor/projects/.../agent-transcripts/...) vs Codex rollouts (~/.codex/sessions/...). For Composer sessions, use find-recent-session.py (it merges all sources) and pick the [cursor] line for the current chat.

Replace the default header (# Session YYYY-MM-DD...) at the top of /tmp/session-log.md with the approved title and summary, AND prepend frontmatter. The final file shape:

Title: [Title]
Date: YYYY-MM-DD HH:MM:SS

# [Title]

## Summary

[approved summary text from step 2]

---

[transcript content from jsonl-to-markdown script]

Frontmatter is non-negotiable. Every log file MUST start with Title: and Date: lines. Without them, the site's sidebar shows the slug as the title and 0 (epoch) as the sort date. The backfill script in a327ex-site/deploy/backfill_metadata.py is a safety net, not a substitute — write it correctly the first time.

Then copy the final file to the log destination:

cp /tmp/session-log.md E:/a327ex/a327ex-site/logs/[slug].md

Step 5: Commit Project Repo

Identify the project repo(s) worked on this session from your own context — you already know which repos were touched and which files changed. For the common projects:

Project Root Stage command
Anchor E:/a327ex/Anchor git add docs/ framework/ engine/ scripts/ reference/
Anchor2 E:/a327ex/Anchor2 git add framework/ engine/ arena/ reference/ scripts/ docs/ .claude/
emoji-ball-battles E:/a327ex/emoji-ball-battles git add -A
invoker E:/a327ex/Invoker git add -A
thalien-lune E:/a327ex/thalien-lune git add -A
a327ex-site E:/a327ex/a327ex-site git add -A (this IS one of the web repos — the log file added in Step 4 is staged here automatically)

For a project not listed, infer the root from the files you actually created or modified this session and stage those. If multiple candidate roots look valid, ask the user which files to stage.

cd into the project root, stage, run git status to verify before committing.

IMPORTANT — FULL SUMMARY IN COMMIT: The commit message MUST include the FULL summary from the log file. Read the summary back from the log file to ensure nothing is missing.

IMPORTANT — COMMIT METHOD: The summary contains backticks, special characters, and markdown that WILL break heredocs and git commit -m. ALWAYS use the file-based method below. NEVER try a heredoc first — it will fail and produce a malformed commit that needs amending.

# Skip until we hit the line "## Summary", then take everything after the next
# blank line until the --- separator that precedes the transcript.
awk '/^## Summary$/{found=1; next} found && NR>1 && /^---$/{exit} found' \
    E:/a327ex/a327ex-site/logs/[slug].md > /tmp/commit_msg.txt

# Prepend the title (plain text, no #) and append attribution
sed -i "1i [Title]\n" /tmp/commit_msg.txt
printf "\nGenerated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\n" >> /tmp/commit_msg.txt

git commit -F /tmp/commit_msg.txt

Step 6: Push the Repos

Two pushes — project (to GitHub) and a327ex-site (to the VPS):

# Project repo to GitHub. Skip this push if the project IS a327ex-site
# (handled by the second push below — don't duplicate).
git push origin main

# a327ex-site to the VPS (post-receive hook restarts the Lua server).
cd E:/a327ex/a327ex-site
git add -A
git commit -m "[Title]"
git push prod main 2>&1 | tail -3

Failure handling: if either push fails, the other still happens. Local commits stay intact, so the user can re-push manually once they've fixed whatever blocked it. Don't roll back; the committed state on disk is the source of truth.

Step 7: Confirm

Tell the user: - Project commit hash + GitHub push result - a327ex-site commit hash + VPS push result

Format:

Logged — "[Title]".
  project (Anchor2):  abc1234  pushed to GitHub
  a327ex-site:        ghi9012  pushed to a327ex.com (post-receive deployed)

If a push failed, surface that explicitly with the error.

Notes

  • Frontmatter is non-negotiable. Every log file MUST have Title: and Date: at the top. Enforced at write time in step 4. The backfill script is a safety net, not a substitute.
  • If the project IS a327ex-site (e.g., you spent the session writing the renderer or fixing the theme), there's no separate "project repo to GitHub" push — the a327ex-site push at the end IS the project push. Don't duplicate.
  • Legacy note: this skill used to also dual-write to anchor.blot.im/logs/ and anchor.blot.im/context/. Post-cutover (May 2026), anchor.blot.im is a JS redirect to a327ex.com and no longer receives content. Drop those steps if you find any older docs that still reference them.

ARGUMENTS: UI Generalization 2

Bash (cd E:/a327ex/attack-template && git status --short 2>&1 | head -20; echo "---"; ...)

 M .claude/CLAUDE.md
 M anchor.exe
 M assets/draw_shader.frag
 M main.lua
 M snkrx/palette.lua
 M snkrx/ui/gallery.lua
 M snkrx/ui/init.lua
 M snkrx/ui/juice.lua
 M snkrx/ui/paint.lua
 M snkrx/ui/primitives.lua
 M snkrx/ui/state.lua
 M snkrx/ui/widgets.lua
?? assets/BoldPixels.ttf
?? "assets/More 15.ttf"
?? assets/pirkkala.ttf
?? assets/shadow.frag
---
total 47
drwxr-xr-x 1 adn 197121    0 May 25 01:35 ./
drwxr-xr-x 1 adn 197121    0 May 25 01:30 ../
---Anchor2---
 M docs/BLOT_MIGRATION.md
 M engine/src/anchor.c
?? reference/blot_migration_plan.md
---timestamp---
2026-05-25 01:35:43

Bash (python E:/a327ex/Anchor2/scripts/find-recent-session.py --limit 3 2>&1 | head -1...)

2026-05-25T04:35:48.972Z d05459cb-bc41-4b7b-a8d2-1ebeba063203 [claude] <-- MOST RECENT
   C:\Users\adn\.claude\projects\E--a327ex\d05459cb-bc41-4b7b-a8d2-1ebeba063203.jsonl

2026-05-25T04:33:20.794Z 928a6664-ad51-4697-a25f-b60224a1210a [claude]
   C:\Users\adn\.claude\projects\E--a327ex\928a6664-ad51-4697-a25f-b60224a1210a.jsonl

2026-05-25T03:55:37.223Z 233a9a79-40c9-4093-bb25-a9cd908f4538 [claude]
   C:\Users\adn\.claude\projects\E--a327ex\233a9a79-40c9-4093-bb25-a9cd908f4538.jsonl