Skip to content

feat(accessibility): expose toolbar shortcuts to assistive technology - #73

Closed
seonghobae wants to merge 40 commits into
mainfrom
feat/toolbar-shortcut-discoverability
Closed

feat(accessibility): expose toolbar shortcuts to assistive technology#73
seonghobae wants to merge 40 commits into
mainfrom
feat/toolbar-shortcut-discoverability

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Buyer-visible gap

Inkspan's built-in toolbar visually advertised editor shortcuts but did not expose all shipped shortcuts programmatically. Exact-head review also showed that shortcut truth must be established across the complete editor surface, not only from Tiptap extension-local keymaps.

Bounded repair

  • expose shipped cross-platform shortcuts through WAI-ARIA aria-keyshortcuts using normative Control and Meta tokens;
  • publish bold Control+B Meta+B, italic Control+I Meta+I, link editing Control+K Meta+K, undo Control+Z Meta+Z, and redo Control+Shift+Z Meta+Shift+Z Control+Y Meta+Y;
  • preserve native buttons, aria-pressed, roving focus, SafeLink validation, existing prompt-driven link behavior, existing Tiptap undo/redo commands, and host-owned shortcut-conflict policy;
  • add no transport, authorization, tenant, persistence, credential, migration, retention, collaboration-provider, model-policy, or release responsibility to Inkspan.

Tiptap's Link extension has no default shortcut, but Inkspan already implements Ctrl/Cmd+K in EditorFrame. The toolbar exposes the actual repository-level shipped binding rather than inferring absence from the extension alone.

Test-first and review lineage

Protected base and latest live main: ca49a3249403be88ba3cb7c9589b3652f820e17c at the latest refetch.

  • Initial shortcut RED 303149b4d3e586ba32c1306d1a7d98542142d9d3 and GREEN 29d8c156e40eb0975687ee83053bedf3de7d77a5 established aria-keyshortcuts.
  • Redo RED 11439733245d76c6dc3b58f4fb9bf2105ac94b43 and GREEN bc634bf2f3237e58156ad68691b140ab90718992 added the already-shipped Ctrl/Cmd+Y alternative.
  • Repository-level review found the pre-existing EditorFrame Ctrl/Cmd+K path. Link RED 8790b4e50bced266b38763c6301097aaeb775e4b and production 19f4d99ab1d9a548b6a843806e9c3926f4ec0f75 restored truthful metadata.
  • Corrective 920fdb25c21022186acdf9782da6a16bb160a41d restored one unrelated delete-row line changed by an earlier full-file edit.
  • Documentation lineage through e23358b435191b1a8285910b00f980b450972f5c established accessibility, doctoring, README, and changelog traceability.
  • Later review found the README/test mismatch; c847a21a61ca11d8e3934aebc63420b3826b4840 corrected that bounded documentation contract.
  • CodeRabbit then found one remaining public-doctoring product-name inconsistency (TipTap vs Tiptap). Test-first commit ba8256deed6c925b4f6bdab303d76bed4738fbd6 made the exact terminology contractual; exact current head e56c0e2ef43d3389fd84ac6e81abba9844cc5b89 corrected the one public paragraph. The associated inline thread is resolved.

Standards and ownership evidence

The doctoring record uses W3C WAI-ARIA 1.2, the ARIA Authoring Practices toolbar pattern, and official Tiptap Link, Undo/Redo, and Collaboration documentation with APA 7th references. aria-keyshortcuts is descriptive metadata for commands Inkspan already implements; it creates no authorization or keyboard behavior.

Inkspan owns editor presentation and deterministic conversion surfaces only. Hosts own transport, authorization, tenant isolation, persistence, credentials, migration, retention, audit storage, collaboration-provider lifecycle, and model-use policy.

Exact current-head evidence

Exact current head: e56c0e2ef43d3389fd84ac6e81abba9844cc5b89.

Direct current-head repository gates are terminal-success:

  • CI 31313746437: success.
  • Security Scan 31313746406: success.
  • SAST Semgrep 31313746423: success.
  • Current inline review threads: zero unresolved; every prior CodeRabbit finding is either addressed or explicitly withdrawn.
  • Formal submitted reviews remain predecessor-head/comment-only evidence; there is no qualifying exact-current-head formal approval at the latest refetch.
  • Fresh exact-current-head OpenCode/Noema/Strix read-only review was requested in comment 5231682472; no response is counted until anchored to this unchanged SHA.
  • CodeRabbit's current source status/walkthrough is diagnostic and its automated docstring warning does not override the repository's actual production/public-docstring contract; no comment/status is synthesized into approval.

No queued, pending, cancelled, skipped-required, predecessor-head, stale-head, status-only, author-only, comment-only, or synthetic-merge evidence is counted as acceptance.

Remaining merge gate

The implementation is Ready for Review and direct exact-head CI/security/SAST are green. Merge remains prohibited until this unchanged exact head has any actually required current-head automated/human review with zero valid unresolved findings, a qualifying independent non-author formal approval where repository policy requires it, and branch-protection/repository-policy acceptance without bypass. No package version is bumped and no release is attempted in this PR.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 5 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1fa51b24-7e2f-41e7-ae76-85a9c9b86f19

📥 Commits

Reviewing files that changed from the base of the PR and between bf1ef37 and 626c414.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • docs/doctoring/toolbar-shortcut-discoverability.md
  • src/toolbarShortcutDocumentation.test.ts
📝 Walkthrough

Walkthrough

툴바가 Bold, Italic, Link, Undo, Redo 단축키를 aria-keyshortcuts로 노출합니다. Redo의 대체 조합과 Link 단축키의 구현 경계를 문서화합니다. 구현, 문서, 회귀 테스트를 추가했습니다.

Changes

툴바 단축키 접근성

Layer / File(s) Summary
툴바 단축키 메타데이터 구현
src/components/Toolbar.tsx
ToolbarButton이 선택적 keyShortcuts 값을 aria-keyshortcuts로 렌더링합니다. Bold, Italic, Link, Undo, Redo에 ControlMeta 조합을 추가합니다. Redo에는 Control/Meta+Shift+ZControl/Meta+Y를 모두 추가합니다.
단축키 접근성 및 문서 계약 테스트
src/toolbarShortcutAccessibility.test.tsx, src/toolbarShortcutDocumentation.test.ts
각 툴바 버튼의 단축키 속성과 제목을 검증합니다. Strikethrough의 메타데이터 생략도 확인합니다. 관련 문서, README, doctoring 기록과 CHANGELOG의 계약도 검증합니다.
접근성 계약 및 변경 기록
docs/accessibility.md, docs/doctoring/toolbar-shortcut-discoverability.md, README.md, CHANGELOG.md
지원 단축키, Link 단축키가 Inkspan 편집기 표면에 구현된다는 경계, 호스트 책임, WAI-ARIA 및 Tiptap 근거를 기록합니다. README의 별도 Ctrl/Cmd+K 주장을 제거합니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 툴바 단축키를 보조 기술에 노출하는 이번 변경의 핵심 목적을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/toolbar-shortcut-discoverability

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

Exact-current-head read-only review request after all direct repository gates completed successfully.

Head: ae8448d10b874fb0006d77667afb32a102c82e61
Base: ca49a3249403be88ba3cb7c9589b3652f820e17c
CI 31219483212: success, including TypeScript, repository-wide 100% production statement/branch/function/line coverage, library build, packed package consumers, demo build, and Office Python 3.11/3.14 gates.
Security Scan 31219483274: success.
SAST Semgrep 31219484996: success.
CodeRabbit's automatic exact-head attempt was rate-limited; its pending/status-only state is not review or approval evidence.

@opencode-agent review
@cwl-noema-review review
@strix review

Review only. Do not modify the branch, create or dispatch repair writers, create write-capable workflows, reuse predecessor/stale/synthetic-merge evidence, or synthesize author approval. Verify the exact WAI-ARIA shortcut grammar and existing-command mapping, native toolbar semantics, documentation/doctoring consistency, host ownership boundary, and current repository-policy gates. Submit a formal verdict only against exact head ae8448d10b874fb0006d77667afb32a102c82e61; report any actionable finding with exact file/location and rationale.

Copy link
Copy Markdown
Contributor Author

Exact-current-head review request for ae8448d10b874fb0006d77667afb32a102c82e61 (base main at ca49a3249403be88ba3cb7c9589b3652f820e17c). Direct CI 31219483212, Security Scan 31219483274, and SAST Semgrep 31219484996 are successful; unresolved inline threads are currently zero.

@coderabbitai review
@opencode-agent review
@cwl-noema-review review
@strix review

Review only. Do not update this branch, create repair workflows, invoke write-capable agents, reuse predecessor-head evidence, or synthesize author approval. Submit findings/verdicts only against this exact unchanged head.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head_expected='ae8448d10b874fb0006d77667afb32a102c82e61'
base_expected='ca49a3249403be88ba3cb7c9589b3652f820e17c'

printf '%s\n' '== checked-out commit =='
git rev-parse HEAD
printf '%s\n' '== expected commits present =='
git cat-file -t "$head_expected"
git cat-file -t "$base_expected"
printf '%s\n' '== ancestry =='
git merge-base --is-ancestor "$base_expected" "$head_expected" && echo "base is ancestor of head"
printf '%s\n' '== range changed files =='
git diff --name-status "$base_expected..$head_expected"
printf '%s\n' '== range summary =='
git diff --stat "$base_expected..$head_expected"
printf '%s\n' '== aria-keyshortcuts changes =='
git diff --unified=80 "$base_expected..$head_expected" -- ':!package-lock.json' | rg -n -C 12 'aria-keyshortcuts|ariaKeyShortcuts|keyshortcuts|Control\+|Meta\+' || true
printf '%s\n' '== candidate source/test/documentation files =='
fd -t f . | rg -i '(toolbar|button|accessib|aria|shortcut|doctor|changelog|readme|contribut)'
printf '%s\n' '== structural outline of TypeScript/TSX candidates =='
fd -t f -e ts -e tsx . | xargs -r ast-grep outline --items all --type class,function --match 'Toolbar|Button|toolbar|button' 2>/dev/null || true
printf '%s\n' '== PR metadata/checks =='
gh pr view 73 --repo ContextualWisdomLab/inkspan --json number,headRefOid,baseRefOid,state,isDraft,mergeStateStatus,reviewDecision,statusCheckRollup

Length of output: 44391


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Toolbar implementation =='
nl -ba src/components/Toolbar.tsx | sed -n '1,760p'

printf '%s\n' '== Existing toolbar semantic tests =='
nl -ba src/components/Toolbar.test.tsx | sed -n '1,820p'

printf '%s\n' '== Added accessibility test =='
nl -ba src/toolbarShortcutAccessibility.test.tsx | sed -n '1,220p'

printf '%s\n' '== Added documentation contract test =='
nl -ba src/toolbarShortcutDocumentation.test.ts | sed -n '1,180p'

printf '%s\n' '== Editor extension configuration and keyboard shortcut definitions =='
ast-grep outline src --items all --type function,class --match 'extensions|Shortcut|shortcut|Keyboard|keyboard' 2>/dev/null || true
rg -n -i -C 5 'addKeyboardShortcuts|keyboardShortcuts|Control[-+]?[bikz]|Meta[-+]?[bikz]|Mod[-+]?[bikz]|toggleBold|toggleItalic|setLink|\.undo\(\)|\.redo\(\)' src package.json

