Skip to content

Release v0.9.4-beta#120

Merged
jacuzzicoding merged 1 commit into
developmentfrom
release/v0.9.4-beta
May 8, 2026
Merged

Release v0.9.4-beta#120
jacuzzicoding merged 1 commit into
developmentfrom
release/v0.9.4-beta

Conversation

@jacuzzicoding
Copy link
Copy Markdown
Owner

Summary

Release prep for v0.9.4-beta — silhouette rendering for un-donated items is the headline feature, with ACWW icon coverage hitting 100% and the hand-drawn icon pipeline upgrading to 768px alongside it.

The four headline beats, all already merged into development since the v0.9.3-beta tag:

  • Silhouette museum (PR Silhouette rendering for un-donated items #118, closes Silhouette rendering for un-donated items #116) — un-donated species render as black silhouettes that fade to full color on donation, faithful to the canonical Animal Crossing museum experience. CSS filter: brightness(0) on the existing PNGs (no new assets), 300ms reveal animation that honors prefers-reduced-motion, and aria-label carries species + donation state for screen readers. New "Museum display" Settings section exposes a single global toggle (museumDisplay.silhouettesEnabled, default ON). Applies across category rows, expand panels, Home shelves, search results, and the recent-activity feed.
  • ACWW icon gap-fill (PR Fill ACWW icon gaps #119) — 84 wiki-scraped items added (21 fish + 27 bugs + 27 fossils + 9 art) via the established Fandom MediaWiki + algorithmic-resolver-plus-OVERRIDES pattern. ACWW now sits at 100% coverage. As a side effect of cross-game ID matching introduced in v0.9.2, ACCF rose to 95.5%, ACNL to 49.1%, and ACNH to 39.1% — partial free coverage for the upcoming v0.9.5 / v0.9.6 betas.
  • 768px hand-drawn icon pipeline (PR Bump icon export target size from 512 to 768 #115)scripts/export-icons.ts TARGET_SIZE bumped 512 → 768. All four hand-drawn pieces (ant, koi, sea-bass, coelacanth) re-exported at the new resolution, preserving painterly detail at the larger expand-panel render sizes introduced in v0.9.2 without changing the source workflow.
  • Coelacanth (PR Add hand-drawn coelacanth fish icon #114) — fourth hand-drawn piece in the library, the first new fish under the higher-resolution pipeline.

What this PR contains

Mechanical version-prep only — no feature code. All feature work merged via PRs #114, #115, #117, #118, #119 already on development.

  • package.json0.9.4-beta
  • CHANGELOG.md[Unreleased] finalized as [0.9.4-beta] — 2026-05-07 with all four headline beats and PR refs
  • public/version-history.html — new v0.9.4-beta timeline card, new highlighted table row, footer current-version updated
  • README.md, CLAUDE.md, docs/architecture.md, .claude/rules/architecture.md — current-release strings bumped
  • CLAUDE.md roadmap section — v0.9.4-beta entry expanded with PR list and shipped date; v0.9.5 next-milestone entry retargeted to ACNL (ACCF dropped — 0 unique items remain after the v0.9.4 cross-game uplift)
  • docs/roadmap-to-v1.md — sequence-table status flipped to Shipped 2026-05-07; track note expanded with PR refs and corrected ACWW count (the placeholder "9 unique items" is replaced with the actual 84-item delivery); current-release line + last-updated rolled forward

Decisions

  • Headline framing. Silhouette rendering leads the release notes everywhere — it's the user-visible museum-experience upgrade. The icon work (768px pipeline + ACWW gap-fill + coelacanth) ships alongside as supporting asset/data changes rather than as parallel features. The roadmap doc states the same framing explicitly so future readers don't read this as a multi-track beta.
  • Roadmap correction. The v0.9.4-beta track note in docs/roadmap-to-v1.md previously called ACWW gap-fill "9 unique items" — that was the pre-scope estimate. The actual scrape delivered 84 items at 100% coverage. Corrected here rather than in a follow-up so the roadmap doc reflects truth on merge day.
  • No back-references to retired planning docs. README + CLAUDE.md previously pointed at docs/v0.9-plan.md as the canonical forward plan. v0.9 is shipped; both pointers now go to docs/roadmap-to-v1.md, which is the live planning doc.

Testing

  • npm run buildtsc && vite build pass, 1715 modules transformed, no errors
  • npm test -- --run — 9 test files, 129 / 129 tests pass (includes silhouette ItemIcon tests added in PR Silhouette rendering for un-donated items #118 and TownManager onboarding tests)
  • Grep sweep across *.md / *.html / *.json / *.ts / *.tsx for v0.9.3-beta: only historical references remain (CHANGELOG entries for past releases, docs/roadmap-to-v1.md shipped row, public/version-history.html past-release card, scripts/fetch-icons-acww.ts audit comment, save-file *.test.ts fixture strings — all correctly retained)
  • Vercel preview will deploy from this branch via the GitHub integration; verify the new version-history timeline card and the silhouette toggle live before merging

After merge

Phase-2 release steps run after this lands and the Vercel deploy goes green:

  1. Smoke-test live on the preview URL
  2. Merge developmentmain
  3. Annotated tag v0.9.4-beta on main
  4. gh release create v0.9.4-beta --notes-file <path> (never --notes inline)
  5. Back-merge maindevelopment

Auto-delete-on-merge is enabled, so release/v0.9.4-beta cleans itself up.

Bumps package version to 0.9.4-beta and finalizes the CHANGELOG
entry covering silhouette rendering (PR #118, closes #116), ACWW
icon gap-fill (PR #119), the 768px hand-drawn icon pipeline (PR
#115), and the coelacanth icon (PR #114). Updates README, CLAUDE.md,
architecture docs, the public version-history timeline, and the
roadmap doc to reflect v0.9.4-beta as the current release.
Copilot AI review requested due to automatic review settings May 8, 2026 03:58
@vercel
Copy link
Copy Markdown

vercel Bot commented May 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
animalcrossingwebapp Ready Ready Preview, Comment May 8, 2026 3:58am

@jacuzzicoding jacuzzicoding merged commit 61e21e0 into development May 8, 2026
6 of 7 checks passed
@jacuzzicoding jacuzzicoding deleted the release/v0.9.4-beta branch May 8, 2026 04:00
@jacuzzicoding jacuzzicoding mentioned this pull request May 8, 2026
4 tasks
jacuzzicoding added a commit that referenced this pull request May 8, 2026
* docs(claude.md): mark prior betas shipped + add v0.9.4 next milestone

- v0.9.0-beta: mark shipped 2026-05-03, remove stale "in progress" label and "Pending" sub-block (Phase 10 and PR #78 both landed in subsequent betas)
- v0.9.1-beta: mark shipped 2026-05-04, drop "(pending)" from PR (c) — NOTICE file and /credits route are present in tree
- Add v0.9.4-beta next-milestone entry: per-game icon gap fills sequenced ACWW → ACCF → ACNL → ACNH

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add hand-drawn coelacanth fish icon

Replace wiki-scraped 544×288 placeholder with hand-drawn 2048×2048 source,
exported to 512×512 via sharp + pngquant (96.9% reduction, 46 KB).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Bump icon export target size from 512 to 768

Hand-drawn icons in icon-sources/ render in the expand panel at 192px CSS.
512px was only 2.67× retina; 768px gives a true 4× retina buffer so the
painterly / grunge detail in the brushwork survives the downsample cleanly.

Re-exported all four current hand-drawn sources (ant, coelacanth, koi,
sea-bass) with --force. File sizes roughly double (~32–47 KB → ~56–97 KB)
which is acceptable given the visual quality gain.

Wiki-scraped icons (public/icons/acgcn/**) are unaffected — they go through
fetch-icons.ts, a separate pipeline that does not use TARGET_SIZE.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: update roadmap to v0.9.3 shipped state + v0.9.4 plan

- Bump last-updated date to 2026-05-07
- Mark v0.9.2-beta (2026-05-05) and v0.9.3-beta (2026-05-06) as shipped
- Rewrite v0.9.3 note: JSON save-file round-trip (not CSV import)
- Add v0.9.4 note: silhouette rendering (headline) + ACWW gap-fill + 768px icons
- Drop ACCF gap-fill row (0 unique items post cross-game routing); renumber v0.9.5-v0.9.8
- Update sequence table with new version numbering
- Correct hand-drawn canvas size (2048×2048, not 512×512); add progress count (4/255)
- Add Post-v1.0 ideas section (Challenge Mode, art real-vs-fake)
- Add Cloud-hosted full-resolution gallery section (opportunistic)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: silhouette rendering for un-donated items (Closes #116)

Render un-donated species as black silhouettes that fade to full color on
donation, matching the canonical Animal Crossing museum experience.

- CSS filter (`brightness(0)`) on existing PNGs — preserves alpha, no new assets
- 300ms fade reveal on donation; honors `prefers-reduced-motion`
- New `museumDisplay.silhouettesEnabled` setting on the persisted app store,
  defaulting ON. Single global toggle in a new "Museum display" section in
  Settings — no per-category granularity by design
- `ItemIcon` now accepts a `donated?: boolean` prop and conveys donation
  state via `alt` text for screen readers ("…, not yet donated" / "…, donated")
- Wired across category rows, expand panels, Home shelves, search results,
  and the recent-activity feed

* Fill ACWW icon gaps (#119)

* Fill ACWW icon gaps via Fandom wiki scrape (84 items)

Scrapes all 84 items missing from the flat icon manifest for Wild World:
fish (21), bugs (27), fossils (27), art (9).

Resolver path summary:
- 75 items resolved algorithmically (a:bare, b:disambig) on first pass
- 9 fossil items required OVERRIDES:
  - ankylosaur-skull/torso/tail: wiki uses full "Ankylosaurus" (-us suffix)
  - pachycephalosaur-skull/torso/tail: wiki uses full "Pachycephalosaurus"
  - fern-fossil, shark-tooth, peking-man: pages exist but lack
    pageimages.original; resolved via { file: } direct-file override

New files in scripts/lib/icon-resolver.ts:
- 9 ACWW art painting overrides (lowercase second word, same pattern as
  ACGCN "Academic painting")
- 9 ACWW fossil overrides for the resolver-ceiling items above

Adds scripts/fetch-icons-acww.ts as the ACWW entry point following the
established pattern from scripts/fetch-icons.ts (ACGCN).

Audit post-scrape: ACWW 184/184 (100%). Shared ids also lifted
ACCF 95.5%, ACNL 49.1%, ACNH 39.1%.

Build: clean. Tests: 129/129 passed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix Prettier formatting in fetch-icons-acww.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* release: v0.9.4-beta (#120)

Bumps package version to 0.9.4-beta and finalizes the CHANGELOG
entry covering silhouette rendering (PR #118, closes #116), ACWW
icon gap-fill (PR #119), the 768px hand-drawn icon pipeline (PR
#115), and the coelacanth icon (PR #114). Updates README, CLAUDE.md,
architecture docs, the public version-history timeline, and the
roadmap doc to reflect v0.9.4-beta as the current release.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@jacuzzicoding jacuzzicoding review requested due to automatic review settings May 8, 2026 04:21
jacuzzicoding added a commit that referenced this pull request May 11, 2026
* docs(claude.md): mark prior betas shipped + add v0.9.4 next milestone

- v0.9.0-beta: mark shipped 2026-05-03, remove stale "in progress" label and "Pending" sub-block (Phase 10 and PR #78 both landed in subsequent betas)
- v0.9.1-beta: mark shipped 2026-05-04, drop "(pending)" from PR (c) — NOTICE file and /credits route are present in tree
- Add v0.9.4-beta next-milestone entry: per-game icon gap fills sequenced ACWW → ACCF → ACNL → ACNH

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add hand-drawn coelacanth fish icon

Replace wiki-scraped 544×288 placeholder with hand-drawn 2048×2048 source,
exported to 512×512 via sharp + pngquant (96.9% reduction, 46 KB).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Bump icon export target size from 512 to 768

Hand-drawn icons in icon-sources/ render in the expand panel at 192px CSS.
512px was only 2.67× retina; 768px gives a true 4× retina buffer so the
painterly / grunge detail in the brushwork survives the downsample cleanly.

Re-exported all four current hand-drawn sources (ant, coelacanth, koi,
sea-bass) with --force. File sizes roughly double (~32–47 KB → ~56–97 KB)
which is acceptable given the visual quality gain.

Wiki-scraped icons (public/icons/acgcn/**) are unaffected — they go through
fetch-icons.ts, a separate pipeline that does not use TARGET_SIZE.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: update roadmap to v0.9.3 shipped state + v0.9.4 plan

- Bump last-updated date to 2026-05-07
- Mark v0.9.2-beta (2026-05-05) and v0.9.3-beta (2026-05-06) as shipped
- Rewrite v0.9.3 note: JSON save-file round-trip (not CSV import)
- Add v0.9.4 note: silhouette rendering (headline) + ACWW gap-fill + 768px icons
- Drop ACCF gap-fill row (0 unique items post cross-game routing); renumber v0.9.5-v0.9.8
- Update sequence table with new version numbering
- Correct hand-drawn canvas size (2048×2048, not 512×512); add progress count (4/255)
- Add Post-v1.0 ideas section (Challenge Mode, art real-vs-fake)
- Add Cloud-hosted full-resolution gallery section (opportunistic)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: silhouette rendering for un-donated items (Closes #116)

Render un-donated species as black silhouettes that fade to full color on
donation, matching the canonical Animal Crossing museum experience.

- CSS filter (`brightness(0)`) on existing PNGs — preserves alpha, no new assets
- 300ms fade reveal on donation; honors `prefers-reduced-motion`
- New `museumDisplay.silhouettesEnabled` setting on the persisted app store,
  defaulting ON. Single global toggle in a new "Museum display" section in
  Settings — no per-category granularity by design
- `ItemIcon` now accepts a `donated?: boolean` prop and conveys donation
  state via `alt` text for screen readers ("…, not yet donated" / "…, donated")
- Wired across category rows, expand panels, Home shelves, search results,
  and the recent-activity feed

* Fill ACWW icon gaps (#119)

* Fill ACWW icon gaps via Fandom wiki scrape (84 items)

Scrapes all 84 items missing from the flat icon manifest for Wild World:
fish (21), bugs (27), fossils (27), art (9).

Resolver path summary:
- 75 items resolved algorithmically (a:bare, b:disambig) on first pass
- 9 fossil items required OVERRIDES:
  - ankylosaur-skull/torso/tail: wiki uses full "Ankylosaurus" (-us suffix)
  - pachycephalosaur-skull/torso/tail: wiki uses full "Pachycephalosaurus"
  - fern-fossil, shark-tooth, peking-man: pages exist but lack
    pageimages.original; resolved via { file: } direct-file override

New files in scripts/lib/icon-resolver.ts:
- 9 ACWW art painting overrides (lowercase second word, same pattern as
  ACGCN "Academic painting")
- 9 ACWW fossil overrides for the resolver-ceiling items above

Adds scripts/fetch-icons-acww.ts as the ACWW entry point following the
established pattern from scripts/fetch-icons.ts (ACGCN).

Audit post-scrape: ACWW 184/184 (100%). Shared ids also lifted
ACCF 95.5%, ACNL 49.1%, ACNH 39.1%.

Build: clean. Tests: 129/129 passed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix Prettier formatting in fetch-icons-acww.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* release: v0.9.4-beta (#120)

Bumps package version to 0.9.4-beta and finalizes the CHANGELOG
entry covering silhouette rendering (PR #118, closes #116), ACWW
icon gap-fill (PR #119), the 768px hand-drawn icon pipeline (PR
#115), and the coelacanth icon (PR #114). Updates README, CLAUDE.md,
architecture docs, the public version-history timeline, and the
roadmap doc to reflect v0.9.4-beta as the current release.

* docs(sync): backfill art/sea data entries + update version-history (#123)

- CLAUDE.md: add art.json for acww/accf; add full acnl/ section
  (fish, bugs, fossils, art, sea_creatures) — all files present since
  v0.8.0/v0.9.0 but never listed in the file-structure block
- README.md: add art counts to acww (20) and accf (23) data lines;
  add art + sea_creatures to acnl line
- .claude/rules/architecture.md: replace stale "ACWW + ACCF art
  incoming via PR #78" with current "Art for all five games" summary
- public/version-history.html: bump release count 13→16, days
  elapsed 25→29, header date May 5→May 9; update "Currently
  building" checklist to reflect v0.9.4-beta as the latest shipped

https://claude.ai/code/session_012rf2b3KMvBYRFMqzujpomY

Co-authored-by: Claude <noreply@anthropic.com>

* docs(changelog): restore missing v prefix on [0.9.4-beta] and [0.9.3-beta] entries (#125)

All CHANGELOG entries from [v0.9.0-beta] through [v0.9.2-beta] carry the
conventional `v` prefix. The two most recent entries ([0.9.4-beta] and
[0.9.3-beta]) were written without it, breaking the established pattern.
Corrects to [v0.9.4-beta] and [v0.9.3-beta] for consistency.

Detected by nightly doc-sync run 2026-05-09.

* docs(claude): add v0.9.1/v0.9.3 file-structure entries missing from CLAUDE.md (#126)

Six source files and seven test files shipped in v0.9.1 and v0.9.3 were
never added to the File Structure section of CLAUDE.md:

Components (v0.9.1):
  - CreditsPage.tsx, CreditsRoute.tsx — /credits route body and wrapper

Components (v0.9.3):
  - ImportSaveModal.tsx — import save-file modal (mounted at App layout level)

Lib (v0.9.3):
  - saveFile.ts, saveFileImport.ts, saveFileReconcile.ts — save-file
    schema, parser/validator, and reconciler
  - saveFile.test.ts, saveFileImport.test.ts, saveFileReconcile.test.ts
  - uiStore.test.ts — added in PR #110

No logic or behaviour changed; documentation only.

* feat(icons): add hand-drawn frog (fish) (#128)

2048×2048 Procreate source committed to icon-sources/fish/frog.png;
optimized 768×768 deploy asset exported via icons:export pipeline
(2.36 MB → 148 KB, 93.9% reduction). Replaces scraped wiki asset.
Manifest regenerated.

* Fill ACNL icon gaps (#127)

* feat(icons): tighten resolver for ACNL gap-fill

- Deprioritize /Gallery subpages in c:search so the parent article wins
  when both exist; preserves the Gallery as a fallback when the parent
  has no pageimages.
- Add ACNL fossils OVERRIDES for Latin-genus oddities the algorithmic
  chain trips on (megacero → Megaloceros, deinony → Deinonychus,
  australopith → Australopithecus).
- Add ACNL OVERRIDES for wrong-content cases where the bare title
  exists but pageimages.original lives elsewhere (great-white-shark,
  giant-water-bug).
- Add ACNL OVERRIDES for "beetle"-suffix-stripped wiki titles
  (cyclommatus/golden/giraffe stag) and other anglicized names
  (man-faced stink bug, pearl oyster (deep-sea creature)).
- Add ACNL OVERRIDES collapsing split-panel art to the single wiki page
  (wild-painting-{left,right}-half → Wild painting).
- Add scripts/spike-acnl-icons.ts (10-item recon) and
  scripts/dry-run-acnl-icons.ts (resolve-only across all uncovered
  items) for honest-auditing before the full fetch run. The dry-run
  also adds sea_creatures: 'deep-sea creature' as a step-(b) disambig
  so the parent article wins over the Gallery for octopus, lobster,
  pearl-oyster — generalizes to ACNH next cycle.

* feat(icons): scrape ACNL — 135 icons + 10 logged wiki gaps

ACNL coverage 49.1% → 96.5% (275/285). Bonus cross-game routing lift:
ACCF 95.5% → 100% (full coverage), ACNH 39.1% → 68.8% (sequenced for
v0.9.6).

- Add scripts/fetch-icons-acnl.ts (mirror of fetch-icons-acww.ts;
  adds the sea_creatures category branch).
- Commit 135 fetched icons under public/icons/<category>/.
- Regenerate public/icons/manifest.json (fish:84 bugs:95 fossils:86
  art:40 sea_creatures:32).
- Refresh docs/v0.9.2-icon-coverage-audit.md.
- Log the 10 genuine wiki-gap items to scripts/missing-acnl.txt:
  pterodactyl-{skull,left-wing,right-wing}, dinopithecus-{skull,torso,
  tail}, opabinia, sakura-shrimp, blue-jellyfish, sea-angel. These
  fall through to ItemIcon's monogram-placeholder fallback. None have
  a Fandom page or a workable file: target — verified via direct API
  probes.

Audit:
- 145 targets, 135 downloaded, 10 logged misses (all anticipated by
  the dry-run).
- 6/6 risky-chain hits (c:search + d:html) sample-audited; 0 failures.
  Three /Gallery-subpage hits (rajah-brooke-birdwing, atlas-moth,
  madagascan-sunset-moth) verified — parent article genuinely lacks
  pageimages, gallery is the only image source. Three d:html hits
  (ichthyosaurus-{skull,torso,tail}) all share the species infobox
  image, same shape as ACWW piece-suffix fossils.
- npm test: 129/129 passed. npm run build: clean.

scripts/resolve-report-acnl.txt is committed as a paper trail of which
items resolved via which chain step — useful for the v0.9.6 ACNH
scrape, where many of the same patterns (deep-sea-creature disambig,
Latin-genus truncation) will fire again.

* style(scripts): lint + prettier fixes for ACNL gap-fill scripts

* chore: polish nits — close #60, #92.2, #92.4, #95, #124 (#130)

Bundle three small fixes into one PR (two were already resolved):
- version-history.html velocity headline corrected to 29 days (#124)
- useIconChecker closure memoized with useMemo to avoid new function ref each render (#95)
- vi.unstubAllGlobals cleanup added to ItemIcon test afterEach to prevent global stub leakage (#92 item 4)

Fixes #60 and #92 item 2 were already resolved at inspection time and dropped from this bundle.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(icons): add hand-drawn robust cicada + brown cicada (bugs) (#131)

* release: v0.9.5-beta

ACNL icon gap-fill (96.5% coverage, ACCF to 100% via cross-game),
three hand-drawn icons (frog, robust cicada, brown cicada),
polish nits roll-up.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
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