Skip to content

TKW: houses filter cleanup + zoomable timeline#43

Merged
codebend3r merged 4 commits into
mainfrom
fix-house-filters
Jul 13, 2026
Merged

TKW: houses filter cleanup + zoomable timeline#43
codebend3r merged 4 commits into
mainfrom
fix-house-filters

Conversation

@codebend3r

Copy link
Copy Markdown
Owner

Summary

Branch work spanning the houses filters, the timeline, and one content asset.

Houses (/houses)

  • Remove the status filter (Any status / Standing / Extinct); the rank filter already carries an Extinct option that covers the same intent
  • Size the rank dropdown to match the sibling SortToggle / ViewToggle (50px tall, larger option text), scoped so the shared pagination select stays compact

Timeline (/timeline)

  • New zoom mechanism: floating + / control plus Ctrl / + scroll, across 0.5x16x
  • Clustering keys off the pixel gap, so higher zoom pulls grouped events into individual nodes; 16x (32px/year, above the 28px gap) resolves each year on its own, breaking a busy pill like "33 events, 298-300 AC" into per-year entries
  • Focal year stays pinned across a zoom step; minimap ticks and era bands rescale in sync
  • buildTimeline split into serializable prepareTimeline + pure layoutTimeline({ source, pxPerYear }), with buildTimeline kept as a default-scale wrapper; new TimelineExplorer client component owns the zoom state

Content

  • Battle illustration for the-muddy-mess

Testing

  • bun run test (620 pass), bun run lint, bun run typecheck, and bun run build all green, enforced by the pre-commit and pre-push hooks

- drop `Any status` / `Standing` / `Extinct` control from `FilteredHouseList`
- remove `status` `useQueryState` and the `?status=` query param
- simplify `facetFiltered` to filter on `rank` only
- delete dead `AllStatusIcon`, `StandingIcon`, `ExtinctIcon`
- drop status-filter tests and the rank/status combination test
- add `.rankSelect` (scoped under `.rankFilter`) sizing the `<select>` to the 50px `SortToggle` / `ViewToggle` height
- bump option text to `1.1rem` and pad for the dropdown arrow
- keep the shared `listSearch.pageSizeSelect` compact for pagination
- split `buildTimeline` into serializable `prepareTimeline` and pure `layoutTimeline({ source, pxPerYear })`; `buildTimeline` stays a default-scale wrapper
- add `ZOOM_LEVELS` (`0.5x`–`16x`), `DEFAULT_ZOOM_INDEX`, and `yForYear` / `yearForY` helpers
- new client `TimelineExplorer` owns zoom state, floating `+` / `−` control, and `Ctrl` / `⌘` + wheel zoom
- pin the focal year across a re-layout so zoom stays put; keep the minimap ticks in sync
- clustering keys off the pixel gap, so higher zoom pulls grouped events into individual nodes; `16x` (`32px`/year) exceeds the `28px` gap, resolving each year on its own
- `/timeline` now feeds `prepareTimeline` into `TimelineExplorer`
- `public/battles/the-muddy-mess.jpg` for the existing battle entry
@netlify

netlify Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploy Preview for theknownworld ready!

Name Link
🔨 Latest commit 3c915f8
🔍 Latest deploy log https://app.netlify.com/projects/theknownworld/deploys/6a544e237b240e000813ee58
😎 Deploy Preview https://deploy-preview-43--theknownworld.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@codebend3r
codebend3r merged commit 6d460d6 into main Jul 13, 2026
5 checks passed
@codebend3r
codebend3r deleted the fix-house-filters branch July 13, 2026 17:38
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.

1 participant