printf '%s\n' '== Dependency versions relevant to editor commands =='
node -e 'const p=require("./package.json"); console.log(JSON.stringify({dependencies:p.dependencies,devDependencies:p.devDependencies},null,2))' 2>/dev/null || cat package.json

printf '%s\n' '== Documentation with line numbers =='
nl -ba docs/accessibility.md | sed -n '145,235p'
nl -ba docs/doctoring/toolbar-shortcut-discoverability.md | sed -n '1,140p'
nl -ba CHANGELOG.md | sed -n '1,35p'

printf '%s\n' '== Exact PR review and required-check metadata =='
gh api repos/ContextualWisdomLab/inkspan/pulls/73/reviews --paginate \
  --jq '.[] | {user: .user.login, state, commit_id, submitted_at, body}'
gh api repos/ContextualWisdomLab/inkspan/branches/main/protection --jq '{required_status_checks,required_pull_request_reviews,required_linear_history,required_conversation_resolution}' || true

Length of output: 2117


🏁 Script executed:

#!/bin/bash
set -euo pipefail

show_lines() {
  local file="$1"
  local start="$2"
  local end="$3"
  awk -v start="$start" -v end="$end" \
    'NR >= start && NR <= end { printf "%6d\t%s\n", NR, $0 }' "$file"
}

printf '%s\n' '== Toolbar implementation =='
show_lines src/components/Toolbar.tsx 1 760

printf '%s\n' '== Existing toolbar semantic tests =='
show_lines src/components/Toolbar.test.tsx 1 820

printf '%s\n' '== Added accessibility test =='
show_lines src/toolbarShortcutAccessibility.test.tsx 1 220

printf '%s\n' '== Added documentation contract test =='
show_lines src/toolbarShortcutDocumentation.test.ts 1 180

printf '%s\n' '== Editor extension configuration and keyboard shortcut definitions =='
ast-grep outline src --items all --type function,class --match 'extensions|Shortcut|shortcut|Keyboard|keyboard' 2>/dev/null || true
rg -n -i -C 5 'addKeyboardShortcuts|keyboardShortcuts|Control[-+]?[bikz]|Meta[-+]?[bikz]|Mod[-+]?[bikz]|toggleBold|toggleItalic|setLink|\.undo\(\)|\.redo\(\)' src package.json || true

printf '%s\n' '== Package editor dependencies =='
rg -n -C 2 '"`@tiptap/`|prosemirror|tiptap' package.json

printf '%s\n' '== Documentation =='
show_lines docs/accessibility.md 145 235
show_lines docs/doctoring/toolbar-shortcut-discoverability.md 1 140
show_lines CHANGELOG.md 1 35

printf '%s\n' '== Exact PR review metadata =='
gh api repos/ContextualWisdomLab/inkspan/pulls/73/reviews --paginate \
  --jq '.[] | {user: .user.login, state, commit_id, submitted_at, body}'

printf '%s\n' '== Main branch protection =='
gh api repos/ContextualWisdomLab/inkspan/branches/main/protection \
  --jq '{required_status_checks,required_pull_request_reviews,required_linear_history,required_conversation_resolution}' || true

Length of output: 71201


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head_expected='ae8448d10b874fb0006d77667afb32a102c82e61'
base_expected='ca49a3249403be88ba3cb7c9589b3652f820e17c'

printf '%s\n' '== exact current checkout and range =='
git rev-parse HEAD
git diff --exit-code "$head_expected" -- || true
git merge-base --is-ancestor "$base_expected" HEAD && echo 'requested base is an ancestor of current checkout'

printf '%s\n' '== stated lineage commit ancestry =='
for commit in \
  303149b4d3e586ba32c1306d1a7d98542142d9d3 \
  29d8c156e40eb0975687ee83053bedf3de7d77a5 \
  513dcdc26a5cbaef333cf822a2e191f43a3eda70
do
  git cat-file -e "${commit}^{commit}"
  if git merge-base --is-ancestor "$commit" "$head_expected"; then
    echo "$commit is an ancestor of the reviewed head"
  else
    echo "$commit is NOT an ancestor of the reviewed head"
  fi
done

printf '%s\n' '== EditorFrame link-shortcut implementation =='
awk 'NR >= 1 && NR <= 105 { printf "%6d\t%s\n", NR, $0 }' src/components/EditorFrame.tsx

printf '%s\n' '== Extension composition =='
awk 'NR >= 1 && NR <= 260 { printf "%6d\t%s\n", NR, $0 }' src/extensions/kit.ts

printf '%s\n' '== repository workflow and policy candidates =='
fd -t f .github . 2>/dev/null | rg '(^|/)(workflows|CODEOWNERS|policy|contribut|pull_request|review)' || true

printf '%s\n' '== workflow assertions for exact head, review, and coverage =='
rg -n -i -C 3 'exact.?head|head\.sha|github\.event\.pull_request\.head\.sha|approval|review|coverage|100%' .github src/workflowExactHead.test.ts 2>/dev/null || true

printf '%s\n' '== head-bound GitHub check suites =='
gh api "repos/ContextualWisdomLab/inkspan/commits/$head_expected/check-suites" --paginate \
  --jq '.check_suites[] | {app: .app.slug, conclusion, head_sha, status, workflow_run: .workflow_run.id}' || true

Length of output: 16394


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/inkspan'
head='ae8448d10b874fb0006d77667afb32a102c82e61'

printf '%s\n' '== Failed GitHub Actions check runs on exact head =='
gh api "repos/$repo/commits/$head/check-runs?status=completed&per_page=100" \
  --jq '.check_runs[]
    | select(.app.slug == "github-actions" and .conclusion == "failure")
    | {name, conclusion, details_url, started_at, completed_at, output}'

printf '%s\n' '== All GitHub Actions workflow runs filtered to exact head =='
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[]
    | {id, name, event, status, conclusion, head_sha, html_url, created_at, updated_at}'

