Skip to content

Add opt-in toggle to allow custom runner frames up to 300px wide - #101

Open
sugukaga wants to merge 1 commit into
runcat-dev:mainfrom
sugukaga:widen-custom-runner-frame-width
Open

sugukaga wants to merge 1 commit into
runcat-dev:mainfrom
sugukaga:widen-custom-runner-frame-width

Conversation

@sugukaga

@sugukaga sugukaga commented Oct 20, 2026 •

Copy link
Copy Markdown

Context of Contribution

  • Bug Fix
  • Refactoring
  • New Feature
  • Localization (new language or translation update)
  • Others

Summary of the Proposal

Add an opt-in "Allow wide frames (up to 300px)" toggle to the custom runner editor, following the direction suggested in runcat-dev/RunnerGallery#70.

  • The default stays exactly as it is today: frames must be 10–100px wide, and the "requirements" text is unchanged.
  • The toggle lives inside the custom runner editor sheet, right above the frames list. It is off by default and is not persisted — it applies only to the runner being created.
  • When it is switched on, a warning is shown directly under the toggle label explaining that frames wider than 100px may be hidden behind the camera notch on MacBooks, and that RunCat Neo keeps running even if the runner looks like it has stopped.
  • CustomRunnerEditor gets an allowsWideFrames flag and an allowWideFramesToggleSwitched(Bool) action; the width check becomes (10 ... maxFrameWidth) where maxFrameWidth is 300 when the toggle is on and 100 otherwise.
  • Two unit tests cover the new behavior (a 200×36 frame is rejected by default and accepted when the toggle is on), with a new solid_red_200x36.png fixture.

Localization note

Two new strings were added to Localizable.xcstrings: allowWideFrames and wideFramesWarning. Only English and Japanese are provided (both hand-written and reviewed by a human; no machine or LLM translation was used, per CONTRIBUTING). The other eight languages are intentionally left untranslated so they fall back to English, and are left to the maintainers / translators.

Reason for the new feature

The original RunCat shipped runners wider than 100px, most notably Metal Cluster Cat (298×36, five cats running side by side). The 100px cap makes it impossible to revive these through the Custom Runner feature, which is the migration path for runners that could not be carried over to Neo.

As discussed in runcat-dev/RunnerGallery#70, the 100px limit was tightened on purpose to avoid "the app is not running" reports caused by the camera notch hiding wide menu bar items. This PR therefore does not relax the limit globally; it keeps 100px as the default and only lets a user who explicitly opts in — and reads the warning — go up to 300px. Users who never touch the toggle see no change.

300px accommodates the widest known classic runner with a little headroom while still keeping a single runner well short of taking over the menu bar.

Checklist

  • I have read the CONTRIBUTING.md and agree to follow it.
  • This PR does not contain commits of multiple contexts.
  • The diff is minimal — no unrelated refactors, whitespace churn, or drive-by cleanups.
  • Code follows proper indentation and naming conventions.
  • Layering follows the LUCA architecture: no logic in DependencyClient, no logic in UserInterface views, no Asset/String Catalog references from Model.
  • Implemented using only APIs that can be submitted to the App Store.
  • Localization PRs only: Every translated string in this PR was hand-crafted by a human translator. No machine translation or LLM output was used. See CONTRIBUTING.md → Localization.

🤖 Generated with Claude Code

https://claude.ai/code/session_019XxvkQY8mttsmifV5LhyeQ

Keep the default 10...100px width range for custom runner frames, and
add an "Allow wide frames (up to 300px)" toggle to the custom runner
editor. When switched on, a warning explains that frames wider than
100px may be hidden behind the camera notch on MacBooks while the app
keeps running. The toggle is off by default and applies only to the
runner being created.

This lets classic runners such as Metal Cluster Cat (298x36) be revived
as custom runners without changing the behavior for anyone who does not
opt in. New strings are provided in English and Japanese only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019XxvkQY8mttsmifV5LhyeQ
@sugukaga
sugukaga force-pushed the widen-custom-runner-frame-width branch from 435c46e to 7201f96 Compare October 21, 2026 07:20
@sugukaga sugukaga changed the title Widen custom runner frame width limit from 100px to 300px Add opt-in toggle to allow custom runner frames up to 300px wide Oct 21, 2026

This branch has not been deployed

No deployments
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