Skip to content

fix: the running-stream banner's width and drop its status line - #94

Merged
anderson-oki merged 5 commits into
mainfrom
fix/nec-74-running-stream-banner-width
Oct 4, 2026
Merged

anderson-oki merged 5 commits into
mainfrom
fix/nec-74-running-stream-banner-width

Conversation

@anderson-oki

@anderson-oki anderson-oki commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

The running-stream banner is a top safeAreaInset on the catalog page's scroll view, and that
region is the scroll view's frame. A ScrollView is as wide as its widest content — a rail still
on its skeleton runs past the window — so the banner was laid out centred on that inflated width
and only its right-hand end was on screen. The page now clamps the scroll view to the page width,
the same way the hero and the session banner already clamp their own.

The banner also drops its "Playing in its own window" line, which restated where the stream plays.
Both catalog status banners now share one chrome view instead of duplicating it.

Closes NEC-74

@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6acfe4fe-2f98-4455-a68f-2e5c6ef069c0
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

OpenNOW benchmark results

swift run OpenNOWBenchmarks all on fix/nec-74-running-stream-banner-width at 0f294127b554.

Informational only, not a merge gate. These timings come from a shared CI runner and move
between runs, so this comment claims no regression: there is no stable baseline to compare
against yet. Gating starts only once that baseline exists (Phase 0, P0-2).

Package Operation N Iterations Mean (ms) Min (ms) Max (ms)
OPN.GameServices JSONDecoder.decode([OPNGameInfo]) 96 25 6.483 5.265 9.218
OPN.GameServices JSONEncoder.encode([OPNGameInfo]) 96 25 5.012 4.186 8.663
OPN.GameServices OPNCatalogGameObject init map 96 50 0.222 0.179 0.273
OPN.GameServices OPNCatalogGameObject swiftValue map 96 50 0.249 0.215 0.306
OPN.GameServices OPNCatalogPanelObject init map 96 50 0.760 0.594 1.814
OpenNOW CatalogViewModel.catalogSections equivalent 96 500 0.006 0.004 0.120
OpenNOW CatalogViewModel.marqueeGames equivalent 96 500 0.046 0.040 0.086
OpenNOW selected detail section scan equivalent 96 2000 0.011 0.010 0.087
OpenNOW best image URL derivation equivalent 96 500 0.116 0.106 0.203
OPN.GameServices JSONDecoder.decode([OPNGameInfo]) 500 25 30.577 25.988 40.309
OPN.GameServices JSONEncoder.encode([OPNGameInfo]) 500 25 25.253 23.177 32.000
OPN.GameServices OPNCatalogGameObject init map 500 50 1.198 1.065 1.773
OPN.GameServices OPNCatalogGameObject swiftValue map 500 50 1.422 1.160 2.603
OPN.GameServices OPNCatalogPanelObject init map 500 50 1.103 1.012 1.311
OpenNOW CatalogViewModel.catalogSections equivalent 500 500 0.006 0.004 0.016
OpenNOW CatalogViewModel.marqueeGames equivalent 500 500 0.120 0.101 0.177
OpenNOW selected detail section scan equivalent 500 2000 0.023 0.017 0.433
OpenNOW best image URL derivation equivalent 500 500 0.717 0.562 1.673
OPN.GameServices JSONDecoder.decode([OPNGameInfo]) 1500 25 94.037 86.465 110.869
OPN.GameServices JSONEncoder.encode([OPNGameInfo]) 1500 25 74.630 67.917 93.050
OPN.GameServices OPNCatalogGameObject init map 1500 50 4.194 3.226 6.904
OPN.GameServices OPNCatalogGameObject swiftValue map 1500 50 3.956 3.448 5.925
OPN.GameServices OPNCatalogPanelObject init map 1500 50 2.781 2.126 5.276
OpenNOW CatalogViewModel.catalogSections equivalent 1500 500 0.005 0.004 0.017
OpenNOW CatalogViewModel.marqueeGames equivalent 1500 500 0.267 0.218 0.406
OpenNOW selected detail section scan equivalent 1500 2000 0.048 0.039 0.126
OpenNOW best image URL derivation equivalent 1500 500 2.086 1.670 4.539
OPN.GameServices JSONDecoder.decode([OPNGameInfo]) 3000 25 176.262 164.609 194.482
OPN.GameServices JSONEncoder.encode([OPNGameInfo]) 3000 25 143.695 128.319 159.581
OPN.GameServices OPNCatalogGameObject init map 3000 50 7.289 6.620 10.716
OPN.GameServices OPNCatalogGameObject swiftValue map 3000 50 8.597 7.729 12.101
OPN.GameServices OPNCatalogPanelObject init map 3000 50 2.874 2.540 8.343
OpenNOW CatalogViewModel.catalogSections equivalent 3000 500 0.005 0.004 0.017
OpenNOW CatalogViewModel.marqueeGames equivalent 3000 500 0.266 0.229 0.532
OpenNOW selected detail section scan equivalent 3000 2000 0.050 0.039 0.250
OpenNOW best image URL derivation equivalent 3000 500 4.516 3.893 8.075
OPN.Common OPNStreamPreferences.loadDeviceCapabilities n/a 200 0.512 0.120 55.905
OPN.Common OPNStreamPreferences.loadMicrophoneDeviceOptions n/a 100 0.002 0.000 0.142
OPN.Common OPNStreamPreferences.loadProfile/effectiveProfile n/a 1000 0.548 0.394 1.520

Full JSON: opennow-benchmarks artifact in this workflow run — one file per audit
(benchmark-catalog.json, benchmark-stream-preferences.json). The same JSON is printed in the
Run benchmark suite job log, which outlives the artifact.

Updated in place on every benchmark run for this PR.

@anderson-oki anderson-oki changed the title NEC-74: keep the running-stream banner the width of the page NEC-74: fix the running-stream banner's width and drop its status line Oct 4, 2026
@anderson-oki anderson-oki changed the title NEC-74: fix the running-stream banner's width and drop its status line fix: the running-stream banner's width and drop its status line Oct 4, 2026
@anderson-oki anderson-oki self-assigned this Oct 4, 2026
@anderson-oki
anderson-oki merged commit 8363325 into main Oct 4, 2026
7 checks 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.

1 participant