feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(swift-ios): mark Dev and Test builds in the home title - #7453

Open
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title
Open

feat(swift-ios): mark Dev and Test builds in the home title#7453
saphid wants to merge 1 commit into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue121-home-channel-title

Conversation

@saphid

@saphidsaphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

1. Observed problem and reproduction

Install Dev, Test, and ordinary SwiftUI builds, then open Home. Before this change, the environments button always read T3 Code, so Home did not distinguish Dev from Test.

2. Cause

The SwiftUI client had no explicit build-channel presentation model. Inferring a channel from bundle identifiers would couple upstream UI to one fork and could mislabel unknown builds.

3. Change and ownership boundary

T3_BUILD_CHANNEL supplied by an xcodebuild argument or local xcconfig expands into the generic T3BuildChannel Info.plist value. Supported values render T3 Code Dev in the existing number token or T3 Code Test in the existing keyword token. The environments button uses the same title in its accessibility label.

The change stays at the SwiftUI Home presentation boundary. It adds one small value model, updates the existing environments button, expands one plist value, documents the setting, and adds focused tests. It does not add a project default or forward this contributor-owned overlay through install-device.sh.

4. Intentionally unchanged

Missing, empty, unexpanded, upstream, and unknown declarations preserve the ordinary T3 Code title. Offline and reconnecting environment status titles remain higher priority.

Bundle identifiers, installed app names, signing and publication workflows, server behavior, providers, contracts, connection modes, web, desktop, and React Native mobile are unchanged. No adjacent cleanup is included.

5. Affected surfaces

  • Client and entry point: SwiftUI mobile, Home environments button only.
  • Platform: iOS and iPadOS presentation code.
  • Accessibility: T3 Code Dev. Manage environments, T3 Code Test. Manage environments, or the unchanged ordinary label.
  • Covered declarations: dev, test, upstream, missing, empty, whitespace, unexpanded, mixed-case, and unknown values.

6. Validation on current head

Head 0bb6321643348ddba4efa68bd385c03961544398 targets 22b22f1463b83963d851bd0574a36a20f224a28d on t3code/rebuild-mobile-app-swift.

  • PersonalBuildChannelTests: 7 executed, 7 passed, 0 failed.
  • xcrun swiftc -parse apps/swift-ios/Features/Workspace/PersonalBuildChannel.swift apps/swift-ios/Features/Workspace/WorkspaceView.swift: exit 0.
  • plutil -lint apps/swift-ios/Resources/Info.plist: exit 0, OK.
  • git diff --check against the target: exit 0.
  • Fresh ordinary, Dev, and Test simulator builds each embed the current head in T3GitCommit and pass codesign --verify --deep --strict.
  • The three preserved app variants have the same T3Code.debug.dylib SHA-256, 6f0d7897114811bf685add8fdb7a496fbb96deddb817046b7b74626756af64e2. Only the declared build channel differs.
  • Integrated proof ran on the leased iPhone 16 Pro simulator with iOS 26.5 against a disposable loopback environment. Dark and light semantic snapshots matched every visible title and accessibility label.
  • The dark and light video packets each contain three real project-filter taps. Packet validation passed all three actions and sealed the clean and annotated derivatives.
  • Direct read-only Claude Opus 5 high review of the frozen final diff exited 0 with no actionable findings.

An earlier focused-test attempt hit ENOSPC before any test ran. The retained retry on the same suite passed 7/7 after disposable build data was cleared.

7. Risks and limitations

  • The marker depends on the external build or signing overlay supplying T3_BUILD_CHANNEL. Ordinary upstream builds intentionally supply nothing and stay unmarked.
  • Unknown values intentionally fall back to the ordinary title.
  • The title is the changed behavior. The videos tap the unchanged project filter to prove the screen is live and to bind each state to the repository timeline workflow.
  • No unrelated SwiftUI flow was retested.

8. UI evidence

All media below comes from fresh builds of current head 0bb632164. The fixture contains one sanitized project and no threads. Dark mode is first, tight title crops are primary, and full-window context is collapsed.

Dark mode

Before, unmarked ordinary build

Ordinary T3 Code title, dark mode

After, Dev build

T3 Code Dev title, dark mode

After, Test build

T3 Code Test title, dark mode

Ordinary, Dev, and Test comparison

Dark-mode build-channel comparison

Live action sequence

Dark-mode live project-filter sequence

Clean dark-mode MP4 | Annotated dark-mode MP4

Full-window context, dark mode

Ordinary

Ordinary T3 Code full window, dark mode

Dev

T3 Code Dev full window, dark mode

Test

T3 Code Test full window, dark mode

Light mode evidence

Before, unmarked ordinary build

Ordinary T3 Code title, light mode

After, Dev build

T3 Code Dev title, light mode

After, Test build

T3 Code Test title, light mode

Ordinary, Dev, and Test comparison

Light-mode build-channel comparison

Live action sequence

Light-mode live project-filter sequence

Clean light-mode MP4 | Annotated light-mode MP4

Full-window context, light mode

Ordinary

Ordinary T3 Code full window, light mode

Dev

T3 Code Dev full window, light mode

Test

T3 Code Test full window, light mode

This section supersedes the earlier screenshot-only proof in the PR conversation.

9. Owning issue and target

Owning work item: saphid/t3code-personal#121. Authorized proof batch: saphid/t3code-personal#150. This PR targets t3code/rebuild-mobile-app-swift.

Vouched handoff checklist

  1. Pass. One observable Home-title behavior, five related files.
  2. Pass. The problem, cause, change, and non-goals match current head.
  3. Pass. The existing Home button, plist expansion, and design tokens are reused.
  4. Pass. Affected and unchanged clients, platforms, contracts, providers, and connections are named.
  5. Pass. The focused native suite passed 7/7.
  6. Pass. Parse, plist, diff, exact-head build, and strict signature checks passed.
  7. Pass. Ordinary, Dev, and Test runtime states were exercised on a leased simulator.
  8. Pass. Dark-first tight crops, collapsed full-window context, collapsed light evidence, and GIFs are embedded above; clean and annotated MP4s are linked above.
  9. Pass. Risks, the recovered ENOSPC attempt, and untested paths are stated plainly.
  10. Pass. The branch contains no unrelated cleanup or PR-only media files.
  11. Pass. The description and proof match 0bb632164; the final independent review inspected that commit.
  12. Pass. Scope, proof, and expected behavior are ready for maintainer review.

Overall handoff: PASS, ready for maintainer review.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I embedded dark-first, phone-readable current-head screenshots with full-window and light context collapsed
  • I embedded current-head comparison and action GIFs and linked clean and annotated MP4s
  • I verified every anonymous screenshot and GIF URL renders in the live PR body, and every MP4 URL downloads byte-identically with byte-range support

Implementation: GPT-5.6 Sol high in the Codex harness. Independent review: Claude Opus 5 high, read-only, exit 0, no actionable findings.

Upstream delivery

Delivery: direct
Validated against Theo commit: c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0
Depends on: none
Merge order: this PR only
Validation status: none of this PR's five changed paths overlaps Theo's new commit; a merge-tree simulation against the live target exited 0. Current head 0bb6321643348ddba4efa68bd385c03961544398 has green required CI, 7/7 focused native tests, exact-head signed Simulator proof, a successful direct Claude Opus 5 high review with no actionable findings, successful CodeRabbit/Cursor/Macroscope correctness reviews, and no unresolved threads. All 20 linked proof assets returned HTTP 206 byte ranges on 2026-09-01.
Dark mode evidence: yes
Clean screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/dev-dark-tight.png
Annotated screenshot: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-action.gif
Clean video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-clean.mp4
Annotated video: https://github.com/saphid/t3code/releases/download/pr-7453-evidence-0bb632164-20260830/channel-identity-dark-annotated.mp4

@coderabbitai

coderabbitaiBot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca7d1bf3-a4ae-4855-9312-9a5f68d86cb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
Comment threadapps/swift-ios/Features/Workspace/PersonalBuildChannel.swift Outdated
@macroscopeapp

macroscopeappBot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This adds a new configuration-controlled Dev/Test marker to the user-facing Home title while leaving ordinary builds and other runtime flows unchanged. The behavior is small and tested, but its core integration changes an existing shared WorkspaceView, so the bounded additive exception does not fully apply.

You can add or adjust custom eligibility rules. Learn more.

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 5127c40 to 39f2165CompareAugust 19, 2026 21:15
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@saphid

saphid commented Aug 20, 2026

Copy link
Copy Markdown
ContributorAuthor

Evidence refreshed on current head

The earlier 69523545 snapshot is superseded. Current-head proof for 0bb6321643348ddba4efa68bd385c03961544398 is now in the PR description: dark-first tight Ordinary/Dev/Test crops, comparison and action GIFs, collapsed full-window and light-mode context, plus clean and annotated MP4s.

Permanent public media: https://github.com/saphid/t3code/releases/tag/pr-7453-evidence-0bb632164-20260830

@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:01

Dismissing prior approval to re-evaluate 983164b

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 983164b024afda7537266604694c0bd7de0a1864. Configure here.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 20, 2026 22:22

Dismissing prior approval to re-evaluate 3bcdfec

macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 26, 2026 23:28

Dismissing prior approval to re-evaluate 6737462

@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from 6737462 to cc65bf2CompareAugust 27, 2026 03:13
@saphid
saphidforce-pushed the feat/issue121-home-channel-title branch from cc65bf2 to 0bb6321CompareAugust 27, 2026 05:19
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
ContributorAuthor

@t3dotgg Ready for human review. This is classified direct against live SwiftUI target c49bcc5d8a56324eb0ad9cf1b19d5dcc6ca0caa0: none of the five changed paths overlaps Theo's new commit, and the merge-tree simulation is clean. Head 0bb632164 has green required CI, 7/7 focused native tests, signed exact-head Simulator proof, no unresolved review threads, and successful CodeRabbit, Cursor, Macroscope correctness, and direct Claude Opus 5 high reviews. All 20 proof assets are reachable; the PR body now records the delivery block and exact media.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@saphid