Skip to content

Add selectable character pack system#11

Open
keith-oak wants to merge 1 commit intoryanstephen:mainfrom
keith-oak:feature/character-packs
Open

Add selectable character pack system#11
keith-oak wants to merge 1 commit intoryanstephen:mainfrom
keith-oak:feature/character-packs

Conversation

@keith-oak
Copy link
Copy Markdown

Summary

  • Introduces a CharacterPack model following the existing PopoverTheme pattern — struct with static presets, allPacks array, static var current, menu switching by index tag
  • Bruce & Jazz remain the default pack with zero behaviour change for existing users
  • Adds a Droids pack (R2-Do2, C-3POa, BB-Gr8) with pixel art HEVC-with-alpha walking animations as an opt-in alternative
  • New "Characters" submenu in the menu bar for runtime pack switching
  • Selection persisted via UserDefaults (selectedCharacterPack key)
  • Character toggle menu items are now dynamic — adapts to current pack's character count and names
  • Each pack defines: characters (video, timing, colours, offsets), thinking/completion phrases, and onboarding text

Changes

File What
CharacterPack.swift New — CharacterConfig + CharacterPack structs with two presets
LilAgentsController.swift Refactored to loadCharacters(from:) factory + switchPack(_:)
WalkerCharacter.swift Added applyConfig(_:), phrases now read from current pack
LilAgentsApp.swift Dynamic character items, "Characters" submenu, single toggleCharacter method
project.pbxproj Added droid .mov files and CharacterPack.swift to build
walk-r2d2-01.mov Pixel art R2-D2 waddle animation (369 KB)
walk-c3po-01.mov Pixel art C-3PO stiff walk animation (457 KB)
walk-bb8-01.mov Pixel art BB-8 rolling animation (417 KB)

Test plan

  • Build and run — Bruce & Jazz appear as default (no behaviour change)
  • Open Characters menu → switch to "Droids" → three pixel art droids appear on dock
  • Switch back to "Bruce & Jazz" → original characters return
  • Quit and relaunch → last selected pack is remembered
  • Click a droid → popover opens with Claude terminal
  • Thinking/completion bubbles show pack-appropriate phrases
  • All four visual themes still work with both packs

Introduce a CharacterPack model that extracts character configuration
into declarative data structures, following the existing PopoverTheme
pattern. Bruce & Jazz remain the default pack. A new "Droids" pack
(R2-Do2, C-3POa, BB-Gr8) is available as an opt-in alternative.

- New CharacterPack.swift with CharacterConfig and CharacterPack structs
- Each pack defines: characters, timing, colours, phrases, onboarding text
- "Characters" submenu in menu bar for switching packs at runtime
- Selection persisted via UserDefaults
- Dynamic character toggle items adapt to current pack
- Includes pixel art HEVC-with-alpha walking animations for three droids
@mpearon
Copy link
Copy Markdown

mpearon commented Mar 27, 2026

Would love to see a "Clippy & Co." back here too!

@adityasaravana
Copy link
Copy Markdown

adityasaravana commented Apr 12, 2026

oh man please merge this @ryanstephen

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.

3 participants