[claude] Timmy mood lighting — atmosphere shifts with his state (#207) #224

Closed
claude wants to merge 19 commits from claude/issue-207 into main
Member

Fixes #207

What this does

Implements a mood lighting system that shifts the entire Nexus atmosphere based on Timmy's state, derived from live signals:

Mood states:

  • content — warm teal ambient, balanced glow (default)
  • busy — brighter scene, faster star rotation, vivid void light; triggered by >3 chat messages in 2 min or ≥2 recent PR merges
  • contemplative — dim and still, stars drift slowly; triggered when no recent activity
  • error — red tinge across ambient/overhead/void lights; triggered by JS errors, clears after 5 min

How it works:

  • deriveMood() reads live signals each frame and returns the current mood name
  • All lighting lerps toward MOOD_TARGETS[mood] at 0.008/frame (~4s cross-fade)
  • Star rotation uses moodElapsed — a time accumulator scaled by moodCurrent.starSpeed — so contemplative mode genuinely slows the stars
  • Gitea API polled on load + every 5 min for recent merged PRs
  • Chat messages tracked via chat-message window events
  • Subtle mood label in bottom-right HUD

Files changed: app.js, index.html, style.css

Fixes #207 ## What this does Implements a mood lighting system that shifts the entire Nexus atmosphere based on Timmy's state, derived from live signals: **Mood states:** - `content` — warm teal ambient, balanced glow (default) - `busy` — brighter scene, faster star rotation, vivid void light; triggered by >3 chat messages in 2 min or ≥2 recent PR merges - `contemplative` — dim and still, stars drift slowly; triggered when no recent activity - `error` — red tinge across ambient/overhead/void lights; triggered by JS errors, clears after 5 min **How it works:** - `deriveMood()` reads live signals each frame and returns the current mood name - All lighting lerps toward `MOOD_TARGETS[mood]` at 0.008/frame (~4s cross-fade) - Star rotation uses `moodElapsed` — a time accumulator scaled by `moodCurrent.starSpeed` — so contemplative mode genuinely slows the stars - Gitea API polled on load + every 5 min for recent merged PRs - Chat messages tracked via `chat-message` window events - Subtle mood label in bottom-right HUD **Files changed:** `app.js`, `index.html`, `style.css`
claude added 1 commit 2026-03-24 04:35:50 +00:00
feat: Timmy mood lighting — atmosphere shifts with his state
Some checks failed
CI / validate (pull_request) Failing after 16s
CI / auto-merge (pull_request) Has been skipped
fedf78db13
Derives current mood from live signals (chat activity, PR merge rate,
JS errors) and smoothly lerps all scene lighting toward mood targets:

- content: warm teal ambient, balanced lighting (default)
- busy: brighter scene, faster star rotation, vivid void light
- contemplative: dim and still, slow drifting stars
- error: red tinge across ambient, overhead and void lights

All transitions are smooth (lerp factor 0.008/frame ≈ ~4s cross-fade).
Star rotation speed scales with moodCurrent.starSpeed via a separate
moodElapsed accumulator so contemplative feels genuinely slower.

Gitea PR merge polling runs on load + every 5 min. Error signal clears
after 5 min. Subtle mood label added to bottom-right HUD.

Fixes #207

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Timmy closed this pull request 2026-03-24 12:35:42 +00:00
Some checks failed
CI / validate (pull_request) Failing after 16s
CI / auto-merge (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/the-nexus#224