From ff6b9d4bd01cd8420efa7af0cbb17d1c4fd5feb6 Mon Sep 17 00:00:00 2001 From: Lewis Buckley Date: Tue, 23 Sep 2025 15:03:40 +0100 Subject: [PATCH 1/7] Adjust OTel collector to scrape beamer container metrics --- config/otel_collector.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/config/otel_collector.yml b/config/otel_collector.yml index 4e1ac5ead..38ad41224 100644 --- a/config/otel_collector.yml +++ b/config/otel_collector.yml @@ -8,12 +8,12 @@ receivers: - host: unix:///var/run/docker.sock refresh_interval: 10s relabel_configs: - # Limit scraping to labeled containers with port 9394 exposed + # Limit scraping to labeled containers with port 9394 or 9000 exposed - source_labels: [__address__] - regex: .*:9394 + regex: .*:(9394|9000) action: keep - source_labels: [__meta_docker_container_name] - regex: (/fizzy-(web|jobs)-.*|/kamal-proxy) + regex: (/fizzy-(web|jobs)-.*|/fizzy-beamer|/kamal-proxy) action: keep # Pull service and role from Kamal Docker labels @@ -23,14 +23,20 @@ receivers: target_label: role - source_labels: [__meta_docker_container_name] - regex: ^/kamal-proxy$ + regex: ^/(kamal-proxy|fizzy-beamer)$ target_label: service - replacement: kamal-proxy + replacement: $1 + - source_labels: [__meta_docker_container_name] regex: ^/kamal-proxy$ target_label: role replacement: proxy + - source_labels: [__meta_docker_container_name] + regex: ^/fizzy-beamer$ + target_label: role + replacement: beamer + exporters: prometheus: endpoint: 0.0.0.0:9394 From 83cdf567ddfc243c532d2a4134bee71552c5e277 Mon Sep 17 00:00:00 2001 From: Lewis Buckley Date: Tue, 23 Sep 2025 15:24:13 +0100 Subject: [PATCH 2/7] Expose port 9000 for beamer now --- config/deploy.staging.yml | 4 +++- config/otel_collector.yml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config/deploy.staging.yml b/config/deploy.staging.yml index 5f577d830..c0b6502e4 100644 --- a/config/deploy.staging.yml +++ b/config/deploy.staging.yml @@ -27,10 +27,12 @@ accessories: - BASECAMP_REGISTRY_PASSWORD options: user: 1000 # Match the UID of the Rails app, for volume permissions + publish: + - 5001:5001 + - 9000:9000 volumes: - fizzy:/home/beamer cmd: beamer run --retention=1h --metrics-port=9000 - port: 5001:5001 hosts: - fizzy-staging-app-01 - fizzy-staging-app-101 diff --git a/config/otel_collector.yml b/config/otel_collector.yml index 38ad41224..4623b4911 100644 --- a/config/otel_collector.yml +++ b/config/otel_collector.yml @@ -44,7 +44,7 @@ exporters: service: telemetry: logs: - level: "info" + level: "debug" pipelines: metrics: receivers: [prometheus] From 672623fd883568fe4430d9dc6aac563b2ce2b215 Mon Sep 17 00:00:00 2001 From: Lewis Buckley Date: Tue, 23 Sep 2025 15:29:57 +0100 Subject: [PATCH 3/7] Drop log level back to info --- config/otel_collector.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/otel_collector.yml b/config/otel_collector.yml index 4623b4911..38ad41224 100644 --- a/config/otel_collector.yml +++ b/config/otel_collector.yml @@ -44,7 +44,7 @@ exporters: service: telemetry: logs: - level: "debug" + level: "info" pipelines: metrics: receivers: [prometheus] From 3fde76b1e7ec79769a47467e2fb9b81fa2d05bab Mon Sep 17 00:00:00 2001 From: Lewis Buckley Date: Tue, 23 Sep 2025 15:32:02 +0100 Subject: [PATCH 4/7] Update beta and production beamer accessories to expose port 9000 --- config/deploy.beta.yml | 4 +++- config/deploy.production.yml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config/deploy.beta.yml b/config/deploy.beta.yml index c6a817bcc..9720dd8db 100644 --- a/config/deploy.beta.yml +++ b/config/deploy.beta.yml @@ -27,10 +27,12 @@ accessories: - BASECAMP_REGISTRY_PASSWORD options: user: 1000 # Match the UID of the Rails app, for volume permissions + publish: + - 5001:5001 + - 9000:9000 volumes: - fizzy:/home/beamer cmd: beamer run --retention=1h --metrics-port=9000 - port: 5001:5001 hosts: - fizzy-beta-app-01 - fizzy-beta-app-101 diff --git a/config/deploy.production.yml b/config/deploy.production.yml index 186af0a2f..b7b755479 100644 --- a/config/deploy.production.yml +++ b/config/deploy.production.yml @@ -27,10 +27,12 @@ accessories: - BASECAMP_REGISTRY_PASSWORD options: user: 1000 # Match the UID of the Rails app, for volume permissions + publish: + - 5001:5001 + - 9000:9000 volumes: - fizzy:/home/beamer cmd: beamer run --retention=1h --metrics-port=9000 - port: 5001:5001 hosts: - fizzy-app-101 - fizzy-app-102 From 8d9eacdb01357779a280b20bfeeabf66953d6a46 Mon Sep 17 00:00:00 2001 From: Andy Smith Date: Fri, 26 Sep 2025 12:43:54 -0500 Subject: [PATCH 5/7] Add reverse icon --- app/assets/stylesheets/icons.css | 2 ++ app/helpers/accesses_helper.rb | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/icons.css b/app/assets/stylesheets/icons.css index 6eab28b1b..6c3eaa936 100644 --- a/app/assets/stylesheets/icons.css +++ b/app/assets/stylesheets/icons.css @@ -63,6 +63,8 @@ .icon--move { --svg: url("move.svg "); } .icon--notification-bell-access-only { --svg: url("bell.svg "); } .icon--notification-bell-watching { --svg: url("bell-off.svg "); } + .icon--notification-bell-reverse-access-only { --svg: url("bell-off.svg "); } + .icon--notification-bell-reverse-watching { --svg: url("bell.svg "); } .icon--password { --svg: url("password.svg "); } .icon--pencil { --svg: url("pencil.svg "); } .icon--person { --svg: url("person.svg "); } diff --git a/app/helpers/accesses_helper.rb b/app/helpers/accesses_helper.rb index 833a1a2b0..3a8aa3bce 100644 --- a/app/helpers/accesses_helper.rb +++ b/app/helpers/accesses_helper.rb @@ -54,7 +54,7 @@ module AccessesHelper params: { show_watchers: show_watchers, involvement: next_involvement(access.involvement) } ) do safe_join([ - icon_tag("notification-bell-#{access.involvement.dasherize}"), + icon_tag("notification-bell-#{icon_only ? 'reverse-' : nil}#{access.involvement.dasherize}"), tag.span( involvement_access_label(collection, access.involvement), class: class_names("txt-nowrap txt-uppercase", "for-screen-reader": icon_only), From ece2dae1541a83f6b2dee17d4c604efca64a5100 Mon Sep 17 00:00:00 2001 From: Andy Smith Date: Fri, 26 Sep 2025 12:50:39 -0500 Subject: [PATCH 6/7] Ensure icon_only persists after turbo frame reload --- app/helpers/accesses_helper.rb | 2 +- app/views/collections/involvements/update.html.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/helpers/accesses_helper.rb b/app/helpers/accesses_helper.rb index 3a8aa3bce..8e3dee6a3 100644 --- a/app/helpers/accesses_helper.rb +++ b/app/helpers/accesses_helper.rb @@ -51,7 +51,7 @@ module AccessesHelper method: :put, aria: { labelledby: involvement_label_id }, class: "btn", - params: { show_watchers: show_watchers, involvement: next_involvement(access.involvement) } + params: { show_watchers: show_watchers, involvement: next_involvement(access.involvement), icon_only: icon_only } ) do safe_join([ icon_tag("notification-bell-#{icon_only ? 'reverse-' : nil}#{access.involvement.dasherize}"), diff --git a/app/views/collections/involvements/update.html.erb b/app/views/collections/involvements/update.html.erb index 28c5cfe0e..3b9539e4f 100644 --- a/app/views/collections/involvements/update.html.erb +++ b/app/views/collections/involvements/update.html.erb @@ -1 +1 @@ -<%= access_involvement_advance_button(@collection, Current.user, show_watchers: params[:show_watchers] == 'true') %> +<%= access_involvement_advance_button(@collection, Current.user, show_watchers: params[:show_watchers] == 'true', icon_only: params[:icon_only] == 'true') %> From 957de36833f5ee866159c6e68ce3f46695f37f53 Mon Sep 17 00:00:00 2001 From: Andy Smith Date: Fri, 26 Sep 2025 15:43:33 -0500 Subject: [PATCH 7/7] Bubbles postiioned regardless of column name --- app/assets/stylesheets/bubble.css | 20 -------------------- app/assets/stylesheets/card-columns.css | 5 +++++ app/assets/stylesheets/card-perma.css | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/app/assets/stylesheets/bubble.css b/app/assets/stylesheets/bubble.css index e334b8582..8bcf6f4d6 100644 --- a/app/assets/stylesheets/bubble.css +++ b/app/assets/stylesheets/bubble.css @@ -52,24 +52,4 @@ position: absolute; text-align: center; } - - .bubble--doing, - .bubble--on_deck { - inset-inline-start: 100%; - translate: -60% -60%; - - .card-perma__bg & { - --bubble-number-max: 42px; - --bubble-size: 6rem; - - inset: calc(var(--bubble-size) / -4) calc(var(--bubble-size) / 1.5) auto auto; - translate: 0 0 !important; - - @media (max-width: 800px) { - --bubble-size: 4.5rem; - - inset: calc(var(--bubble-size) / 1.5) 0 auto auto; - } - } - } } diff --git a/app/assets/stylesheets/card-columns.css b/app/assets/stylesheets/card-columns.css index cc33e509a..60d04cdd3 100644 --- a/app/assets/stylesheets/card-columns.css +++ b/app/assets/stylesheets/card-columns.css @@ -108,6 +108,11 @@ } } + .bubble { + inset-inline-start: 100%; + translate: -60% -60%; + } + @media (any-hover: hover) { .card:has(.card__background img:not([src=""])):hover .card__background img:not([src=""]) { filter: blur(3px) brightness(1.2); diff --git a/app/assets/stylesheets/card-perma.css b/app/assets/stylesheets/card-perma.css index e589d4333..61e8215df 100644 --- a/app/assets/stylesheets/card-perma.css +++ b/app/assets/stylesheets/card-perma.css @@ -91,6 +91,20 @@ } } + .bubble { + --bubble-number-max: 42px; + --bubble-size: 6rem; + + inset: calc(var(--bubble-size) / -4) calc(var(--bubble-size) / 1.5) auto auto; + translate: 0 0; + + @media (max-width: 800px) { + --bubble-size: 4.5rem; + + inset: calc(var(--bubble-size) / 1.5) 0 auto auto; + } + } + @media (max-width: 800px) { --padding-inline: var(--main-padding);