Skip to content

fix: show the notch tab bar in the Apple TV Tab Bar settings preview - #305

Merged
blurbery merged 2 commits into
mainfrom
fix/tv-tab-bar-preview-notch
Nov 13, 2026
Merged

blurbery merged 2 commits into
mainfrom
fix/tv-tab-bar-preview-notch

Conversation

@blurbery

@blurbery blurbery commented Nov 13, 2026 •

Copy link
Copy Markdown
Owner

Problem and reproduction

On Apple TV, Settings > General > Customise Tab Bar has a preview of the tab bar at the top.
After #302 moved the real bar to a notch with symbol tabs, the preview still drew the old floating capsule with every tab as text and Home as a white pill, so it no longer looked like the bar it was previewing.

The preview was a separate hand-drawn copy of the bar, which is why it was missed.

Implementation and impact

  • The preview is now the bar's own notch, hanging from the top of a small panel, and it plays itself on a loop: closed on the selected tab, opens to show the other tabs as symbols, moves the highlight to the next tab, chooses it and closes around it, then carries on from that tab.
  • It still follows the tab order, the Calendar toggle and the Search and Profile swap, and restarts when any of those change.
  • With Reduce Motion it stays open on one tab so every tab and its place still show. With a single tab it stays closed.
  • The preview never takes focus and keeps its "Tab bar preview" accessibility label.
  • The bar's tab, Search, avatar, divider and highlight drawing, plus its spring, close curve and tab transition, moved out of TopBar into shared views (TVTopMenuTabLabel and friends) that both the bar and the preview use. The real bar's focus handling, timing and layout are otherwise unchanged.

Apple TV only. No provider code is touched, and iPhone and iPad are unchanged.

The main risk is the refactor of the real bar's drawing into shared views. It is meant to be a straight move with no behaviour change.

Validation

  • xcodebuild build -project Vivid.xcodeproj -scheme VividTV for an Apple TV 4K (3rd generation) simulator on tvOS 27.0: succeeded.
  • Ran that build in the simulator on a Silo profile and opened Customise Tab Bar: the preview shows the notch with symbol tabs and the focused tab's name, both settled and partway through opening.
  • The real bar on Home still opened to symbol tabs with the highlight on the focused tab after the refactor.
  • No unit tests added (UI change).

Performance

Not applicable, no performance claim. No benchmark was run.

Testing status

  • Tested? Partly.
  • Environment: Apple TV 4K (3rd generation) simulator, tvOS 27.0.
  • Revision: the commit on this branch.
  • Checks and results: Built and ran in the simulator. The preview draws the notch and steps through the tabs, and I watched it there and was happy with it.
  • Limitations: Not tested on a physical Apple TV. Reduce Motion, the single-tab case and the swapped Search and Profile layout were not checked.

Design impact and approval

  • Design impact: The Tab Bar settings preview changes from the old capsule to the animated notch, hanging from a dark panel. The real tab bar's design is unchanged.
  • Approval from blurbery: Requested and approved by me while working on this.

Documentation impact

Updated docs/apple-tv-browsing.md to describe the new preview.

  • I checked the docs this change affects and updated them in this PR, or explained above why none needed changes.

AI disclosure

I implemented these changes and used Claude Fable 5.2 as a tool.

View guided diff

The preview in General > Customise Tab Bar still drew the old capsule with text tabs. It now draws the bar's own notch with the same views and plays it on a loop: it opens, moves to the next tab, chooses it and closes around it. With Reduce Motion it stays open on one tab.

The bar's tab, Search, avatar, divider and highlight drawing moved into shared views so the bar and the preview stay in step.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude review of the whole PR at 558379a. The summary comment lists everything found.

@github-actions

github-actions Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Claude review of the new commits 558379a..003c6b2

I reviewed the new commit, 003c6b2, covering TVInterfaceEditors.swift, docs/apple-tv-browsing.md and the shared label views in AppleTVShellBar.swift. Nothing needs fixing. shownFocus now returns nil when there is only one tab, so the preview stays closed under Reduce Motion as well. swapsUtilities is part of LoopKey, so swapping Search and Profile restarts the loop. The doc line about a single tab matches the code. I couldn't build or run it in the simulator.

I checked the changes since 558379a against the code and docs. The single-tab guard in shownFocus keeps the preview closed with or without Reduce Motion. swapsUtilities is now in LoopKey, so swapping Search and Profile restarts the loop. Calendar is part of tabs, so toggling it restarts the loop too. The new line in docs/apple-tv-browsing.md and the updated play() comment both match this behaviour. Nothing needs fixing.

claude-sonnet-5-5, high effort, 8 turns, about US$0.09 of API credit

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 3 files

Reply with feedback, questions, or to request a fix.

View guided diff | Re-trigger cubic

Comment thread docs/apple-tv-browsing.md Resolved
@blurbery
blurbery merged commit ddd58cf into main Nov 13, 2026
25 checks passed
@blurbery
blurbery deleted the fix/tv-tab-bar-preview-notch branch November 13, 2026 01:50
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