Skip to content

feat(desktop-pet): add sprite pool and prepare v2.3.0 - #25

Merged
Monster12138 merged 8 commits into
mainfrom
codex/desktop-pet-interaction-main
Aug 26, 2026
Merged

Monster12138 merged 8 commits into
mainfrom
codex/desktop-pet-interaction-main

Conversation

@Monster12138

Copy link
Copy Markdown
Owner

Summary

  • Add desktop-pet sprite pools with launch selection, timed rerolls, and a context-menu shuffle action.
  • Keep the pet window on-screen during sprite resizing and add sprite-pack animation tooling/assets.
  • Simplify the settings random-pool control to an icon-only button with accessible labels.
  • Bump Familiar and app metadata to v2.3.0 and add bilingual release notes.

Validation

  • cargo test --workspace
  • cargo clippy --workspace --all-targets -- -D warnings
  • cd app && npm run build
  • git diff --check

No telemetry or remote data collection is added.

Mmmmmmi and others added 8 commits August 26, 2026 23:58
…uan-cat

Split each state into connected components (body, bubble, sweat drop,
Zzz, sparkles) and derive a second frame per state (breathing squash,
hop, accessory offsets). Ships as APNG under the .png extension with
pack.json animated=true so static viewers keep the first frame.
The APNG part-animation experiment is retired; keep the static first
frame as the shipped art. The animated state remains recoverable from
the preceding feat(sprites) commit, and scripts/animate_pack.py can
regenerate the frames at any time.
Clamp the window frame into the monitor work area when an anchored
resize changes the window size, and add a periodic containment check
to the position watchdog so any partial off-screen drift is corrected
within 2 seconds.
Add sprite_pool to the desktop-pet config: when non-empty, the pet is
randomly drawn from the pooled packs on launch, rerolled every 10
minutes, and a right-click 'Shuffle Pet' menu item rerolls on demand.
Settings cards get a pool toggle per pack; an explicit single-pack
choice clears the pool. Legacy configs without sprite_pool default to
the previous single-pack behavior.
Derives two-frame APNG part animations (breathing squash, hop,
accessory offsets) from static state art via connected-component
separation, and finalizes pack.json animated flag, sha256 and fpack.
@Monster12138
Monster12138 merged commit 4d280a8 into main Aug 26, 2026
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