Skip to content

feat(design): in-frame approve/reject control on every published frame - #312

Merged
izzywdev merged 1 commit into
masterfrom
claude/frames-approval-control
Jul 20, 2026
Merged

feat(design): in-frame approve/reject control on every published frame#312
izzywdev merged 1 commit into
masterfrom
claude/frames-approval-control

Conversation

@izzywdev

Copy link
Copy Markdown
Owner

You navigate the frames and there is nowhere to approve or reject — the approval mechanism was deferred. This is the first, manual increment of it.

What changes

build-frames-site.mjs injects a fixed approval bar into every published .html of a feature (not just the index), derived from the manifest's build.flows. Each pending flow gets Approve / Reject buttons that open a prefilled GitHub issue (feature · flow · route · decision · stamp) — a durable, auditable record. Approved flows show their state and drop the buttons.

Also fixes approvalOf(): it read per-flow approval from manifest.frames, but the source of truth is build.flows. The index pills were reading the wrong field. Both the pills and the bar now read build.flows via one flowsOf() helper, so they cannot disagree.

How you use it

Walk a flow at https://izzywdev.github.io/FuzeFront/ → the bar is pinned at the bottom → click Approve or Reject on a flow → a prefilled issue opens → submit it. A maintainer (or the follow-up workflow) reads the issue and flips approved in the manifest.

Follow-up (not in this PR)

The design-approval workflow that reads the issue and flips approved automatically (with the auth/staleness/idempotency gates from the plan). Until then a maintainer flips it — the record already exists in the issue.

Refs #294

🤖 Generated with Claude Code

The frames published fine but had no way to act on them — the reviewer could
walk a flow and had nowhere to approve or reject it. The approval mechanism was
deferred; this builds the first, manual increment.

build-frames-site.mjs now injects a fixed approval bar into EVERY published .html
of a feature (not just the index), derived from the manifest's build.flows. Each
pending flow gets Approve / Reject buttons that open a prefilled GitHub issue
(feature, flow, route, decision, stamp) — a durable, auditable record a workflow
or maintainer reads to flip the per-flow `approved`. Approved flows show their
state and drop the buttons.

Also fixes approvalOf(): it read per-flow approval from manifest.frames, but the
source of truth is build.flows — so the index pills were reading the wrong field
and showing every multi-flow feature as unapproved-by-default regardless. Now both
the index pills and the in-frame bar read build.flows via one flowsOf() helper, so
they can't disagree.

Prefill uses plain query params (title/body) — the only issue prefill that is
100% reliable. Buttons open in a new tab so the reviewer keeps their place.

Follow-up (not here): the design-approval workflow that reads the issue and flips
`approved` automatically; until it lands, a maintainer flips it.

Refs #294

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session-Id: f636c22e-1cd7-401e-8843-97e3e3a4ba01
@izzywdev izzywdev added the auto-merge Enable squash auto-merge once CI passes label Jul 20, 2026
@github-actions
github-actions Bot enabled auto-merge (squash) July 20, 2026 12:41
@github-actions

Copy link
Copy Markdown
Contributor

Automated code review (gate-code-review)

Credit balance is too low

Report-only — this check never blocks merge.

@izzywdev
izzywdev merged commit b6fd3a8 into master Jul 20, 2026
32 of 34 checks passed
@izzywdev
izzywdev deleted the claude/frames-approval-control branch July 20, 2026 12:41
@izzywdev
izzywdev restored the claude/frames-approval-control branch July 27, 2026 11:43
@izzywdev
izzywdev deleted the claude/frames-approval-control branch July 27, 2026 18:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge Enable squash auto-merge once CI passes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant