Skip to content

fix(builderlab): default unconfigured builds to production - #1881

Merged
tellaho merged 5 commits into
mainfrom
tho/builderlab-availability
Oct 29, 2026
Merged

tellaho merged 5 commits into
mainfrom
tho/builderlab-availability

Conversation

@tellaho

@tellaho tellaho commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Overview

Category: fix

User Impact: Builderlab sign-in is available by default in desktop builds without deployment-specific setup.

Problem: Development and locally packaged builds without an explicit Builderlab URL could not offer sign-in, although release builds already supplied the production URL.

Solution: Default frontend and native configuration to https://app.builderlab.xyz after loading deployment settings. Preserve explicit overrides, process-over-file precedence, the empty-value opt-out and native HTTPS/origin validation.

The existing production Apps policy grants file access and the configured origin plus https://compose-ctrl.builderlab.xyz. Backup-session reuse still requires separate backup service/namespace configuration, a matching origin and user choice. Production identity-binding permission already existed.

Changes

File changes

vite.config.ts
Default the public Builderlab URL to production when the input is absent.

crates/plugin-manager/build.rs
Use the same native default. Cover missing and explicitly empty inputs, and give parser fixtures distinct override hosts so silently skipped records cannot pass through the fallback.

browser-host/vite-config.test.mjs
Exercise the actual Vite configuration in development and build modes for the default and empty opt-out.

.env.example
Document the default and empty-value opt-out.

docs/configuration.md
Explain deployment overrides, native grants and conditional backup-session reuse.

src/bundled/reminders/RemindDialog.test.tsx
Retain the push-prerequisite repair: wait for the select's initial focus handoff before keyboard navigation, preserving all existing assertions.

Validation

  • All 75 plugin-manager tests passed at 2f6b2aef2b1ac8ee8bdf6731516787bc94f4a571; subsequent commits leave that Rust source unchanged.
  • A temporary parser mutation skipping export records passed all four original build-configuration tests and failed the two corrected fixtures. The parser was restored.
  • The full reminder-dialog file passes all six tests at 58a576862f6781673ff1a351a4f673248a71ba86; its source is unchanged by the scope split.
  • At cb86833821ca3bb07b702f03e0f4a205fb90561c, all 78 restored AgentsPage tests and required pre-push TypeScript/related-test, design and workspace Clippy gates passed. The AI review/fix record records exact validation and source-review limits.

Native OAuth, human acceptance and final-head review remain pending. Hosted CI is evaluated separately from local checks.

Reproduction Steps

  1. Leave BUZZ_BUILDERLAB_URL unset and restart the desktop development build. Native grants require a rebuild/restart.
  2. Open Settings → Plugins → Builderlab agents. Expect Sign in with Builderlab, then complete sign-in to check native OAuth.
  3. Rebuild with BUZZ_BUILDERLAB_URL= to verify the explicit opt-out.
  4. Rebuild with an alternate HTTPS deployment to verify the override; URLs containing credentials, query parameters or fragments must still be rejected by the native build.

tellaho and others added 3 commits October 28, 2026 20:02
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho

tellaho commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Carl, AI coding agent: at the author's request, Princess Donut source-reviewed the original change at 713fd7b78badd2532093950002003a650efcee72. She found no runtime defect and one required parser-test coverage correction.

The current PR is scoped to Builderlab URL defaults, configuration coverage/docs and the previously authorized reminder-test prerequisite. Commit cb86833821ca3bb07b702f03e0f4a205fb90561c reverses the AgentsPage implementation and its added regression; neither file remains in the net PR diff. The merged-tree check preserves current main's AgentsPage files exactly. The title and description now reflect this six-file scope.

Resolved findings: 2f6b2aef2 gives two parser fixtures distinct override hosts. A temporary mutation skipping export records passed all four original build-configuration tests and failed the two corrected fixtures; the parser was restored. 501e92314 clarifies native grants and conditional backup-session reuse. Production identity-binding permission already existed. The reminder prerequisite 58a576862 waits for initial popup focus before keyboard navigation, preserving the existing assertions and production controls.

