From aed6724157022385b60562fbc7e52e8090d856f8 Mon Sep 17 00:00:00 2001 From: mikidoodle Date: Thu, 24 Sep 2026 13:46:13 -0400 Subject: [PATCH 1/9] Improve event accessibility and admin tools --- .../components/_blackhole_preview.scss | 65 ++++++ app/components/sidebar_component.html.erb | 9 + .../admin/buku_x3_events_controller.rb | 18 ++ app/controllers/my/settings_controller.rb | 3 + app/helpers/application_helper.rb | 4 + .../controllers/blackhole_controller.js | 169 ++++++++++++-- app/models/user/preference.rb | 1 + .../rocket_progress/contributor_export.rb | 47 ++++ app/views/admin/buku_x3_events/show.html.erb | 9 + app/views/layouts/application.html.erb | 11 +- app/views/shared/_blackhole.html.erb | 5 +- app/views/shared/_event_simulator.html.erb | 38 +++ config/routes.rb | 1 + ...cle_effects_enabled_to_user_preferences.rb | 5 + db/schema.rb | 3 +- .../admin/buku_x3_events_controller_test.rb | 60 +++++ .../buku_x3/progress_controller_test.rb | 6 +- .../buku_x3/reveals_controller_test.rb | 49 ++++ test/controllers/my_controller_test.rb | 19 ++ test/fixtures/user/preferences.yml | 1 + test/javascript/blackhole_options_test.mjs | 221 ++++++++++++++++++ test/models/user/preference_test.rb | 2 + test/services/rocket_progress_test.rb | 48 ++++ 23 files changed, 766 insertions(+), 28 deletions(-) create mode 100644 app/services/rocket_progress/contributor_export.rb create mode 100644 app/views/shared/_event_simulator.html.erb create mode 100644 db/migrate/20260924060219_add_particle_effects_enabled_to_user_preferences.rb diff --git a/app/assets/stylesheets/components/_blackhole_preview.scss b/app/assets/stylesheets/components/_blackhole_preview.scss index 31de9c80c..8bb6a4a9a 100644 --- a/app/assets/stylesheets/components/_blackhole_preview.scss +++ b/app/assets/stylesheets/components/_blackhole_preview.scss @@ -1,3 +1,68 @@ +.event-simulator { + position: fixed; + right: var(--space-m); + bottom: var(--space-m); + z-index: 9998; + width: min(360px, calc(100vw - 2 * var(--space-m))); + max-height: 80dvh; + overflow: auto; + border: 2px solid var(--color-brand-lilac); + border-radius: 8px; + background: var(--color-set-1-bg); + color: var(--color-space-text); + font-size: var(--font-size-m); + + &__toggle { + padding: var(--space-m); + cursor: pointer; + } + &__controls { + padding: 0 var(--space-m) var(--space-m); + display: grid; + gap: var(--space-s); + } + &__field { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--space-s); + } + &__field input { + max-width: 45%; + accent-color: var(--color-brand-lilac); + } + &__field input[type="number"] { + background: var(--color-set-2-bg); + color: inherit; + border: 1px solid var(--color-set-2-fg-secondary); + border-radius: 8px; + padding: var(--space-xxs); + } + &__hint { + color: var(--color-set-1-fg-secondary); + margin: 0; + } + &__status { + color: var(--color-brand-lilac); + margin: 0; + } + &__actions { + display: flex; + flex-wrap: wrap; + gap: var(--space-xs); + } + &__actions button, + &__actions a { + cursor: pointer; + border: 1px solid var(--color-brand-lilac); + border-radius: 999px; + background: var(--color-set-2-bg); + color: inherit; + padding: var(--space-xxs) var(--space-xs); + font: inherit; + } +} + .blackhole { &__masks { position: absolute; diff --git a/app/components/sidebar_component.html.erb b/app/components/sidebar_component.html.erb index 62cec3b3c..57d7f1304 100644 --- a/app/components/sidebar_component.html.erb +++ b/app/components/sidebar_component.html.erb @@ -140,6 +140,15 @@ Blur sensitive info like addresses and API keys +
+ + Turn off drifting particles while keeping the event damage and cursor repair effect +
+ <% if user.slack_id.present? %>