printf '%s\n' '== Required status checks from public repository rulesets, if accessible =='
gh api "repos/$repo/rulesets?includes_parents=true" \
  --jq '.[] | {name, enforcement, target, conditions, rules}' || true

printf '%s\n' '== Current PR commit statuses =='
gh api "repos/$repo/commits/$head/status" \
  --jq '{state, statuses: [.statuses[] | {context, state, target_url, description}]}' || true

Length of output: 4872


@seonghobae, formal review verdict: no actionable findings for exact head ae8448d10b874fb0006d77667afb32a102c82e61.

I verified these items:

  • The reviewed checkout remained at the requested head.
  • The requested base is an ancestor of that head.
  • The stated RED, GREEN, and documentation-contract commits are ancestors of that head.
  • src/components/Toolbar.tsx uses the exact required WAI-ARIA values:
    • Control+B Meta+B
    • Control+I Meta+I
    • Control+K Meta+K
    • Control+Z Meta+Z
    • Control+Shift+Z Meta+Shift+Z
  • Each value maps to its existing bold, italic, link, undo, or redo command.
  • src/components/EditorFrame.tsx implements both Control+K and Meta+K link editing.
  • Native-button behavior, labels, aria-pressed, disabled behavior, and the roving-tabstop model remain unchanged.
  • Tests verify exact shortcut metadata and omission from an unmapped control.
  • Documentation, doctoring, and changelog consistently describe aria-keyshortcuts as descriptive-only and retain host ownership of shortcut conflicts.
  • The cited exact-head CI, Security Scan, and SAST workflows succeeded.
  • The failed release workflow was a separate push-triggered run. It was not an exact-head PR workflow.

I did not synthesize approval. GitHub API access did not provide branch-protection details, and it returned no submitted PR reviews. Therefore, I cannot independently confirm a qualifying non-author approval or the full protected-rule state.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Fresh exact-current-head review request for ae8448d10b874fb0006d77667afb32a102c82e61 after the earlier rate-limit window elapsed. Review only against this unchanged head; do not modify the branch or reuse predecessor-head evidence.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

@seonghobae I will review pull request #73 against exact head ae8448d10b874fb0006d77667afb32a102c82e61. I will not modify the branch or use predecessor-head evidence.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

Exact-current-head independent review request for 3cfdc68405db41522853ef98a46712c33f9921b1 on protected base ca49a3249403be88ba3cb7c9589b3652f820e17c.

A corrective test-first review found and removed a false accessibility claim: the configured Tiptap Link extension has no built-in keyboard shortcut, so Inkspan must not advertise Control+K Meta+K through aria-keyshortcuts or the visible link tooltip. Corrective RED 57f5ef8e21f8351fa04c122e700b43777c9ea57e was verified by CI 31223285941 failing specifically because production still emitted Control+K Meta+K; GREEN e89f51e87e84552247c7080aa61800c7da813e40 removed only that unsupported claim. Public accessibility, doctoring, and changelog evidence now reflect the implemented-shortcut boundary.

Exact-head gates are complete and successful: CI 31223514267, Security Scan 31223514350, and SAST Semgrep 31223514342. CI includes the repository-wide 100% production coverage gate, library/package/demo verification, and Office Python 3.11/3.14 100% branch/public-docstring evidence. CodeRabbit exact-head commit status is successful but is status-only and not counted as approval. Unresolved inline review threads are zero.

@opencode-agent review
@cwl-noema-review review
@strix review

