Allow either hand at the commit, and measure continuous redraws

Committing from the agent rules out running it where there is no git
identity, a sandbox included. Either is now fine: commit on the user's
word where the setup allows it, or write the message and hand it over.

Redrawing continuously is the other addition. A level meter reported a
fresh value every animation frame, so its whole menu reconciled sixty
times a second, silence included, and nobody noticed until review. A PR
that adds anything of the kind now says what it costs, or better, counts
the redraws — commits rather than render calls, since React runs a
component it then discards.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
fkwp
2026-09-11 14:37:17 +02:00
co-authored by Claude Opus 5
parent 16f5472a11
commit a203304742
3 changed files with 13 additions and 7 deletions
+4 -2
View File
@@ -16,8 +16,8 @@ host's page. It is the MatrixRTC reference implementation.
`@media`, global `i18next` or the `widget` global — take it from a provider. `@media`, global `i18next` or the `widget` global — take it from a provider.
- The change works standalone, as a widget and as a component. Say what you checked. - The change works standalone, as a widget and as a component. Say what you checked.
- Every gate below is green before you push. - Every gate below is green before you push.
- Hand off after the first implementation, before the quality pass. Commit when the - Hand off after the first implementation, before the quality pass. Then commit on
user confirms direction, not before. the user's word where the setup allows it, or hand them the message.
## Read before you ## Read before you
@@ -48,5 +48,7 @@ pnpm i18n:check
- View model + marble tests, thin view, a story per state, an e2e spec. - View model + marble tests, thin view, a story per state, an e2e spec.
- Any new shared component called out explicitly, with why nothing existing fit. - Any new shared component called out explicitly, with why nothing existing fit.
- Template filled for real: what, why, before/after screenshots, repro steps. - Template filled for real: what, why, before/after screenshots, repro steps.
- Anything that redraws continuously — an animation frame, a stream — says what it
costs, or better, counts the redraws in a test.
- Branch `<handle>/<topic>`. Plain imperative commit subjects, no prefixes. - Branch `<handle>/<topic>`. Plain imperative commit subjects, no prefixes.
- Once review starts, fix forward. Never force-push a regeneration over a review. - Once review starts, fix forward. Never force-push a regeneration over a review.
+2
View File
@@ -12,6 +12,8 @@ lines a PR touches.
- Reuse the factories in `src/utils/test.ts` — `mockRemoteParticipant`, - Reuse the factories in `src/utils/test.ts` — `mockRemoteParticipant`,
`mockMatrixRoom`, `mockLivekitRoom`, `MockRTCSession`. Hand-rolled mocks drift. `mockMatrixRoom`, `mockLivekitRoom`, `MockRTCSession`. Hand-rolled mocks drift.
- Snapshots live in `__snapshots__/`; update with `pnpm test <Name> -u`. - Snapshots live in `__snapshots__/`; update with `pnpm test <Name> -u`.
- How often something redraws is testable: drive the frames and count commits, not
render calls. An effect with no dependency array runs once per commit.
- `component/**/*.test.ts` runs in the same jsdom project as `src`. - `component/**/*.test.ts` runs in the same jsdom project as `src`.
## Storybook ## Storybook
+7 -5
View File
@@ -39,10 +39,12 @@ Git-ignored. One kebab-case subfolder per task, matching the branch topic:
## Commit and PR readiness ## Commit and PR readiness
- Commit once the user confirms direction, or asks for one. Not before. - Commit once the user confirms direction, or asks for one. Not before. Where the
- Before committing, every gate in [AGENTS.md](../../AGENTS.md#gates) is green and setup has no git identity, a sandbox included, write the message to
the change is covered at the layers [testing.md](./testing.md) asks for. Read the `commit-msg.txt` and hand it over instead.
diff against [code-style.md](./code-style.md). - Ready means every gate in [AGENTS.md](../../AGENTS.md#gates) is green and the
- Re-run the whole checklist after any fix. Commit only on green. change is covered at the layers [testing.md](./testing.md) asks for. Read the diff
against [code-style.md](./code-style.md) first.
- Re-run the whole checklist after any fix. Only on green, either way.
- Once a human has started reviewing, fix forward — never force-push a - Once a human has started reviewing, fix forward — never force-push a
regeneration over a review in progress. regeneration over a review in progress.