Repository navigation
feat: extensions improvements - #278
Conversation
Checkpoint via cy-loop-tasks (iteration 2, phase B mode=tasks). Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 3, phase B mode=tasks). Focused Phase B gates passed; full make verify remains reserved for final program completion. Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 4, phase B mode=tasks). Scoped Phase C gates passed; the single monorepo make verify remains reserved for final program completion. Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 5, phase B mode=tasks). Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 6, phase B mode=tasks). Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 7, phase B mode=tasks). Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 8, phase B mode=tasks). Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 9, phase B mode=tasks). Visual recapture was explicitly waived by the operator; functional browser and focused gates passed. Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 10, phase B mode=tasks). Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 11, phase B mode=tasks). QA planning checkpoint: six targeted extension charters, one Marketplace/Skills canary, 676 materialized scenarios, and explicit coverage of Safety Invariants 1-17 plus ADRs 001-008. Co-Authored-By: Codex <[email protected]>
|
Too many files changed for review. ( |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedToo many files! This PR contains 492 files, which is 192 over the limit of 300. To get a review, narrow the scope: Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (171)
📒 Files selected for processing (502)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
React Doctor found 4 new issues in 1 file · 4 warnings · score 89 / 100 (Great) · 0 fixed · vs 4 warnings
Reviewed by React Doctor for commit |
|
|
||
| useEffect(() => { | ||
| cursorRef.current = 0; | ||
| setStreamed({ entries: [], instance }); |
There was a problem hiding this comment.
React Doctor · react-doctor/no-derived-state (warning)
Storing "streamed" in state when you can derive it from other values costs an extra render.
Fix → Work out the value while rendering (or with useMemo if it's expensive) instead of copying it into state and synchronizing it during render or through an effect. See https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state
|
|
||
| useEffect(() => { | ||
| cursorRef.current = 0; | ||
| setStreamed({ entries: [], instance }); |
There was a problem hiding this comment.
React Doctor · react-hooks-js/set-state-in-effect (warning)
This synchronous effect update causes an extra render: Calling setState synchronously within an effect can trigger cascading renders. Prefer deriving or initializing the value before render. If the effect must read a browser API after mount, treat this as advisory or suppress it with // react-doctor-disable-next-line react-hooks-js/set-state-in-effect.
Fix → Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:
- Update external systems with the latest state from React.
- Subscribe for updates from some external system, calling setState in a callback function when external state changes.
Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).
|
|
||
| useEffect(() => { | ||
| if (!enabled || name === "" || !follow) { | ||
| setStatus(follow ? "idle" : "paused"); |
There was a problem hiding this comment.
React Doctor · react-doctor/no-derived-state (warning)
Storing "status" in state when you can derive it from other values costs an extra render.
Fix → Work out the value while rendering (or with useMemo if it's expensive) instead of copying it into state and synchronizing it during render or through an effect. See https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state
|
|
||
| useEffect(() => { | ||
| if (!enabled || name === "" || !follow) { | ||
| setStatus(follow ? "idle" : "paused"); |
There was a problem hiding this comment.
React Doctor · react-hooks-js/set-state-in-effect (warning)
This synchronous effect update causes an extra render: Calling setState synchronously within an effect can trigger cascading renders. Prefer deriving or initializing the value before render. If the effect must read a browser API after mount, treat this as advisory or suppress it with // react-doctor-disable-next-line react-hooks-js/set-state-in-effect.
Fix → Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:
- Update external systems with the latest state from React.
- Subscribe for updates from some external system, calling setState in a callback function when external state changes.
Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).
Summary
Completes the greenfield Extension DX overhaul across the daemon, public SDKs, CLI, HTTP/UDS APIs, native tools, Web, documentation, release automation, and living QA system. The branch implements the full Phase A–G MVP plus its QA planning/execution pair as one hard-cut contract, with no compatibility layer for the replaced extension model.
What shipped
SDK contracts and manifest v2
permissions.requiresandprovidescontracts, derived consent areas, deterministic__describeoutput, schema digests, minimum SDK versions, and rejection of legacy manifest fields.HookSourceExtensionwith explicit hook ordering and complete dispatch coverage.extensions.trust,extensions.sources,extensions.dev, and resource policy, including live config lifecycle metadata and precise diagnostics for removedextensions.marketplace.*keys.Code-first authoring and local development
compozy extension init,build, andvalidateflows with five embedded templates for Go and TypeScript extensions.dist/gen-<hash>publications, overlap protection, and release compatibility checks.Distribution, provenance, and contributed commands
Operability, Web, docs, and official skill
compozyskill, importable examples, release workflow, and migration guidance to the new hard-cut model.QA and review outcomes
Compozy Impact Audit
compozy__extensions_*authoring, development, distribution, provenance, publish, update, and removal toolset; command execution remains governed by the canonical tool dispatcher and approval policy.