At clean final head cb86833821ca3bb07b702f03e0f4a205fb90561c, all 78 tests in the full AgentsPage file passed. Required pre-push TypeScript/related tests (577.95 seconds), design checks (4.87 seconds) and workspace Clippy (1.58 seconds) passed with two workers, followed by successful publication. Pre-commit, attribution and diff checks passed. All 75 plugin-manager tests passed at 2f6b2aef2; the tested Rust source remains unchanged. The reminder-dialog file passed all six tests at 58a576862 and is unchanged by this split.

Limits: no final-head independent review, native OAuth walkthrough or human acceptance has occurred. The original head's WebKit receipt-frontier failure remains unclassified; new-head hosted CI is separate from the passing local checks.

tellaho and others added 2 commits October 28, 2026 21:28
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho changed the title fix(builderlab): enable default setup and explain unavailable harnesses fix(builderlab): default unconfigured builds to production Oct 29, 2026
@tellaho
tellaho marked this pull request as ready for review October 29, 2026 05:04
@tellaho
tellaho requested a review from a team as a code owner October 29, 2026 05:04
@tellaho

tellaho commented Oct 29, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Final-head review by Princess Donut (AI agent), posted on Taylor's behalf from Taylor's GitHub account. This is a comment, not an approval.

Scope: what changed from 713fd7b78 to cb8683382. I did not re-review the whole PR. Merge base is 8372a98e, and the head merges cleanly with origin/main (git merge-tree).

Result: no blockers. My earlier finding is resolved.

Earlier finding: default masked the parser assertions. Resolved.

  • The crates/plugin-manager/build.rs fixtures now use https://OVERRIDE.EXAMPLE:443/deployment/, which should produce https://override.example, and https://after-multiline.example/.
  • Neither host is the production default. If the parser silently skipped one of these lines, the build would fall back to production and the assertion would fail.
  • The test still covers BOM, export, quoting, dropping the default port and promoting the record after a multiline value. The hidden-value cases still assert the default.
  • I ran bin/cargo test -q -p buzzodz-plugins --test build_config at cb8683382 with a clean tree: 4/4 pass. tests/build_config.rs includes build.rs through #[path], so CI runs these tests.

Native-grant docs (docs/configuration.md, .env.example). Accurate.

I checked the docs against the source:

  • Recognized deployments: they get files and the mapped control-plane origin through apps_control_plane (crates/plugin-manager/src/lib.rs).
  • Backup-session reuse: this needs BUZZ_NSEC_BACKUP_SERVICE_URL/NAMESPACE to be set at compile time, plus a matching origin (src-tauri/src/nsec_backup.rs, source_allowed).
  • Binding validator: it already accepted production before this PR. It now also accepts the configured origin (src-tauri/src/identity.rs, template).

Reminder-test focus barrier (RemindDialog.test.tsx:193-195). Fine.

  • The change only touches a test. It waits for the selected option to take focus before sending {End}{Enter}, and vi is already imported.
  • It doesn't hide a product defect, because a real user can't press a key inside the popup's initial focus-handoff window.
  • It's unrelated to Builderlab, and the PR body already discloses it. That's acceptable given the required push hook.

AgentsPage removal. Clean.

git diff 8372a98e..cb8683382 -- src/bundled/agents is empty, so the harness-messaging change is fully reverted, tests included. The optional AgentsPage nits from my first review no longer apply to this PR.

Optional

None.

Limits:

  • This is a source review plus the one targeted test run above. I didn't run the rest of the suite or read CI.
  • Native OAuth, rendered UI and human acceptance are still unverified.
  • I didn't inspect any participant or external content.

@tellaho tellaho closed this Oct 29, 2026
@tellaho tellaho reopened this Oct 29, 2026

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

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

@tellaho
tellaho merged commit 9a39103 into main Oct 29, 2026
103 of 105 checks passed
@tellaho
tellaho deleted the tho/builderlab-availability branch October 29, 2026 06:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants