Skip to content

fix(web): open the startup composer without waiting for every environment - #20183

Merged
juliusmarminge merged 3 commits into
pingdotgg:mainfrom
shxntanu:fix/18599-startup-composer
Oct 20, 2026
Merged

juliusmarminge merged 3 commits into
pingdotgg:mainfrom
shxntanu:fix/18599-startup-composer

Conversation

@shxntanu

@shxntanu shxntanu commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

The index route waits for every enabled environment before opening a composer, even when a loaded project is available. A slow environment can leave the main pane blank.

Select the most recent project among those already loaded and open its draft immediately. Keep the global readiness gate before declaring the workspace empty, together with the existing navigation, project-existence, attempt and retry guards. Merge current main and keep its React Compiler conventions.

Continues @shxntanu's work in #20183, fixing #18599.

Verification:

  • PR-specific tests: 0 → 0; 180 existing tests across four relevant suites pass (new-thread handling, entities, relationship shells, sidebar logic). No route harness was added just to assert wiring.
  • Scoped web typecheck, targeted lint, formatting and diff checks pass.
  • One independent adversarial review round: Claude Opus 5.5 and Codex GPT-6 Sol found no code blockers. Kept the implementation agent's removal of a redundant attempt comment; the attempt guard itself is unchanged.
  • Actual isolated Linux Chromium app: with a loaded local project and another environment still pending (global bootstrap false), navigating to the index was blank before and opens a usable draft after. This exercises index navigation; a full reload's existing-thread welcome redirect was not used as evidence.
  • With zero loaded projects, no empty-workspace hero appears while an environment is pending; the hero appears after readiness. A project arriving after navigation to Settings leaves Settings open.
  • CI follow-up: the first web run failed waiting 1,000ms for syntax highlighting in an unchanged standalone WorkflowOpeningBlock test. Its focused Chromium suite passes (3 tests), using the available Chromium 154 instead of CI’s expected 148; this is not equivalent to a passing CI run. Failed GitHub jobs were rerun at the same head; Test Web and the aggregate Check now pass (CI attempt 3). No source or test change was needed.
  • Tradeoff: a loaded project's draft may open before a more recent project arrives from a slower environment.
Before: available project, blank index After: draft opens while the other environment is pending
Before: loaded project and blank index After: loaded project opens a draft

Before recording · After recording

macOS, Windows, iOS, Android and Electron desktop were not verified. Mobile uses its own navigation and was not changed. Local CI results do not substitute for current-head GitHub CI.

Implementation: Codex GPT-6.1 Sol, Codex harness in T3 Code. Test audit: Codex GPT-6 Astra. Review: Claude Opus 5.5 and Codex GPT-6 Sol.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Oct 16, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 9011c5e

Macroscope's review found this PR approvable — This is a focused fix to the existing startup handoff, allowing an already-loaded project to open while unrelated environments remain pending. Empty-workspace detection and existing navigation/project safety guards remain gated and unchanged.

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

@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Warning

Review limit reached

Only developers with an assigned seat can use this organization's usage-based review budget, and seats here are assigned manually. Ask an admin to assign a seat, or change the review continuation mode in Billing.

Next included review available in 9 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2242177f-5e64-4e9e-9b04-f853260cfcd0
📥 Commits

Reviewing files that changed from the base of the PR and between 9011c5e and bcba3c5.

📒 Files selected for processing: 1
  • apps/web/src/routes/_chat.index.tsx

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e9155fe7-9108-44de-9e51-ff12d08ab125
📥 Commits

Reviewing files that changed from the base of the PR and between 2577baf and 9011c5e.

📒 Files selected for processing: 1
  • apps/web/src/routes/_chat.index.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

The landing route now selects the most recently updated project while environments are still bootstrapping. It shows the no-projects hero only after bootstrapping completes.

Changes: Project landing behavior

Layer / File(s) Summary
Project selection and landing rendering
apps/web/src/routes/_chat.index.tsx
The route derives the most recently updated project regardless of bootstrap status. It no longer hides the landing page while environments load. If no project is available, it waits for bootstrapping to finish before showing the no-projects hero.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to 9011c

The composer can open as soon as a project is available, while the no-projects screen waits for bootstrap to finish. The observed selection behavior matches the stated startup tradeoff, so no material merge blocker remains.

Security architecture risk: 🔵 Low · up to 9011c

The change is limited to opening an already available project sooner, while the empty-workspace actions still wait for startup to finish. No security regression is confirmed, but project-removal, navigation, and failure handling could not be fully verified.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The demonstrated exposure change is earlier automatic entry into the existing project-draft flow. The route classification alone does not establish a new remotely callable operation, additional privileges, or broader cross-environment authority.
Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly describes the primary change: opening the startup composer without waiting for every environment.
Description check Passed The description covers the problem, implementation, scope, linked issue, verification results, screenshots, recordings, limitations, and tradeoffs. It does not reproduce the template headings exactly,…
Linked Issues check Passed The description links PR #20183 and issue #18599. The stated change directly addresses the linked blank-startup behavior.
Out of Scope Changes check Passed The change is limited to one web route and matches the stated objective. The summary reports no public API changes or unrelated modifications.
Full details: Description check

Explanation

The description covers the problem, implementation, scope, linked issue, verification results, screenshots, recordings, limitations, and tradeoffs. It does not reproduce the template headings exactly, but it provides the required information.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@juliusmarminge juliusmarminge self-assigned this Oct 19, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Taking over this one. I will preserve your commit, adapt the startup draft gate to current main, and verify that a loaded project opens while another environment is pending, with navigation and empty-workspace guards retained. Thanks @shxntanu for the smallest focused fix.

@shxntanu

Copy link
Copy Markdown
Contributor Author

Awesome, thanks!

@juliusmarminge
juliusmarminge merged commit 3c63b50 into pingdotgg:main Oct 20, 2026
40 of 42 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants