Skip to content

feat: three finishes and sizes for every widget type - #84

Merged
bgard68 merged 1 commit into
mainfrom
claude/widget-variety
Aug 25, 2026
Merged

feat: three finishes and sizes for every widget type#84
bgard68 merged 1 commit into
mainfrom
claude/widget-variety

Conversation

@bgard68

@bgard68 bgard68 commented Aug 25, 2026

Copy link
Copy Markdown
Owner

What changed

Each department stocked exactly one of every type, so a shelf was five products that differed only in shape — every card in it sharing one colour and one size.

Each type now comes in three finishes, and a finish carries a size and a price as well as a colour:

Department Finishes
Standard Azure, Cobalt, Indigo
Deluxe Rose, Fuchsia, Crimson
Mega Amber, Copper, Bronze
Mini Teal, Jade, Mint
Kits Violet, Plum, Slate

15 products per department, 75 in all, each with its own illustration.

Two constraints that shaped this

PAGE_SIZE rises 60 → 100. Category and sort are refinements applied in the browser to a single returned page, so a catalog larger than PAGE_SIZE would silently lose its tail from every shelf. 100 is the API's MaxPageSize, and BrowseWidgetsHandler falls back to 20 for anything above it — so 101 would have broken every category. The comment in catalog.ts now records that the catalog cannot grow past this without moving refinement server-side.

WW-001WW-025 keep the department and shape they already hold. SeedWidgetsAsync skips SKUs that already exist (deliberately, so it never overwrites admin edits), so an existing row would otherwise keep its old name while picking up another department's art. The base finish takes those SKUs; the other two extend the range.

Validation

  • tsc -b --noEmit clean
  • 243 frontend tests pass; coverage 100% lines and functions, 98.4% branches
  • Seeder integration test updated to the new WW-001 name (Standard Widget Block Cobalt) — the count assertion needs the full name including finish, since shorter terms now match several products
  • Routing verified against the running SPA: 75 across all departments, 15 under each of mega, mini and kit

Generated by Claude Code

Each department stocked exactly one of every type, so a shelf was five
products that differed only in shape and every card in it shared one colour
and one size.

Each type now comes in three finishes, and a finish carries a size and a
price as well as a colour: Standard in Azure, Cobalt and Indigo; Deluxe in
Rose, Fuchsia and Crimson; Mega in Amber, Copper and Bronze; Mini in Teal,
Jade and Mint; kit cases in Violet, Plum and Slate. Fifteen products per
department, 75 in all, each with its own illustration.

Two constraints shaped the layout:

PAGE_SIZE rises from 60 to 100. Category and sort are refinements applied in
the browser to a single returned page, so a catalog larger than PAGE_SIZE
loses its tail from every shelf. 100 is the API's MaxPageSize, and the
handler falls back to 20 for anything above it, so the catalog cannot grow
past 75 without moving refinement server-side. The comment in catalog.ts now
says so.

WW-001..WW-025 keep the department and shape they already hold, because the
seeder skips SKUs that exist: an existing row would otherwise keep its old
name while picking up another department's art. The base finish therefore
takes those SKUs and the other two extend the range.

Frontend: typecheck clean, 243 tests, 100% lines and functions. Routing
verified against the running SPA - 75 across all departments, 15 under each
of mega, mini and kit.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EA4mmpcb1rcvNntHR1iG6j
@bgard68
bgard68 merged commit e06570d into main Aug 25, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants