Skip to content

feat(mobile): link to Builderlab web from Settings - #9300

Merged
brow merged 3 commits into
mainfrom
tomb/mobile-builderlab-account-link
Nov 11, 2026
Merged

brow merged 3 commits into
mainfrom
tomb/mobile-builderlab-account-link

Conversation

@brow

@brow brow commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Neither mobile app offers a way to reach Builderlab's web-only account features: GitHub linking, billing and creating a community. This adds a Builderlab account row to Settings that opens the build's Builderlab origin (app.builderlab.xyz on public builds) in the system browser.

The row shows only on public builds. An internal build's Builderlab is its organization's tenant, where billing and the single community are managed by the organization, so the link wouldn't lead anywhere useful. Nostr-only builds have no Builderlab.

Sign-in uses a non-ephemeral ASWebAuthenticationSession, which shares Safari's cookies, so Safari can reuse the Builderlab web session. A browser other than Safari, or Android, may still ask the user to sign in.

Before After
before after

Nothing else gets worse. The change adds one row and one browser launch on tap, and does no work at startup or in the background. A failure stays inside this row: if the browser doesn't open, a toast says so.

Validation

  • Added tests: builderlab_account_row_test.dart checks that the row opens HostedEnvironment.origin and shows a toast when the browser fails to open (public build), and that the row is absent otherwise. It is added to the CI public-build lane.
  • settings_page_test.dart: the version-footer scroll check now finds the footer after it scrolls just offscreen. The extra row pushed it there under public-build defines.
  • Settings tests pass under both public and Nostr-only defines, and flutter analyze is clean.
  • iOS simulator (public build, signed in to the public Builderlab): the row appears below Connection, and tapping it opens Safari at Builderlab. This simulator's session came from an identity import, not the in-app browser sign-in, so Safari was signed out. I haven't yet verified that Safari arrives signed in after a real in-app sign-in.

🤖 Generated with Claude Code

Public builds get a Builderlab account row in Settings that opens the
build's Builderlab origin in the system browser, for GitHub linking,
billing and community creation, which mobile does not offer. Internal
and Nostr-only builds don't show it.

Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@localhost>
Signed-off-by: Tom Brow <[email protected]>
@brow

brow commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-09T23:17:38.871270Z 6407c9d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6aa33fea81

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

square-tomb and others added 2 commits November 9, 2026 12:22
Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@localhost>
Signed-off-by: Tom Brow <[email protected]>
Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@localhost>
Signed-off-by: Tom Brow <[email protected]>
@brow

brow commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 6407c9db71

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@brow
brow marked this pull request as ready for review November 9, 2026 23:15
@brow
brow requested a review from a team as a code owner November 9, 2026 23:15
@github-actions github-actions Bot added the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 9, 2026
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown

🔐 Codex Security Review

Note: This is an automated, security-focused review generated by Codex.
Use it as a supplement to human review; false positives are possible.

Scope

  • Exact PR diff: 773849665e0592b9f99dbfbaa2f706de01a8f5a7...6407c9db7122fddd4bc94ba9c387e4bd941755d1
  • Model: gpt-6.1-sol

💡 Click "edited" above to see earlier reviews for this PR.


Review Summary

Overall Risk: NONE

No concrete security, correctness, or reliability findings in the authorized PR range. The new settings link uses a validated HTTPS origin from build configuration and is limited to public builds.

Findings

No concrete security, correctness, or reliability findings were identified.

Notes

  • Review used read-only source and history inspection. Builds and tests were not executed.

Generated by Codex Security Review |
Requested by: @brow |
Workflow run

@kazemek21 kazemek21 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.

Kyle reviewed this PR and the Nexus review-tracker notes and approved with no comments.

Posted by Codex (gpt-6.1-sol) on behalf of kylez.

@jedwards27 jedwards27 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.

🤖 :bot: Jude’s code review agent — APPROVE

Reviewed: 49511f02b6020ccd195848b3bfd431f0ec82d3c0..6407c9db7122fddd4bc94ba9c387e4bd941755d1 (open PR, exact head rechecked before submission). Risk: low-to-medium; this is a public-build-only mobile Settings handoff to a system browser, with no persistence or relay writes.

Integrated review: No author-actionable finding. The row is gated by HostedEnvironment.enabled (settings_page.dart:138; public distribution only), and the destination is the validated HTTPS build origin, not a relay-controlled URL (hosted_environment.dart:8-15, builderlab_build.dart:92-131). builderlab_account_section.dart:21-43 uses the external application launch mode, shows failure feedback on both false and PlatformException, and checks the widget is mounted before displaying it. The existing AppListRow/InkWell supplies the action semantics and title. The widget coverage exercises public-build opening, both failure results, and non-public omission (builderlab_account_row_test.dart:56-84); the public CI test lane includes this test (_ci-clients.yml:163-166). The extra row's footer-scroll effect is accounted for in settings_page_test.dart.

Validation: On the clean checkout at the exact head above, git diff --check 49511f02...HEAD passed. GitHub's exact-head Clients / Mobile Checks, Tests 1/3–3/3, Android, Mobile Swift Native and Release, and DCO checks report SUCCESS. Independent local Flutter execution did not complete because Hermit activation timed out; do not treat CI as a native interaction test.

Author action: none for this review. Verification owner: the release/native verification owner should check an exact-head public build on iOS after in-app Builderlab sign-in, tap Settings → Builderlab account, and confirm Safari lands at the intended origin with the expected session; also check Android's external-browser launch. The author-reported iOS Safari launch after identity import does not establish signed-in cookie continuity. Browser choice and Android may require a fresh sign-in. This is a named confidence gap, not an established code defect or a claim of native verification.

@brow
brow merged commit 045b637 into main Nov 11, 2026
100 checks passed
@brow
brow deleted the tomb/mobile-builderlab-account-link branch November 11, 2026 12:11
philazar added a commit that referenced this pull request Nov 11, 2026
Co-Authored-By: Claude Opus 5.5 <[email protected]>

* origin/main:
  feat(mobile/ios): show the message's own text in notifications (#9346)
  feat(mobile): prefill the agents you last tagged in a conversation (#9248)
  feat(mobile): start a Solo chat from a message or inbox row (#9251)
  feat(mobile): link to Builderlab web from Settings (#9300)
  fix(relay): bound invite preview host lookup (#9308)
  fix(relay): saturate filter limits instead of casting (#9230)
  fix(mobile): tell same-name agents apart in Solo (#9321)
  fix(mobile): join an open channel from the chat footer (#9253)
  fix(relay): fence pending subscriptions on close or replacement (#2382)
  fix(mobile): hide archived people and agents from choices; give them their own members section (#9320)
  Add video stacks and native iOS zoom playback (#9316)
  Support PNG and HEIC photos in the native iOS zoom gallery (#9314)
  fix(mobile): list known people in recipient pickers before a name is typed (#9311)
  feat(mobile): mark edited messages after the body (#8863)

Signed-off-by: Philip Azar <[email protected]>
philazar added a commit that referenced this pull request Nov 11, 2026
Co-Authored-By: Claude Opus 5.5 <[email protected]>

* origin/main: (22 commits)
  chore(deps): bump hickory-proto to 0.26.2 for RUSTSEC-2026-0487..0491 (#9351)
  feat(mobile/ios): show the message's own text in notifications (#9346)
  feat(mobile): prefill the agents you last tagged in a conversation (#9248)
  feat(mobile): start a Solo chat from a message or inbox row (#9251)
  feat(mobile): link to Builderlab web from Settings (#9300)
  fix(relay): bound invite preview host lookup (#9308)
  fix(relay): saturate filter limits instead of casting (#9230)
  fix(mobile): tell same-name agents apart in Solo (#9321)
  fix(mobile): join an open channel from the chat footer (#9253)
  fix(relay): fence pending subscriptions on close or replacement (#2382)
  fix(mobile): hide archived people and agents from choices; give them their own members section (#9320)
  Add video stacks and native iOS zoom playback (#9316)
  Support PNG and HEIC photos in the native iOS zoom gallery (#9314)
  fix(mobile): list known people in recipient pickers before a name is typed (#9311)
  feat(mobile): mark edited messages after the body (#8863)
  Add swipeable photo stacks and native iOS gallery preview (#9259)
  ci(docker): skip relay image publishes for main pushes outside the build context (#9310)
  Add manual-only relay image publishing (#9303)
  fix(mobile): bump Flutter to 3.47.9 for Android TLS fix (#9309)
  Serve video and poster previews for invite links (#9306)
  ...

Signed-off-by: Philip Azar <[email protected]>

This branch was previously deployed

1 inactive deployment
codex-review — 6407c9db Deployed Nov 9, 2026 by brow via Run Codex Security Review #14147
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

codex-security-review-current The posted Codex security review matches its recorded range.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants