Skip to content

feat: extract PerBulletFeedback + drill-down disclosure model - #49

Merged
s-annam merged 2 commits into
mainfrom
gh-38
Jun 12, 2026
Merged

feat: extract PerBulletFeedback + drill-down disclosure model#49
s-annam merged 2 commits into
mainfrom
gh-38

Conversation

@s-annam

@s-annam s-annam commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Extract PerBulletFeedback, BulletRow, and needsAttention out of Result.tsx (was inline, 167 lines) into a new feature component at src/components/features/PerBulletFeedback.tsx. Redesigns the flat ~35-row table into an actionable drill-down model.

  • Rollup summary leads: total bullets + per-check pass/fail counts (missing metric / length / weak verb)
  • Bullets grouped by failure category, categories ordered worst-first (most failing first)
  • Within a category, bullets sorted by most checks failed
  • Each category in a native <details>/<summary> disclosure, collapsed by default
  • Passing bullets counted in the summary, not rendered at full weight

Result.tsx drops from ~480 to ~320 LOC (now under the 200-LOC-per-component guideline pressure). No logic changed in scoring or parsing. BulletObservation shape untouched. Auto-rewrite stretch deferred per issue scope.

Closes #38

Test plan

  • npm run typecheck clean
  • npm run test green (194 tests)
  • npm run build clean
  • Manually verified in npm run dev / npm run preview

s-annam and others added 2 commits June 12, 2026 13:52
Extract PerBulletFeedback, BulletRow, and needsAttention out of
Result.tsx (was inline, 167 lines) into a new feature component at
src/components/features/PerBulletFeedback.tsx (267 lines).

Redesign the flat table as a drill-down model:
- Rollup summary row: total bullets + per-check pass/fail counts
- Bullets grouped by failure category (missing metric / length / verb)
- Categories ordered worst-first (most failing bullets first)
- Within each category bullets sorted by most checks failed (descending)
- Each category wrapped in a native <details>/<summary> disclosure,
  collapsed by default so passing sections stay out of the way
- Passing bullets counted in the summary but not rendered at full weight

Result.tsx drops from ~480 to ~320 LOC and imports the component as a
single line; no logic was changed in the scoring or parsing pipeline.

Resolves #38
Replace the per-failure-mode <details> grouping with a single
resume-ordered list: each failing bullet appears exactly once (was
duplicated across categories). Failed-check chips and the rewrite
trigger sit inline on the bullet's own line, keeping each row compact.

RewriteButton's idle trigger drops from a bordered block under every
bullet to a low-weight inline "Rewrite" text-link with an SVG sparkle
(no emoji), 44px tap target, aria-label. Rendered on failing bullets
only — passing bullets are counted, not buttoned. Panels/engine/
telemetry unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@s-annam
s-annam merged commit a044a4c into main Jun 12, 2026
1 check passed
@s-annam
s-annam deleted the gh-38 branch June 12, 2026 21:10
s-annam added a commit that referenced this pull request Jun 15, 2026
…49)

Extract PerBulletFeedback out of Result.tsx into its own feature component. Flatten the per-failure-mode grouping into a single resume-ordered list (each failing bullet once); failed-check chips + the WebLLM rewrite trigger sit inline on each bullet's line. RewriteButton idle trigger slimmed to a low-weight inline "Rewrite" text-link (SVG sparkle, 44px tap, aria-label), failing bullets only. Rebased onto main; verify CI green; 243 tests pass.

Resolves #38

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
s-annam added a commit that referenced this pull request Jun 25, 2026
…49)

Extract PerBulletFeedback out of Result.tsx into its own feature component. Flatten the per-failure-mode grouping into a single resume-ordered list (each failing bullet once); failed-check chips + the WebLLM rewrite trigger sit inline on each bullet's line. RewriteButton idle trigger slimmed to a low-weight inline "Rewrite" text-link (SVG sparkle, 44px tap, aria-label), failing bullets only. Rebased onto main; verify CI green; 243 tests pass.

Resolves #38

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
s-annam added a commit that referenced this pull request Jun 28, 2026
…49)

Extract PerBulletFeedback out of Result.tsx into its own feature component. Flatten the per-failure-mode grouping into a single resume-ordered list (each failing bullet once); failed-check chips + the WebLLM rewrite trigger sit inline on each bullet's line. RewriteButton idle trigger slimmed to a low-weight inline "Rewrite" text-link (SVG sparkle, 44px tap, aria-label), failing bullets only. Rebased onto main; verify CI green; 243 tests pass.

Resolves #38

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

Per-bullet feedback — redesign from flat dump to actionable model

1 participant