Review only. Do not modify this branch, dispatch a repair writer, create a write-capable workflow, reuse predecessor-head or synthetic-merge evidence, or synthesize author approval. Submit findings or a formal verdict only against this unchanged exact head.

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/doctoring/toolbar-shortcut-discoverability.md`:
- Line 63: Update the retrieval dates in the Tiptap and corresponding second
bibliography entries from August 8, 2026 to the actual review date, August 7,
2026.

In `@src/components/Toolbar.tsx`:
- Around line 383-390: Update the Redo ToolbarButton near the existing “Redo
(Ctrl/Cmd+Shift+Z)” configuration to include Control+Y and Meta+Y in
keyShortcuts alongside the current shortcuts. Reflect the same Ctrl/Cmd+Y
alternative in the Redo title, related tests, and documentation.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 333707e3-3834-437b-a219-05bfa0040efb

📥 Commits

Reviewing files that changed from the base of the PR and between ca49a32 and 9c8a6b0.

📒 Files selected for processing (6)
  • CHANGELOG.md
  • docs/accessibility.md
  • docs/doctoring/toolbar-shortcut-discoverability.md
  • src/components/Toolbar.tsx
  • src/toolbarShortcutAccessibility.test.tsx
  • src/toolbarShortcutDocumentation.test.ts

Comment thread docs/doctoring/toolbar-shortcut-discoverability.md
Comment thread src/components/Toolbar.tsx Outdated

Copy link
Copy Markdown
Contributor Author

Exact-current-head review request for df7696a5ad70fe0dfedbda7123904e7559be8975 (protected main ca49a3249403be88ba3cb7c9589b3652f820e17c). Direct exact-head CI 31227151595, Security Scan 31227151607, and SAST Semgrep 31227151596 are all successful; the CodeRabbit commit status is successful; the two prior inline findings are addressed/classified and unresolved inline threads are zero.

@coderabbitai review
@opencode-agent review
@cwl-noema-review review
@strix review

Review only. Do not modify this branch, dispatch repair writers, create write-capable workflows, reuse predecessor-head or synthetic-merge evidence, or synthesize author approval. Submit findings or a formal verdict only against this unchanged exact head, including the corrected Control+Y Meta+Y redo alternative and the actual 2026-08-08 retrieval-date evidence.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/inkspan'
head='df7696a5ad70fe0dfedbda7123904e7559be8975'
base='ca49a3249403be88ba3cb7c9589b3652f820e17c'

echo '== exact checkout and ancestry =='
git rev-parse HEAD
git cat-file -t "$head"
git cat-file -t "$base"
git merge-base --is-ancestor "$base" "$head" && echo 'base is ancestor of requested head'
git diff --exit-code "$head" -- && echo 'checkout matches requested head'

echo '== changed files and diff summary =='
git diff --name-status "$base..$head"
git diff --stat "$base..$head"

echo '== shortcut, redo, and retrieval-date diff =='
git diff --unified=50 "$base..$head" -- \
  src/components/Toolbar.tsx \
  src/toolbarShortcutAccessibility.test.tsx \
  src/toolbarShortcutDocumentation.test.ts \
  docs/accessibility.md \
  docs/doctoring/toolbar-shortcut-discoverability.md \
  CHANGELOG.md \
  README.md \
  | rg -n -C 12 'aria-keyshortcuts|Control\+|Meta\+|redo|Redo|2026-08-08|retriev' || true

echo '== candidate files =='
fd -t f . | rg '(^|/)(Toolbar|EditorFrame|kit|toolbarShortcutAccessibility|toolbarShortcutDocumentation)\.(ts|tsx)$|(^|/)(accessibility|toolbar-shortcut-discoverability)\.md$|(^|/)CHANGELOG\.md$|(^|/)README\.md$'

echo '== source/test outlines =='
for f in \
  src/components/Toolbar.tsx \
  src/components/EditorFrame.tsx \
  src/extensions/kit.ts \
  src/toolbarShortcutAccessibility.test.tsx \
  src/toolbarShortcutDocumentation.test.ts
do
  if [ -f "$f" ]; then
    echo "-- $f"
    ast-grep outline "$f" --items all 2>/dev/null || true
  fi
done

echo '== exact implementation and command mapping =='
rg -n -i -C 6 \
  'aria-keyshortcuts|keyShortcuts|Control\+(B|I|Z|Shift\+Z|Y)|Meta\+(B|I|Z|Shift\+Z|Y)|toggleBold|toggleItalic|\.undo\(\)|\.redo\(\)|addKeyboardShortcuts|keyboardShortcut' \
  src

echo '== relevant documents =='
for f in docs/accessibility.md docs/doctoring/toolbar-shortcut-discoverability.md CHANGELOG.md README.md; do
  if [ -f "$f" ]; then
    echo "-- $f"
    rg -n -i -C 4 'aria-keyshortcuts|Control\+|Meta\+|redo|link|2026-08-08|retriev|WAI-ARIA|Tiptap' "$f" || true
  fi
done

echo '== requested head checks and workflow runs =='
gh api "repos/$repo/commits/$head/check-runs?status=completed&per_page=100" \
  --jq '.check_runs[] | {name, app: .app.slug, conclusion, head_sha, details_url}' || true
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[] | {id, name, event, status, conclusion, head_sha, html_url}' || true

echo '== pull request and accessible policy/review state =='
gh pr view 73 --repo "$repo" \
  --json number,headRefOid,baseRefOid,state,isDraft,mergeStateStatus,reviewDecision,statusCheckRollup
gh api "repos/$repo/pulls/73/reviews" --paginate \
  --jq '.[] | {user: .user.login, state, commit_id, submitted_at}' || true
gh api "repos/$repo/branches/main/protection" \
  --jq '{required_status_checks,required_pull_request_reviews,required_linear_history,required_conversation_resolution}' || true
gh api "repos/$repo/rulesets?includes_parents=true" \
  --jq '.[] | {name, enforcement, target, conditions, rules}' || true

Length of output: 115340


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/inkspan'
head='df7696a5ad70fe0dfedbda7123904e7559be8975'

echo '== exact relevant source =='
for f in src/extensions/kit.ts src/extensions/SafeLink.ts src/components/EditorFrame.tsx package.json; do
  if [ -f "$f" ]; then
    echo "-- $f"
    nl -ba "$f" | sed -n '1,300p'
  fi
done

echo '== shortcut definitions in extension sources =='
rg -n -i -C 6 \
  'addKeyboardShortcuts|keyboardShortcut|History|UndoRedo|Collaboration|disableHistory|SafeLink|Control[-+]?Y|Meta[-+]?Y|Mod[-+]?Y|Shift[-+]?Control[-+]?Z|Shift[-+]?Meta[-+]?Z' \
  src package.json

echo '== lineage on the requested head =='
for commit in \
  57f5ef8e21f8351fa04c122e700b43777c9ea57e \
  e89f51e87e84552247c7080aa61800c7da813e40 \
  9c8a6b0c0332c4f6a3bd0c5e373be87eb79ac50b \
  a6c472e9b2aa3ec0f4cbf9663613243ed410faab \
  11439733245d76c6dc3b58f4fb9bf2105ac94b43 \
  bc634bf2f3237e58156ad68691b140ab90718992 \
  52d38471cbc24be5792d7a32bf2319a039668622 \
  877ee37ecb1d97fa447db77869f2193530e45a31
do
  git cat-file -e "${commit}^{commit}"
  git merge-base --is-ancestor "$commit" "$head" && echo "$commit: ancestor" || echo "$commit: NOT ancestor"
  git show -s --format='%H%n%aI%n%cI%n%s' "$commit"
done

echo '== retrieval-date lines and last modifying commits =='
for f in docs/doctoring/toolbar-shortcut-discoverability.md docs/accessibility.md; do
  echo "-- $f"
  nl -ba "$f" | sed -n '1,110p'
  git blame -L 74,84 --date=iso-strict "$head" -- docs/doctoring/toolbar-shortcut-discoverability.md 2>/dev/null || true
done

echo '== current exact-head workflow and PR state =='
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[] | select(.id == 31227151651 or .name | test("Strix|CI|Security Scan|SAST Semgrep")) | {id,name,status,conclusion,head_sha,updated_at,html_url}' || true
gh pr view 73 --repo "$repo" \
  --json headRefOid,baseRefOid,mergeStateStatus,reviewDecision,statusCheckRollup

Length of output: 2364


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/inkspan'
head='df7696a5ad70fe0dfedbda7123904e7559be8975'

show_lines() {
  local file="$1"
  local first="$2"
  local last="$3"
  awk -v first="$first" -v last="$last" \
    'NR >= first && NR <= last { printf "%6d\t%s\n", NR, $0 }' "$file"
}

echo '== exact relevant source =='
for f in src/extensions/kit.ts src/extensions/SafeLink.ts src/components/EditorFrame.tsx package.json; do
  if [ -f "$f" ]; then
    echo "-- $f"
    show_lines "$f" 1 300
  fi
done

echo '== shortcut definitions in extension sources =='
rg -n -i -C 6 \
  'addKeyboardShortcuts|keyboardShortcut|History|UndoRedo|Collaboration|disableHistory|SafeLink|Control[-+]?Y|Meta[-+]?Y|Mod[-+]?Y|Shift[-+]?Control[-+]?Z|Shift[-+]?Meta[-+]?Z' \
  src package.json || true

echo '== lineage on the requested head =='
for commit in \
  57f5ef8e21f8351fa04c122e700b43777c9ea57e \
  e89f51e87e84552247c7080aa61800c7da813e40 \
  9c8a6b0c0332c4f6a3bd0c5e373be87eb79ac50b \
  a6c472e9b2aa3ec0f4cbf9663613243ed410faab \
  11439733245d76c6dc3b58f4fb9bf2105ac94b43 \
  bc634bf2f3237e58156ad68691b140ab90718992 \
  52d38471cbc24be5792d7a32bf2319a039668622 \
  877ee37ecb1d97fa447db77869f2193530e45a31
do
  git cat-file -e "${commit}^{commit}"
  git merge-base --is-ancestor "$commit" "$head" && echo "$commit: ancestor" || echo "$commit: NOT ancestor"
  git show -s --format='%H%n%aI%n%cI%n%s' "$commit"
done

echo '== retrieval-date evidence and provenance =='
show_lines docs/doctoring/toolbar-shortcut-discoverability.md 70 90
git blame -L 74,84 --date=iso-strict "$head" -- \
  docs/doctoring/toolbar-shortcut-discoverability.md || true

echo '== current exact-head workflow and PR state =='
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[]
    | select(.id == 31227151651 or (.name | test("^(CI|Security Scan|SAST Semgrep)$")))
    | {id,name,status,conclusion,head_sha,updated_at,html_url}' || true
gh pr view 73 --repo "$repo" \
  --json headRefOid,baseRefOid,mergeStateStatus,reviewDecision,statusCheckRollup

Length of output: 170066


@seonghobae Formal review verdict: actionable finding for exact head df7696a5ad70fe0dfedbda7123904e7559be8975.

  • src/components/EditorFrame.tsx, Lines 45-63: The corrective documentation and regression test state that Inkspan does not implement Ctrl/Cmd+K. This is not correct. EditorFrame detects event.metaKey || event.ctrlKey with K, prevents the default event, and invokes setLink() or unsetLink(). Inkspan therefore implements Control+K Meta+K at the editor-surface level, even though Tiptap’s Link extension does not provide that binding by default.
    docs/accessibility.md, docs/doctoring/toolbar-shortcut-discoverability.md, and src/toolbarShortcutAccessibility.test.tsx now make a false claim about shipped behavior. Restore accurate shortcut discoverability for the link command, or remove the EditorFrame binding. The current state must not assert that Inkspan does not bind the shortcut.

I also verified that:

  • The checkout is the requested head.
  • The requested base is an ancestor of that head.
  • The corrected redo value is present: Control+Shift+Z Meta+Shift+Z Control+Y Meta+Y.
  • The redo button maps to the existing redo() command.
  • The listed correction and documentation commits are ancestors of the reviewed head.
  • The APA references record Retrieved August 8, 2026. The Git history attributes the relevant reference lines to commits dated August 8, 2026. This proves the committed record date, not the external retrieval event itself.
  • Exact-head CI, Security Scan, and SAST Semgrep completed successfully.

I did not synthesize approval. Strix Security Scan was still in progress when checked. The PR was BLOCKED, and GitHub denied access to branch-protection details. Therefore, the complete protected-rule state remains unverified.

You are interacting with an AI system.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/doctoring/toolbar-shortcut-discoverability.md`:
- Line 14: Update the documentation to match the current link shortcut contract:
acknowledge Control+K/Meta+K handling in EditorFrame and its exposure through
Toolbar metadata and accessibility tests, and revise the decision, RED/GREEN
history, rollback scope, and button-count references accordingly. Keep one
consistent contract across this record and the referenced documentation; do not
claim link shortcuts are unimplemented or metadata is removed.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1d864dbf-5c34-4bd6-828f-5fc61cb91782

📥 Commits

Reviewing files that changed from the base of the PR and between 9c8a6b0 and 8d12af4.

📒 Files selected for processing (7)
  • CHANGELOG.md
  • README.md
  • docs/accessibility.md
  • docs/doctoring/toolbar-shortcut-discoverability.md
  • src/components/Toolbar.tsx
  • src/toolbarShortcutAccessibility.test.tsx
  • src/toolbarShortcutDocumentation.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • CHANGELOG.md
  • src/toolbarShortcutDocumentation.test.ts

Comment thread docs/doctoring/toolbar-shortcut-discoverability.md Outdated

Copy link
Copy Markdown
Contributor Author

Exact-current-head review request for e23358b435191b1a8285910b00f980b450972f5c (base ca49a3249403be88ba3cb7c9589b3652f820e17c). CI 31229619055, Security Scan 31229619105, and SAST Semgrep 31229619056 are successful, and unresolved inline threads are zero.

@coderabbitai review
@opencode-agent review
@cwl-noema-review review
@strix review

Please review this exact unchanged head only. Do not change the branch. Verify the EditorFrame Ctrl/Cmd+K mapping, WAI-ARIA shortcut metadata, toolbar semantics, tests, documentation, changelog, and host ownership boundary. Submit findings or a formal review verdict against this head only.

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/inkspan'
head='e23358b435191b1a8285910b00f980b450972f5c'
base='ca49a3249403be88ba3cb7c9589b3652f820e17c'

