Skip to content

v1.11 Upgrades visual effects and normalizes user scores - #136

Merged
fboucher merged 43 commits into
mainfrom
dev
Oct 9, 2026
Merged

fboucher merged 43 commits into
mainfrom
dev

Conversation

@fboucher

@fboucher fboucher commented Oct 9, 2026

Copy link
Copy Markdown
Owner

This release introduces a significant refactor of visual effects, enhances user score management, and updates Ceebee's visual expressions.

Advanced Visual Effects (CloudFX)

  • Introduces a dedicated fx.js module that replaces all previous DOM/CSS-based loot item and weather effects with a sophisticated dual-canvas rendering engine.
  • Delivers highly detailed and realistic animations for potion, shield, umbrella, bomb, sun stone, rain stone, shovel, and dice rolls.
  • Implements cinematic elements like RPG-style banners, floating text, vignettes, and screen shake for a more immersive experience.
  • Removes a large amount of legacy effect CSS and JavaScript, streamlining the codebase.

User Score Normalization

  • Adds mergeUserScores logic to consolidate duplicate player entries in game sessions, ensuring each player (regardless of @ prefixes or casing) has a single, accurate score record.
  • Integrates this normalization across database migrations, saving, and loading of user session data for consistent data integrity.

Ceebee Enhancements and UI Refinements

  • Updates Ceebee's expressions with new GIFs for 'Hello', 'Talking', 'Laughing', and 'Tada' actions.
  • Improves the Ceebee chat bubble layout to better accommodate longer messages and integrates new GIFs into relevant commands and automatic responses (e.g., laughing at 'lol'/'lul').

Version Update

  • Bumps the project version to 1.11.0, reflecting these significant feature additions and improvements.

dependabot Bot and others added 30 commits February 12, 2026 19:02
Bumps [qs](https://github.com/ljharb/qs) to 6.14.2 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `qs` from 6.11.0 to 6.14.2
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.11.0...v6.14.2)

Updates `express` from 4.18.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](expressjs/express@4.18.2...v4.22.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
* feat: add regulars flagging and dynamic AI greeting for first-time chat

* fix: only announce autosave error in chat if verbose is true
fboucher and others added 13 commits May 29, 2026 16:55
Fixes the /api/export endpoint and overlay display when raiders
metadata lacks a viewers field. Defaults to 0 with nullish
coalescing in save, load, export template, overlay, and admin UI.
Fixes implicit globals in for-of loops in cloudbot.js.

v1.8.5
* Fixes null raid viewer counts (#118)

* Bump qs and express in /src

Bumps [qs](https://github.com/ljharb/qs) to 6.14.2 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `qs` from 6.11.0 to 6.14.2
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.11.0...v6.14.2)

Updates `express` from 4.18.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](expressjs/express@4.18.2...v4.22.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

* fix stream filename and add hide button

* fix version

* jumping version for test

* feat: implement Ceebee AI Chat feature

* Refactor Ceebee context to file and add soul.md

* Add dual Twitch bot connections and @ceebee_bot mention detection

* Add soul_sample.md and allow it in .gitignore

* clean sample

* Fix hide button in admin panel

* feat: add custom CSS and HTML structure for project banners and announcement system

* feat: add CloudBot client-side logic for session management, user tracking, and chat interaction

* feat(ceebee): implement auto-participation trigger and configuration (#100)

* fix(ceebee): allow broadcaster messages and add logging for auto-participation

* fix(ceebee): allow broadcaster messages and add logging for auto-participation (#101)

* style: clean up whitespace and unnecessary console logs

* feat: add regulars flagging and dynamic AI greeting (#103)

* feat: add regulars flagging and dynamic AI greeting for first-time chat

* fix: only announce autosave error in chat if verbose is true

* fix(attention): wrap text at 30 characters to prevent off-screen overflow (#81) (#104)

* Implement RPG Loot Game, dynamic weather overlay, and visual/audio refinements

* feat: initialize core CloudBot client logic and data structures

* fix: per-cloud base speed with event-driven multipliers (#111)

* fix(ceebee): prevent infinite chat loop by ignoring ceebee_bot messages (#115)

* fix(notes): resolve event duplication and add missing subscription data to show notes (#116)

* fix: resolve merge conflicts between dev and main branches

* quickfix: handle null raiders viewers in export/overlay (#118)

Fixes the /api/export endpoint and overlay display when raiders
metadata lacks a viewers field. Defaults to 0 with nullish
coalescing in save, load, export template, overlay, and admin UI.
Fixes implicit globals in for-of loops in cloudbot.js.

v1.8.5

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* fix: resolve duplicate welcome messages for regulars & bump version to 1.8.6

* Fix issues #119, #120, and #121: randomize shield position, fix stream events shownotes bug, add AI streamer shoutouts (#122)

* Fix issues #119, #120, and #121: randomize shield position, fix stream events shownotes bug, add AI streamer shoutouts

* add streamer status management for participants and update admin interface

* Add Registered Stream Events list to Current Session tab in admin page

* Add console debugging logs to admin page active session loading

* Fix TypeError in updateSessionInfo by checking for null DOM elements

* Silence F12 browser console debug logs in admin page

* Upgrade version to 1.9.0

* Adds AI-powered GitHub agents for automated assistance (#124)

* feat: add Antigravity GitHub Agent workflow and script for automated issue handling

* add opencode

* Fix environment variable name

* Change GitHub Actions permissions to write access

Updated permissions for GitHub Actions to allow write access for contents, pull requests, and issues.

* Randomize umbrella overlay locations like shield (#127)

Replace hardcoded umbrella positions with random coordinates
(15-80% top, 10-85% left) matching the shield randomization pattern.

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* feat: upgrade Twitch shoutouts to Helix API; add visual overlay & env config

* update version

* chore: stop tracking test.http and add to .gitignore

* chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /src (#125)

Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.5 to 1.20.6.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](expressjs/body-parser@1.20.5...1.20.6)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-version: 1.20.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump brace-expansion and nodemon in /src (#126)

Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) to 1.1.16 and updates ancestor dependency [nodemon](https://github.com/remy/nodemon). These dependencies need to be updated together.


Updates `brace-expansion` from 1.1.15 to 1.1.16
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.15...v1.1.16)

Updates `nodemon` from 2.0.22 to 3.1.14
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](remy/nodemon@v2.0.22...v3.1.14)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.16
  dependency-type: indirect
- dependency-name: nodemon
  dependency-version: 3.1.14
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* shoutout works

* stone mud added

* mud and dices

* shoutout helix improved

* Fixed stacked `@` usernames via sanitizeUsername. (#131)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: fboucher <[email protected]>

* fix: update GitHub Actions to resolve deprecation warnings

- actions/checkout@v2 → @v4 (fixes Node.js 20 deprecation)
- elgohr/Publish-Docker-Github-Action@master → @v5 (fixes set-output deprecation)

* Make loot item and dice effects more epic

Replace the basic CSS bubbles, rings and emoji with a small canvas
effects engine (fx.js) that mixes three styles:
- HD-2D (pixel sprites with bloom, light shafts, bokeh): potion,
  sun stone, rain stone
- pixel art: umbrella (rain, clouds, opening umbrellas), shovel
- realistic: bomb (fuse, fireball, shockwave, debris, smoke), shield
  (hex energy barrier deflecting bolts), mud splats, 3D dice with
  physics, shadows and a result reveal (doubles / crits)

Each item now shows an RPG dialogue banner naming the viewer who used
it. Commands, triggers and sounds are unchanged; the thunderstorm also
draws real lightning bolts now.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01LnRVnSFVcwf9GRbrbEtqtZ

* Polish loot item and dice effects (Sun Stone unchanged)

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01LnRVnSFVcwf9GRbrbEtqtZ

* Make effects cover more of the screen

Shovel throws mud three times, the bomb leaves a lingering fog, the rain
stone brings a downpour with drops on the glass and brighter lightning,
the potion fills the screen with mist and bubbles, the shield is bigger
and takes more hits, and the umbrella rain is heavier with more umbrellas.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01LnRVnSFVcwf9GRbrbEtqtZ

* Shorten the Rain Stone storm

The rain stone overlay now lasts about 9 seconds, and the thunderstorm
weather it starts ends after 15 seconds instead of 90 (raids keep the
full 90-second storm). The full-sky lightning flash is now opt-in, so
the ambient weather lightning stays subtle.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01LnRVnSFVcwf9GRbrbEtqtZ

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: fboucher <[email protected]>
Co-authored-by: Claude <[email protected]>
* Fixes null raid viewer counts (#118)

* Bump qs and express in /src

Bumps [qs](https://github.com/ljharb/qs) to 6.14.2 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `qs` from 6.11.0 to 6.14.2
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.11.0...v6.14.2)

Updates `express` from 4.18.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](expressjs/express@4.18.2...v4.22.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

* fix stream filename and add hide button

* fix version

* jumping version for test

* feat: implement Ceebee AI Chat feature

* Refactor Ceebee context to file and add soul.md

* Add dual Twitch bot connections and @ceebee_bot mention detection

* Add soul_sample.md and allow it in .gitignore

* clean sample

* Fix hide button in admin panel

* feat: add custom CSS and HTML structure for project banners and announcement system

* feat: add CloudBot client-side logic for session management, user tracking, and chat interaction

* feat(ceebee): implement auto-participation trigger and configuration (#100)

* fix(ceebee): allow broadcaster messages and add logging for auto-participation

* fix(ceebee): allow broadcaster messages and add logging for auto-participation (#101)

* style: clean up whitespace and unnecessary console logs

* feat: add regulars flagging and dynamic AI greeting (#103)

* feat: add regulars flagging and dynamic AI greeting for first-time chat

* fix: only announce autosave error in chat if verbose is true

* fix(attention): wrap text at 30 characters to prevent off-screen overflow (#81) (#104)

* Implement RPG Loot Game, dynamic weather overlay, and visual/audio refinements

* feat: initialize core CloudBot client logic and data structures

* fix: per-cloud base speed with event-driven multipliers (#111)

* fix(ceebee): prevent infinite chat loop by ignoring ceebee_bot messages (#115)

* fix(notes): resolve event duplication and add missing subscription data to show notes (#116)

* fix: resolve merge conflicts between dev and main branches

* quickfix: handle null raiders viewers in export/overlay (#118)

Fixes the /api/export endpoint and overlay display when raiders
metadata lacks a viewers field. Defaults to 0 with nullish
coalescing in save, load, export template, overlay, and admin UI.
Fixes implicit globals in for-of loops in cloudbot.js.

v1.8.5

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* fix: resolve duplicate welcome messages for regulars & bump version to 1.8.6

* Fix issues #119, #120, and #121: randomize shield position, fix stream events shownotes bug, add AI streamer shoutouts (#122)

* Fix issues #119, #120, and #121: randomize shield position, fix stream events shownotes bug, add AI streamer shoutouts

* add streamer status management for participants and update admin interface

* Add Registered Stream Events list to Current Session tab in admin page

* Add console debugging logs to admin page active session loading

* Fix TypeError in updateSessionInfo by checking for null DOM elements

* Silence F12 browser console debug logs in admin page

* Upgrade version to 1.9.0

* Adds AI-powered GitHub agents for automated assistance (#124)

* feat: add Antigravity GitHub Agent workflow and script for automated issue handling

* add opencode

* Fix environment variable name

* Change GitHub Actions permissions to write access

Updated permissions for GitHub Actions to allow write access for contents, pull requests, and issues.

* Randomize umbrella overlay locations like shield (#127)

Replace hardcoded umbrella positions with random coordinates
(15-80% top, 10-85% left) matching the shield randomization pattern.

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* feat: upgrade Twitch shoutouts to Helix API; add visual overlay & env config

* update version

* chore: stop tracking test.http and add to .gitignore

* chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /src (#125)

Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.5 to 1.20.6.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](expressjs/body-parser@1.20.5...1.20.6)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-version: 1.20.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump brace-expansion and nodemon in /src (#126)

Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) to 1.1.16 and updates ancestor dependency [nodemon](https://github.com/remy/nodemon). These dependencies need to be updated together.


Updates `brace-expansion` from 1.1.15 to 1.1.16
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.15...v1.1.16)

Updates `nodemon` from 2.0.22 to 3.1.14
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](remy/nodemon@v2.0.22...v3.1.14)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.16
  dependency-type: indirect
- dependency-name: nodemon
  dependency-version: 3.1.14
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* shoutout works

* stone mud added

* mud and dices

* shoutout helix improved

* Fixed stacked `@` usernames via sanitizeUsername. (#131)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: fboucher <[email protected]>

* fix: update GitHub Actions to resolve deprecation warnings

- actions/checkout@v2 → @v4 (fixes Node.js 20 deprecation)
- elgohr/Publish-Docker-Github-Action@master → @v5 (fixes set-output deprecation)

* Halve CeeBee GIF size in ChatBotShow and add Talking, Hello, Laughing GIFs

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

* Use new CeeBee GIFs for greetings, attention and lol; add !yes command

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

* Use CB-Hello.gif for the !hello command

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

* Move CeeBee to the left third of the screen so text bubbles fit

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

* Fit ChatBotShow text bubble on screen and move Ceebee further left for attention

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

* Add CB-Tada.gif: Ceebee spins like a tornado and lands with a tada pose

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

* Use CB-Tada.gif for !cloud; !bonjour plays sir versions only for surlydev

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: fboucher <[email protected]>
Co-authored-by: Claude <[email protected]>
* Bump version to 1.11.0

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

* Merge duplicate !drop player scores (@user, @@user, user)

Saved scores loaded back into the overlay were not normalized, so a player
stored as '@surlydev' no longer matched 'surlydev' and got a new entry each
time. Scores are now normalized and merged on load (client and server), on
save, and once at startup for sessions already in the database.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VP5ZpEuEZLDxbwgTMhb3TM

---------

Co-authored-by: Claude <[email protected]>
dev already carries main's content (it was brought in through a squash
merge), so every conflict is main's older version of code that dev has
since replaced: the legacy CSS/DOM loot effects (now fx.js), the inline
sanitizeUsername in saveSessionData (now module-level with
mergeUserScores), and the 1.10.0 version (now 1.11.0). Kept dev's side
for all six files; the merged tree is identical to dev.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01Dgr7MWcKx7DWRkkJYKsrbD
@fboucher
fboucher merged commit 5307850 into main Oct 9, 2026
1 check passed
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