Skip to content

test(diagnostics): add hostile-input and browser assurance - #285

Draft
seonghobae wants to merge 45 commits into
feat/writing-diagnostics-packagefrom
feat/writing-diagnostics-assurance
Draft

test(diagnostics): add hostile-input and browser assurance#285
seonghobae wants to merge 45 commits into
feat/writing-diagnostics-packagefrom
feat/writing-diagnostics-assurance

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Stack dependency

This Draft PR is stacked on #282 (feat/writing-diagnostics-package) and implements Task 9 of the accepted writing-diagnostics plan. It verifies the host-supplied diagnostic boundary; it does not give Inkspan semantic authority or introduce a model/provider path.

Included

  • hostile getter and Proxy regression coverage with redacted contract-error handling;
  • negative controls proving no keyword, phrase, language, URL, code, or lexical semantic fallback appears without host diagnostics;
  • affected-text focus that rechecks the current revision through the controller, applies the already-verified ProseMirror range, and focuses the editor;
  • focused unit tests for accepted, rejected, and editor-unavailable revision-bound focus;
  • browser assurance for render, navigation, exact text selection, Apply, invalidation, undo, unrelated document change, forced colors, 200% scale, lexical contrast documents, and mobile interaction;
  • Chromium, Firefox, WebKit, and mobile Chromium execution;
  • fail-closed browser harnessing for rejected or aborted diagnostics requests;
  • exact Playwright revision caching keyed by operating system, architecture, and the isolated browser-test lockfile;
  • branch-push and PR verification using immutable action SHAs and lockfiles.

Security and authority boundary

  • page/authored text is inert data and is never reflected in public errors;
  • malformed or hostile diagnostics fail closed;
  • repeated identical public contract errors may be suppressed after the first notification without creating a diagnostic surface;
  • Inkspan performs no grammar, tone, clarity, pragmatics, technical-quality, or actionability inference;
  • no keyword, regex, phrase-list, language-name, sender-domain, recipient-count, nearest-text, or positional fallback is present;
  • focus is attempted only after the controller confirms the current revision and editor availability;
  • browser tests reject any fallback response, aborted request, or unhandled diagnostics route.

Review findings addressed

All actionable CodeRabbit threads and follow-up review findings are resolved:

  • release provenance now generates and attests SBOM artifacts from the packed package;
  • hostile HTML assertions use exact escaped selector evidence rather than browser-normalized markup assumptions;
  • the isolated browser harness declares its direct React and React DOM dependencies;
  • the focused unit workflow includes the panel integration suite and runs for pull requests;
  • touch interaction uses capability detection rather than viewport width;
  • the controller covers the editor-unavailable focus branch;
  • browser routing fails closed instead of returning fallback payloads;
  • Playwright browser revisions are cached with a lockfile-derived key while system dependencies remain explicitly installed.

Release-workflow RCA

The inherited stack contained the predecessor release workflow that GitHub rejected before creating any job. The branch carries the canonical executable release workflow and then incorporates the reviewed SBOM/provenance hardening without weakening tag-only release gates.

Exact-head verification

Current immutable contributor head:

6e74a9ba9381da48ddafdabcbe203343f6afa304

Direct branch-push run 31649800097 completed successfully on that exact head:

  • checkout resolved to 6e74a9ba9381da48ddafdabcbe203343f6afa304 with persisted credentials disabled;
  • hostile-input, no-fallback, focus, release-provenance, and workflow assurance: 22/22 tests passed;
  • TypeScript typecheck: success;
  • isolated Playwright dependencies: installed from the exact lockfile;
  • Playwright cache key: operating system + architecture + tests/browser/pnpm-lock.yaml digest;
  • first-run cache miss was populated successfully for later exact-revision reuse;
  • Chromium, Firefox, WebKit, and mobile Chromium assurance: 16/16 tests passed;
  • browser revisions were Playwright-pinned Chromium 1234, Firefox 1538, and WebKit 2336;
  • all jobs completed successfully.

PR run 31649803245 separately validated the synthetic merge result 699260873a5dc64cab4882308b04514890ea3606 against current base cb49b1a6d646b5ba15f6aa88e568adf323fe05fc; it is merge-result compatibility evidence, not a substitute for the immutable contributor-head run above.

Merge boundary

Keep this PR Draft while #282 and its stacked dependencies remain Draft and release issue #118 freezes publication. Independent review, branch protection, every exact-current-head required check, and the immutable release sequence remain mandatory. This PR does not publish npm, create a tag or GitHub Release, or change package version.