echo '== Exact checkout and ancestry =='
git rev-parse HEAD
git cat-file -t "$head"
git cat-file -t "$base"
git merge-base --is-ancestor "$base" "$head" && echo 'base is an ancestor of requested head'
git diff --exit-code "$head" -- && echo 'checkout matches requested head'

echo '== Changed files =='
git diff --name-status "$base..$head"
git diff --stat "$base..$head"

echo '== Changed shortcut-related content =='
git diff --unified=60 "$base..$head" -- \
  src/components/EditorFrame.tsx \
  src/components/Toolbar.tsx \
  src/toolbarShortcutAccessibility.test.tsx \
  src/toolbarShortcutDocumentation.test.ts \
  docs/accessibility.md \
  docs/doctoring/toolbar-shortcut-discoverability.md \
  CHANGELOG.md \
  README.md \
  | rg -n -C 10 'aria-keyshortcuts|keyShortcuts|Control\+|Meta\+|Ctrl|Cmd|redo|Redo|link|Link|host|ownership' || true

echo '== Candidate file map =='
fd -t f . | rg '(^|/)(EditorFrame|Toolbar|toolbarShortcutAccessibility|toolbarShortcutDocumentation|kit|SafeLink)\.(ts|tsx)$|(^|/)(accessibility|toolbar-shortcut-discoverability)\.md$|(^|/)CHANGELOG\.md$|(^|/)README\.md$'

echo '== Source and test outlines =='
for f in \
  src/components/EditorFrame.tsx \
  src/components/Toolbar.tsx \
  src/extensions/kit.ts \
  src/extensions/SafeLink.ts \
  src/toolbarShortcutAccessibility.test.tsx \
  src/toolbarShortcutDocumentation.test.ts \
  src/components/Toolbar.test.tsx
do
  if [ -f "$f" ]; then
    echo "-- $f"
    ast-grep outline "$f" --items all 2>/dev/null || true
  fi
done

