Skip to content

feat(web-components): add isolated component groups - #61

Merged
amasiye merged 2 commits into
mainfrom
develop
Oct 17, 2026
Merged

amasiye merged 2 commits into
mainfrom
develop

Conversation

@amasiye

@amasiye amasiye commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Milestone

Console component-group support after 0.10.5. Andrew owns the release version and release.

Type

feature, bug, test, docs

Why this belongs in this milestone

Applications need independent site and editor bundles so a site-only change does not rebuild unrelated editor/runtime assets.

What changed

  • Add optional explicit groups and repeatable --group selection to build, watch and list through one resolver. Preserve ungrouped discovery and output paths.
  • Isolate group entries, manifests, esbuild dependency metadata, outputs and reload markers; reject overlapping ownership and escaping/conflicting paths.
  • Detect additions, removals and renames, including initially absent sources. Coordinate watch children and locks; version CSS-only changes and remove stale group-owned CSS.
  • Remove false shell-success for failed CLI commands by returning the application's exit status.
  • Stop silently ignoring unreadable existing watch directories; report their filesystem error. Absent directories remain normal watch states without warnings.
  • Keep executing Console classes authoritative when workspace autoloaders contain an older Console installation.

What did not change

No Core/request-time code, dependencies, compiler/runtime builds, deployment uploads, tags or releases changed.

Verification

  • Composer validation and diff checks passed.
  • Ubuntu 24.04 CI on PHP 8.4.26 and 8.5.11: Composer validation, full level-8 analysis and full test suite passed on both versions. Each reported 233 passed, 1073 assertions and one existing explicitly skipped ProjectConfig load test. Both normal push and PR workflows passed.
  • Local loader/package-discovery checks passed. The final absent-directory correction passed both affected tests: 2 passed, 11 assertions, no warnings, 3.20 seconds. Targeted level-8 PHPStan also passed.
  • Website reported real-esbuild source-CLI checks for unknown-group rejection and site-only rebuild isolation. Its separate source-reconstruction verification remains owned by Website.
  • Console orchestration tests use fake esbuild on macOS and Linux CI. Website independently exercised real esbuild. Windows was not tested.

Measured PHP orchestration used a 102-component fixture and fake esbuild. After interval-based polling, discovery medians were 2.344/2.353 ms, peak allocation 89,064/95,664 bytes, and one short watch CPU observation was 17.137/15.696 ms. The original watch sample was 5.018/8.380 ms before the polling correction. These observations are noisy, exclude native compilation and do not certify zero overhead. Later small correctness fixes were not re-benchmarked. Default topology detection is approximately one second plus scheduling/build/browser latency.

User impact

Grouped bundles can be built independently. Empty watch sessions remain active for the first component. Failed commands now return nonzero status. Unreadable existing source directories raise an error.

Release notes

Needed: component groups, watch behavior and corrected command failures. Andrew handles the release.

Upgrade notes

Existing configuration needs no migration. Groups are opt-in; shell workflows relying on false success must handle command failures.

Share explicit group resolution across build, watch and list; isolate outputs and dependency metadata, track membership changes and coordinate shutdown.

Remove false shell-success for failed CLI commands. Stop silently ignoring unreadable existing watch directories and report their filesystem errors. Keep the executing Console installation authoritative over older workspace copies.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T11:40:54.660819Z 4ad3c32 PR opened
ℹ️ 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: 4ad3c32888

ℹ️ 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".

Comment thread src/ApplicationFactory.php Resolved
Register the authoritative Console namespace in the shared extension loader after workspace autoload registration and before manifest parsing. Prevent older workspace Console classes from shadowing the executing CLI during discovery and later commands.

Extend the real-entrypoint regression with an installed extension manifest and incompatible older extension class. Verified the regression fails before this correction; affected discovery tests and level-8 analysis pass.
@amasiye
amasiye merged commit 7516854 into main Oct 17, 2026
4 checks passed
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.

1 participant