feat: add portable UI routing and automatic project-team adoption - #3
Conversation
Assisted-by: Codex:GPT-6 [OpenSpec, filesystem]
Bundle the pinned portable design catalog, TypeScript Pro Max helpers, shared bootstrap routing and safe team installation. Preserve upstream restrictions and record native Windows and release acceptance gaps. Assisted-by: Codex:GPT-6 [Node.js, Git, research tools]
Assisted-by: Codex:GPT-6 [Git, Node.js]
Assisted-by: Codex:GPT-6 [Git]
Assisted-by: Codex:GPT-6 [Node.js, Git]
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Clarify deferred and license-evidence script references using the carried-payload contract. The six carried-payload checks pass; unrelated existing main CI failures remain recorded in the PR. Assisted-by: Codex:GPT-6 [Node.js, Git]
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0bfa619f63
ℹ️ 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".
| if (visited.has(absolute)) | ||
| continue; | ||
| visited.add(absolute); | ||
| stage(changes, root, file, merge(readFile(absolute) ?? '', body)); |
There was a problem hiding this comment.
Preserve literal linked instruction entrypoints
When a Windows-compatible project represents an instruction link by making AGENTS.md contain only CLAUDE.md, this loop treats it as ordinary prose and appends the managed block directly. The file is no longer a valid literal link, so subsequent bootstrap runs stop recognizing CLAUDE.md as the shared authority and begin maintaining two divergent instruction files. Resolve these literal in-project links before staging, as the UI installer already does.
AGENTS.md reference: AGENTS.md:L35-L36
Useful? React with 👍 / 👎.
| const explicit = input.teamId === undefined ? undefined : id(input.teamId, 'teamId'); | ||
| const selectedId = explicit ?? (record ? id(record.activeTeam, 'activeTeam') : undefined) ?? (teams.size === 1 ? [...teams.keys()][0] : undefined); |
There was a problem hiding this comment.
Prefer a supplied team over the previous active record
When normal team creation supplies input.team in a project that already has a routing record, the recorded active team wins this expression unless the caller redundantly provides teamId. The command then succeeds after reinstalling the old team, and the supplied team's manifest is never staged, contradicting the documented creation flow where {"project": ..., "team": ...} installs the newly created team.
Useful? React with 👍 / 👎.
| if (!stacks.length && pkgPath && has(pkgPath)) { | ||
| stacks.push('web'); | ||
| skills.push('web-design-guidelines'); |
There was a problem hiding this comment.
Detect bundled web frameworks before falling back
For package manifests using Vue, Nuxt, Svelte, Angular, Astro, or other stacks represented in the bundled Pro Max catalog, none of the preceding conditions adds the framework, so this fallback reports only web and builds a generic application interface web query. Those projects therefore never receive the promised manifest-matched stack guidance unless callers manually duplicate information already present in package.json.
Useful? React with 👍 / 👎.
UI tasks now load a shared, context-first routing protocol, while code work adopts an existing project team through real manifests and native definitions. Backend-only work does not load UI guidance.
Validation: eight real integration scenarios passed on macOS and a Linux Node22 container; 50 pinned Pro Max comparisons and 19 persistence/package checks passed. Independent source and skill-contract reviews are recorded. After integration with current main, distribution and rules checks pass.
Acceptance gaps: native Windows, every live harness and full installed Electron execution remain unverified. OpenSpec ui-ux-routing-and-team-defaults stays open for those gaps; this is not release certification. See docs/research/ui-ux-routing/DELIVERY.md for exact evidence boundaries.
Merge this PR before the companion The Boss PR. Prefer a merge commit so the exact mini revision used by The Boss remains reachable from main; if squash/rebase merging, update The Boss's submodule and integration-manifest pins to the resulting mini commit before merging it.
Companion PRs: full pack #102 and The Boss #4.
Current CI note: the initial PR matrix failed. The new carried-payload documentation failure was corrected and all six carried-payload checks now pass locally. The other 21 Ubuntu/Node22 failures also occur on main (main run 36218448719); they include stale bootstrap/model-routing assertions and missing Prometheus/OpenSpec executables. The latest matrix is pending. Existing failures are not waived or represented as passing.