remove the nun figgie and preserve avatar fallbacks - #362
Conversation
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
APPROVE. Engineering found no publishable changed-line issues in the exact three-dot comparison. Static review covered avatar retirement during publication and promotion, online and offline catalog filtering, replacement resolution, stale cache handling, refresh invalidation, pruning, login usage, and fallback behavior. Accessibility, localization, navigation and consent guards, async/error/lifecycle/race behavior, test honesty, and project rules were checked with no concrete regression found. Supplied GitHub evidence is structurally valid; several required checks were still in progress when captured, so CI remains pending for merge readiness.
Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
Pending checks: 4 check(s) are not complete.
This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.
Overview
Category: fix
User Impact: The nun avatar is no longer offered in Figgies, and agents already using it display a replacement instead.
Problem: The nun (
pollies-22, from the collection now called Figgies) needs to be removed without leaving existing agents with broken avatars. Updating the hosted catalogue alone would not cover users with cached artwork or offline installations.Solution: Retire the avatar at catalogue and media-resolution boundaries, and resolve existing references to the blue jelly (
gloopies-14) without rewriting agent files. Apply the same policy to static images, the login screen, and publishing so cached assets cannot reappear and older source folders cannot republish the retired character.No architectural law changes: the invocation and chat laws are unaffected. This PR changes app behavior and publication safeguards; it does not itself republish the hosted catalogues.
Changes
File changes
resources/retired-avatars.json
Defines the retired avatar and replacement once for the app and publishers.
scripts/avatar-manifest.mjs
Omits retired animated assets during publication and rejects promotion of catalogues that still contain them.
scripts/artifacts-manifest.mjs
Applies the same retirement guard to the corresponding static collection image while preserving unrelated images.
src-tauri/src/commands/avatars.rs
Filters fetched and cached catalogues, preserves valid collection covers, and resolves saved references to the replacement. Refresh notifications, legacy migration, and pruning respect retirement; disk-cache tests cover offline and missing-media behavior.
src-tauri/src/commands/artifacts.rs
Excludes the retired static image from cached and refreshed artifacts without clearing unaffected assets. Tests cover offline use and collection scoping.
src/shared/avatars/catalog.ts
Provides shared replacement resolution while keeping saved avatar references syntactically valid.
src/shared/avatars/catalog.test.ts
Checks reference compatibility and valid, non-retired replacements.
src/shared/api/artifacts.ts
Resolves retired static-image requests to the replacement even when stale artifact data remains in memory.
src/shared/api/artifacts.test.ts
Checks replacement selection, missing replacements, and preservation of unrelated collection images.
src/shared/hooks/useAvatarSrc.test.tsx
Verifies stale query-cache data cannot display the retired static image.
src/features/auth/ui/LoginView.tsx
Replaces the login-screen nun with
pollies-15.src/app/App.test.tsx
Checks the new login-screen character and explicitly rejects the retired reference.
src/features/agents/ui/tests/PersonaCard.test.tsx
Checks the existing local icon fallback when replacement media is unavailable.
src/scripts/tests/avatarManifest.test.ts
Verifies retired artwork is omitted from builds/uploads and cannot be restored through promotion of an old manifest.
Reproduction Steps
app-avatar:pollies-22. Confirm it displays the blue jelly replacement in its card and chat rather than the nun, without changing the saved agent file.pollies-15.Validation
main:just fmt-check,just check,just tauri-check, andjust clippy.useChattest “starts a new visible assistant stream when the structured intervention boundary arrives.” That file subsequently passed all 47 tests in isolation on both this branch and unmodified publicmain; no chat code or tests were changed here.Screenshots / Demos
No screenshots were captured. The visible changes are the missing Figgies option, blue jelly fallback, and login-screen replacement; the manual verification steps above cover each surface.