echo '== Keyboard mapping and aria metadata references =='
rg -n -i -C 8 \
  'addKeyboardShortcuts|keyboardShortcut|event\.(ctrlKey|metaKey)|key\s*===?\s*["'\'']k["'\'']|keyShortcuts|aria-keyshortcuts|Control\+(B|I|K|Z|Shift\+Z|Y)|Meta\+(B|I|K|Z|Shift\+Z|Y)|toggleBold|toggleItalic|setLink|unsetLink|\.undo\(\)|\.redo\(\)' \
  src

echo '== Documentation and changelog references =='
for f in docs/accessibility.md docs/doctoring/toolbar-shortcut-discoverability.md CHANGELOG.md README.md; do
  if [ -f "$f" ]; then
    echo "-- $f"
    nl -ba "$f" | rg -n -C 5 'aria-keyshortcuts|Control\+|Meta\+|Ctrl|Cmd|redo|Redo|link|Link|host|ownership|WAI-ARIA' || true
  fi
done

echo '== Exact-head checks and PR state =='
gh api "repos/$repo/commits/$head/check-runs?status=completed&per_page=100" \
  --jq '.check_runs[] | {name, app: .app.slug, conclusion, head_sha, details_url}' || true
gh api "repos/$repo/actions/runs?head_sha=$head&per_page=100" \
  --jq '.workflow_runs[] | {id, name, event, status, conclusion, head_sha, html_url}' || true
gh pr view 73 --repo "$repo" \
  --json number,headRefOid,baseRefOid,state,isDraft,mergeStateStatus,reviewDecision,statusCheckRollup
gh api "repos/$repo/pulls/73/reviews" --paginate \
  --jq '.[] | {user: .user.login, state, commit_id, submitted_at}' || true
gh api "repos/$repo/branches/main/protection" \
  --jq '{required_status_checks,required_pull_request_reviews,required_linear_history,required_conversation_resolution}' || true
gh api "repos/$repo/rulesets?includes_parents=true" \
  --jq '.[] | {name, enforcement, target, conditions, rules}' || true

Length of output: 110934


🏁 Script executed:

#!/bin/bash
set -euo pipefail

show_lines() {
  local file="$1"
  local first="$2"
  local last="$3"
  echo "-- $file, Lines $first-$last"
  awk -v first="$first" -v last="$last" \
    'NR >= first && NR <= last { printf "%6d\t%s\n", NR, $0 }' "$file"
}

echo '== EditorFrame shortcut handler and wiring =='
show_lines src/components/EditorFrame.tsx 1 125

echo '== Extension composition and history configuration =='
show_lines src/extensions/kit.ts 1 180
show_lines src/extensions/SafeLink.ts 120 210

echo '== Existing editor-surface Ctrl/Cmd+K tests =='
show_lines src/components/CwlEditor.test.tsx 225 325

echo '== Added shortcut tests =='
show_lines src/toolbarShortcutAccessibility.test.tsx 1 110
show_lines src/toolbarShortcutDocumentation.test.ts 1 110

echo '== Existing toolbar semantic tests around interaction and roving focus =='
rg -n -C 8 \
  'roving|tabindex|ArrowRight|ArrowLeft|Home|End|disabled|aria-pressed|link button|Redo|Undo' \
  src/components/Toolbar.test.tsx

echo '== Exact changed documentation =='
show_lines docs/accessibility.md 250 335
show_lines docs/doctoring/toolbar-shortcut-discoverability.md 1 120
show_lines CHANGELOG.md 1 30
show_lines README.md 250 310

echo '== Commit lineage for link correction =='
git log --format='%H%n%s%n' \
  --ancestry-path ca49a3249403be88ba3cb7c9589b3652f820e17c..e23358b435191b1a8285910b00f980b450972f5c \
  -- src/components/Toolbar.tsx \
     src/components/EditorFrame.tsx \
     src/components/CwlEditor.test.tsx \
     docs/accessibility.md \
     docs/doctoring/toolbar-shortcut-discoverability.md \
     CHANGELOG.md

echo '== Current exact-head state after inspection =='
git rev-parse HEAD
gh api "repos/ContextualWisdomLab/inkspan/actions/runs?head_sha=e23358b435191b1a8285910b00f980b450972f5c&per_page=100" \
  --jq '.workflow_runs[]
    | select(.name == "CI" or .name == "Security Scan" or .name == "SAST Semgrep" or .name == "Strix Security Scan ContextualWisdomLab/inkspan#73@e23358b435191b1a8285910b00f980b450972f5c")
    | {id, name, status, conclusion, head_sha, html_url}' || true

Length of output: 49056


@seonghobae Formal review verdict: no actionable findings for exact head e23358b435191b1a8285910b00f980b450972f5c.

I verified the following items:

  • The checkout remained at the requested head.
  • The requested base is an ancestor of that head.
  • src/components/EditorFrame.tsx, Lines 45-63 implements Ctrl/Cmd+K. It prevents the browser default and invokes the safe link command path.
  • src/components/CwlEditor.test.tsx, Lines 229-321 verifies link creation, update, removal, cancellation, and non-matching keys for the editor-surface shortcut.
  • src/components/Toolbar.tsx emits valid WAI-ARIA aria-keyshortcuts values for bold, italic, link, undo, and redo:
    • Control+B Meta+B
    • Control+I Meta+I
    • Control+K Meta+K
    • Control+Z Meta+Z
    • Control+Shift+Z Meta+Shift+Z Control+Y Meta+Y
  • The toolbar retains native buttons, aria-pressed behavior, disabled-state handling, and the roving-tabstop model.
  • The added accessibility tests verify exact metadata, the visible redo alternatives, link metadata, and omission from Strikethrough.
  • The accessibility documentation, doctoring record, and changelog consistently distinguish the Inkspan EditorFrame link binding from the lack of a default Tiptap Link extension binding.
  • The documentation preserves host ownership of application-level shortcut conflicts.
  • Exact-head CI 31229619055, Security Scan 31229619105, and SAST Semgrep 31229619056 completed successfully.

I did not synthesize approval. At review time, the exact-head Strix Security Scan was still in progress, the PR merge state was BLOCKED, and GitHub denied branch-protection access. Therefore, I cannot confirm that all protected policy gates are satisfied.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@strix review

Fresh read-only Strix review requested for exact head e23358b435191b1a8285910b00f980b450972f5c after central Strix timeout-fixture repair #823 reached protected ContextualWisdomLab/.github main as 6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba. Direct exact-head CI 31229619055, Security Scan 31229619105, and SAST Semgrep 31229619056 are successful; unresolved inline review threads are zero. Review only: do not mutate this branch, dispatch repair writers, reuse stale/predecessor/synthetic-merge evidence, or synthesize author approval. Submit a formal verdict only for this exact SHA.

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/doctoring/toolbar-shortcut-discoverability.md`:
- Line 64: Update the product-name spelling in the referenced documentation
paragraph from “TipTap” to “Tiptap” so it matches the terminology used
throughout the rest of the public document.

In `@src/toolbarShortcutDocumentation.test.ts`:
- Around line 32-34: README.md와 toolbarShortcutDocumentation 테스트의 기대 문자열을 동일하게
맞추세요. 테스트의 toContain 검증이 통과하도록 기존 문서 문구를 확인하고, 정해진 문구가 없다면 initial content,
toolbar, Ctrl/Cmd+K commands, pasted/autolinked URLs 범위를 포함한 문장을 README.md에
추가하세요.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e006e9eb-85c2-4cd6-8b4f-c2b4873610f6

📥 Commits

Reviewing files that changed from the base of the PR and between 8d12af4 and bf1ef37.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • docs/doctoring/toolbar-shortcut-discoverability.md
  • src/toolbarShortcutDocumentation.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • CHANGELOG.md

Comment thread docs/doctoring/toolbar-shortcut-discoverability.md Outdated
Comment thread src/toolbarShortcutDocumentation.test.ts

Copy link
Copy Markdown
Contributor Author

Exact-current-head read-only review request for e56c0e2ef43d3389fd84ac6e81abba9844cc5b89. CI 31313746437, Security Scan 31313746406, and SAST Semgrep 31313746423 are successful; current review threads are all resolved. @opencode-agent review @cwl-noema-review review @strix review. Review only; do not modify the branch or reuse predecessor-head evidence.

Copy link
Copy Markdown
Contributor Author

Superseded by #77 after protected main advanced through #71. The replacement starts from exact protected main 6e8db84b8c4a21cd667cca023aff1d8058925696 and preserves the final reviewed toolbar/accessibility behavior: CHANGELOG.md, docs/accessibility.md, and src/components/Toolbar.tsx are content-identical to this PR's final branch versions; the focused accessibility regression is content-identical; the documentation regression is semantically identical apart from terminal-file formatting; and the doctoring record preserves this PR's full TDD/review lineage while adding explicit replacement-head evidence semantics. #77 must regenerate all CI/security/review evidence; none of this PR's checks transfer.

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