Summary by CodeRabbit

  • 개선 사항

    • 작성 진단에서 관련 텍스트를 자동으로 선택하고 편집 영역에 바로 포커스할 수 있습니다.
    • 진단 제안 적용, 문서 변경에 따른 진단 무효화, 실행 취소 흐름이 안정적으로 지원됩니다.
    • 모바일 화면, 강제 색상 모드 및 200% 확대 환경에서 진단 UI 표시가 개선되었습니다.
  • 버그 수정

    • 진단이 없거나 권한이 유효하지 않은 경우 불필요한 UI가 표시되지 않습니다.
    • 다국어 입력과 악성 콘텐츠 처리 시 데이터 보호 및 HTML 이스케이프가 강화되었습니다.
  • 품질 개선

    • 자동화된 단위, 브라우저 및 릴리스 검증을 확대했습니다.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 78ae825d-ad69-4347-81e8-ba52feb7892d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

릴리스 워크플로가 SPDX 2.3 SBOM 생성, 체크섬, 증명 및 자산 검증을 추가했습니다. Writing Diagnostics가 승인된 텍스트 범위를 선택합니다. 단위 테스트와 브라우저 테스트가 보안, 접근성 및 문서 변경 동작을 검증합니다.

Changes

릴리스 공급망 검증

Layer / File(s) Summary
SBOM 생성 및 기본 검증
.github/workflows/release.yml
Cosign과 서명 검증된 Syft를 설치합니다. SPDX 2.3 SBOM의 형식, 크기, 패키지 목록 및 JavaScript·Office 패키지 식별자를 검증합니다.
아티팩트 체크섬 및 증명
.github/workflows/release.yml
체크섬과 증명 대상에 SBOM을 추가합니다. 패키지와 휠의 SPDX 증명을 생성하고 검증합니다.
릴리스 자산 검증
.github/workflows/release.yml
로컬 아티팩트와 GitHub 릴리스 자산에서 SBOM을 필수 파일로 확인합니다. 예상 아티팩트 수를 4개로 변경합니다.

Writing Diagnostics 동작 및 보증

Layer / File(s) Summary
진단 범위 포커스
src/components/WritingDiagnosticsPanel.tsx, src/components/writingDiagnosticsFocus.test.tsx
“Focus text” 동작이 승인된 진단의 [from, to] 범위를 선택하고 에디터에 포커스를 설정합니다. 승인 및 거부 시나리오를 테스트합니다.
진단 보안 경계 검증
src/components/writingDiagnosticsSecurity.test.tsx
호스트 진단 부재, 악성 접근자와 Proxy 오류, 이스케이프된 제안 내용 및 콜백 예외 격리를 테스트합니다.
브라우저 프로브와 상호작용 검증
tests/browser/harness.ts, tests/browser/playwright.config.ts, tests/browser/specs/writing-diagnostics.browser.spec.ts
브라우저 프로브가 진단과 에디터 상태를 관리합니다. Playwright 테스트가 탐색, 적용, 무효화, 실행 취소, 모바일 터치 영역 및 표시 조건을 검증합니다.
자동 보증 실행
.github/workflows/writing-diagnostics-assurance-tdd.yml
고정 의존성의 단위 테스트와 typecheck를 실행합니다. Chromium, Firefox 및 WebKit에서 브라우저 테스트를 실행합니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant WritingDiagnosticsPanel
  participant WritingDiagnosticsController
  participant CwlEditor
  User->>WritingDiagnosticsPanel: select Focus text
  WritingDiagnosticsPanel->>WritingDiagnosticsController: focus verified diagnostic
  WritingDiagnosticsController-->>WritingDiagnosticsPanel: approve or reject revision
  WritingDiagnosticsPanel->>CwlEditor: select diagnostic range
  WritingDiagnosticsPanel->>CwlEditor: focus editor and execute command
Loading
sequenceDiagram
  participant ReleaseWorkflow
  participant Cosign
  participant Syft
  participant GitHubRelease
  ReleaseWorkflow->>Cosign: verify signing tool
  ReleaseWorkflow->>Syft: generate SPDX 2.3 SBOM
  Syft-->>ReleaseWorkflow: return inkspan.spdx.json
  ReleaseWorkflow->>ReleaseWorkflow: create checksums and attestations
  ReleaseWorkflow->>GitHubRelease: validate SBOM and release assets
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning [ #253 ]의 두 YAML 문법 수정 요구는 일부 반영되지만, release.yml 변경이 요구 범위를 넘어 완전한 준수를 확인할 수 없습니다. release.yml을 두 문법 수정으로 제한하고, SBOM 및 기타 진단 변경에는 관련 이슈를 연결하십시오.
Out of Scope Changes check ⚠️ Warning [ #253 ]과 무관한 진단 컴포넌트, 테스트, 브라우저 하네스, 새 CI 워크플로 및 release.yml 기능 변경이 포함되어 있습니다. 진단 변경과 release.yml 기능 변경을 별도 이슈 또는 PR로 분리하고, 이 PR에는 필요한 문법 수정만 유지하십시오.
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 적대적 입력 테스트와 브라우저 보강이라는 주요 변경 사항을 간결하고 명확하게 설명합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/writing-diagnostics-assurance

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

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

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.

@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: 3

🧹 Nitpick comments (6)
.github/workflows/writing-diagnostics-assurance-tdd.yml (3)

34-40: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

변경된 패널의 기존 테스트도 실행하세요.

이 단계는 신규 테스트 두 개만 실행합니다. 이번 PR은 src/components/WritingDiagnosticsPanel.tsx를 변경합니다. 해당 컴포넌트의 기존 스위트 src/components/WritingDiagnosticsPanel.test.tsx는 실행되지 않습니다. 회귀를 잡기 위해 이 파일을 목록에 추가하세요.

♻️ 제안 변경
           pnpm exec vitest run
           src/components/writingDiagnosticsSecurity.test.tsx
           src/components/writingDiagnosticsFocus.test.tsx
+          src/components/WritingDiagnosticsPanel.test.tsx
           --pool=forks
           --maxWorkers=1
🤖 Prompt for 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.

In @.github/workflows/writing-diagnostics-assurance-tdd.yml around lines 34 -
40, Update the “Run hostile-input, no-fallback, and focus assurance” Vitest
command to include src/components/WritingDiagnosticsPanel.test.tsx alongside the
two existing test files, while preserving the current fork pool and
single-worker options.

3-7: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

PR 트리거를 추가하세요.

트리거는 단일 브랜치 feat/writing-diagnostics-assurance의 push와 수동 실행뿐입니다. 브랜치를 병합하거나 이름을 변경하면 이 보증은 다시 실행되지 않습니다. 또한 PR을 게이트하지 않습니다. 관련 경로에 대한 pull_request 트리거를 추가하세요.

♻️ 제안 변경
 on:
   push:
     branches:
       - feat/writing-diagnostics-assurance
+  pull_request:
+    paths:
+      - 'src/components/**'
+      - 'tests/browser/**'
+      - '.github/workflows/writing-diagnostics-assurance-tdd.yml'
   workflow_dispatch:
🤖 Prompt for 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.

In @.github/workflows/writing-diagnostics-assurance-tdd.yml around lines 3 - 7,
Update the workflow triggers under on to add a pull_request trigger scoped to
relevant path changes, while preserving the existing push trigger for
feat/writing-diagnostics-assurance and workflow_dispatch. Ensure pull requests
affecting the workflow’s relevant paths run the writing diagnostics assurance
without changing the existing branch behavior.

48-63: 🧹 Nitpick | 🔵 Trivial

브라우저 바이너리 캐시를 고려하세요.

PLAYWRIGHT_BROWSERS_PATH/tmp 아래로 지정했지만 캐시 단계가 없습니다. 따라서 모든 실행이 세 엔진을 새로 다운로드합니다. 잠금 파일 해시를 키로 하는 actions/cache 단계를 추가하면 실행 시간과 네트워크 사용을 줄일 수 있습니다. 캐시 적중 시에도 시스템 의존성 설치는 유지하세요.

🤖 Prompt for 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.

In @.github/workflows/writing-diagnostics-assurance-tdd.yml around lines 48 -
63, 워크플로의 Playwright 설치 단계 전에 actions/cache 단계를 추가해 PLAYWRIGHT_BROWSERS_PATH
디렉터리를 캐시하고, tests/browser 잠금 파일 해시를 캐시 키에 포함하세요. 캐시 적중 여부와 관계없이 기존 playwright
install --with-deps 명령을 유지해 시스템 의존성 설치가 계속 수행되도록 하세요.
tests/browser/specs/writing-diagnostics.browser.spec.ts (1)

52-55: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

프로젝트 이름 문자열에 의존하는 게이트를 강화하세요.

터치 타깃 검증은 testInfo.project.name.includes('mobile') 조건에서만 실행됩니다. tests/browser/playwright.config.ts의 프로젝트 이름 chromium-mobile-diagnostics를 변경하면 이 검증은 조용히 건너뛰어지고 테스트는 통과로 보고됩니다. 프로젝트 이름 대신 use 설정 값(예: testInfo.project.use.hasTouch 또는 전용 메타데이터)으로 판정하거나, 두 파일이 공유하는 상수를 사용하세요.

🤖 Prompt for 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.

In `@tests/browser/specs/writing-diagnostics.browser.spec.ts` around lines 52 -
55, Replace the project-name check in the touch-target assertions with a stable
capability or metadata-based condition, such as testInfo.project.use.hasTouch or
a shared constant with the Playwright configuration. Ensure the width and height
validations still run for the mobile diagnostics project even if its name
changes.
src/components/writingDiagnosticsFocus.test.tsx (1)

100-119: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

editor === null 분기 테스트를 추가하세요.

패널 가드는 단축 평가를 사용합니다. focusDiagnosticfalse를 반환하면 editor === null 조건은 평가되지 않습니다. 따라서 현재 두 테스트는 에디터가 없는 경로를 커버하지 않습니다. focusDiagnostictrue를 반환하고 controller.editornull인 컨트롤러로 한 개의 테스트를 추가하세요.

♻️ 제안 테스트
+  it('does not throw when the controller has no editor', () => {
+    const controller = {
+      ...buildController(buildEditorProbe().editor, true),
+      editor: null,
+    } as WritingDiagnosticsController;
+    render(
+      <WritingDiagnosticsPanel
+        controller={controller}
+        label="Writing guidance"
+      />,
+    );
+
+    fireEvent.click(
+      screen.getByRole('button', {
+        name: 'Focus affected text for Clarify Alpha',
+      }),
+    );
+
+    expect(controller.focusDiagnostic).toHaveBeenCalledWith('focus-diagnostic');
+  });

이 의견은 코딩 가이드라인의 "Preserve exact owned production statement/branch/function/line coverage and public-docstring requirements enforced by repository CI" 규칙을 근거로 합니다.

🤖 Prompt for 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.

In `@src/components/writingDiagnosticsFocus.test.tsx` around lines 100 - 119,
Extend the focus-diagnostic tests with one case where focusDiagnostic returns
true but controller.editor is null, exercising the panel’s editor-null
short-circuit branch. Reuse the existing render and button interaction setup,
assert focusDiagnostic is called, and verify editor.chain and chain.run are not
invoked.

Source: Coding guidelines

tests/browser/harness.ts (1)

230-241: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

핸들이 없을 때 명시적 오류를 발생시키세요.

mountWritingDiagnosticsProbe는 사전 조건 실패 시 writing_diagnostics_editor_unavailable 같은 명시적 오류를 던집니다. 반면 이 세 헬퍼는 핸들이 없으면 조용히 무시하거나 false/null을 반환합니다. 스펙은 undo 반환값을 확인하지 않습니다. 따라서 프로브가 마운트되지 않은 상태에서도 테스트가 다른 지점에서 모호하게 실패합니다. 마운트 함수와 같은 fail-closed 방식을 적용하세요.

♻️ 제안 리팩터
+function requireDiagnosticsHandle(): CwlEditorHandle {
+  const handle = diagnosticsEditorRef.current;
+  if (handle === null) throw new Error('writing_diagnostics_probe_unmounted');
+  return handle;
+}
+
 window.mutateInkspanWritingDiagnosticsProbe = (sourceHtml: string): void => {
-  diagnosticsEditorRef.current?.setValue(sourceHtml);
+  requireDiagnosticsHandle().setValue(sourceHtml);
 };
 
 window.applyInkspanWritingDiagnosticProbe = (
   diagnosticId: string,
 ): Promise<CwlWritingDiagnosticActionEvent | null> =>
-  diagnosticsEditorRef.current?.applyWritingDiagnostic(diagnosticId) ??
-  Promise.resolve(null);
+  requireDiagnosticsHandle().applyWritingDiagnostic(diagnosticId);
 
-window.undoInkspanWritingDiagnosticsProbe = (): boolean =>
-  diagnosticsEditorRef.current?.getEditor()?.commands.undo() ?? false;
+window.undoInkspanWritingDiagnosticsProbe = (): boolean => {
+  const editor = requireDiagnosticsHandle().getEditor();
+  if (editor === null) throw new Error('writing_diagnostics_editor_unavailable');
+  return editor.commands.undo();
+};
🤖 Prompt for 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.

In `@tests/browser/harness.ts` around lines 230 - 241, Update
mutateInkspanWritingDiagnosticsProbe, applyInkspanWritingDiagnosticProbe, and
undoInkspanWritingDiagnosticsProbe to throw the same explicit
writing_diagnostics_editor_unavailable error when diagnosticsEditorRef is
unavailable, instead of silently no-oping or returning null/false. Preserve the
existing operation results when the editor handle exists, without adding
validation of the undo return value.
🤖 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 @.github/workflows/release.yml:
- Line 145: Update the release workflow’s SBOM generation around syft scan and
the release artifact publishing steps to scan each exact release/*.tgz and
release/*.whl individually instead of the entire workspace. Produce a separate
SBOM for each artifact, attach only its matching SBOM to that artifact, and
validate the package-to-SBOM relationships before publishing.

In `@src/components/writingDiagnosticsSecurity.test.tsx`:
- Around line 141-142: Update the assertions in the writing diagnostics security
test to query img[src="x"], matching the <img src=x onerror=alert(1)> payload
instead of script[src="x"]. Also assert that the explanation is rendered as
text, while preserving the existing HOST_CALLBACK_SECRET absence check.

In `@tests/browser/harness.ts`:
- Around line 2-16: Declare react and react-dom as direct dependencies of the
tests/browser package, updating its package manifest and pnpm lockfile so
harness.ts resolves both imports in isolated browser-test installations without
relying on the root workspace.

---

Nitpick comments:
In @.github/workflows/writing-diagnostics-assurance-tdd.yml:
- Around line 34-40: Update the “Run hostile-input, no-fallback, and focus
assurance” Vitest command to include
src/components/WritingDiagnosticsPanel.test.tsx alongside the two existing test
files, while preserving the current fork pool and single-worker options.
- Around line 3-7: Update the workflow triggers under on to add a pull_request
trigger scoped to relevant path changes, while preserving the existing push
trigger for feat/writing-diagnostics-assurance and workflow_dispatch. Ensure
pull requests affecting the workflow’s relevant paths run the writing
diagnostics assurance without changing the existing branch behavior.
- Around line 48-63: 워크플로의 Playwright 설치 단계 전에 actions/cache 단계를 추가해
PLAYWRIGHT_BROWSERS_PATH 디렉터리를 캐시하고, tests/browser 잠금 파일 해시를 캐시 키에 포함하세요. 캐시 적중
여부와 관계없이 기존 playwright install --with-deps 명령을 유지해 시스템 의존성 설치가 계속 수행되도록 하세요.

In `@src/components/writingDiagnosticsFocus.test.tsx`:
- Around line 100-119: Extend the focus-diagnostic tests with one case where
focusDiagnostic returns true but controller.editor is null, exercising the
panel’s editor-null short-circuit branch. Reuse the existing render and button
interaction setup, assert focusDiagnostic is called, and verify editor.chain and
chain.run are not invoked.

In `@tests/browser/harness.ts`:
- Around line 230-241: Update mutateInkspanWritingDiagnosticsProbe,
applyInkspanWritingDiagnosticProbe, and undoInkspanWritingDiagnosticsProbe to
throw the same explicit writing_diagnostics_editor_unavailable error when
diagnosticsEditorRef is unavailable, instead of silently no-oping or returning
null/false. Preserve the existing operation results when the editor handle
exists, without adding validation of the undo return value.

In `@tests/browser/specs/writing-diagnostics.browser.spec.ts`:
- Around line 52-55: Replace the project-name check in the touch-target
assertions with a stable capability or metadata-based condition, such as
testInfo.project.use.hasTouch or a shared constant with the Playwright
configuration. Ensure the width and height validations still run for the mobile
diagnostics project even if its name changes.
🪄 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: 71c5a3e3-0ea3-4cac-9da4-783f6ede9486

📥 Commits

Reviewing files that changed from the base of the PR and between 6169b81 and b7e80b8.

📒 Files selected for processing (8)
  • .github/workflows/release.yml
  • .github/workflows/writing-diagnostics-assurance-tdd.yml
  • src/components/WritingDiagnosticsPanel.tsx
  • src/components/writingDiagnosticsFocus.test.tsx
  • src/components/writingDiagnosticsSecurity.test.tsx
  • tests/browser/harness.ts
  • tests/browser/playwright.config.ts
  • tests/browser/specs/writing-diagnostics.browser.spec.ts

Comment thread .github/workflows/release.yml Outdated
Comment thread src/components/writingDiagnosticsSecurity.test.tsx Outdated
Comment thread tests/browser/harness.ts
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