Skip to content

fix(ux): customer copy guides the next action without internal jargon - #390

Closed
seonghobae wants to merge 10 commits into
mainfrom
fix/customer-copy-guidance
Closed

fix(ux): customer copy guides the next action without internal jargon#390
seonghobae wants to merge 10 commits into
mainfrom
fix/customer-copy-guidance

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Audit rules applied

  1. No internal implementation boundaries in customer-visible text — removed base64, data-URI internals, byte-limit plumbing, and sanitization jargon from rendered titles/errors.
  2. Every explanation guides the next action — size errors now name the limit, unreadable/oversized content offers retry-or-alternative, paste overflow says "try less at once", sanitize rejection suggests plain-text paste.

Scope

9 user-visible strings across Toolbar, inlineImagePolicy, converter/base64, Base64Image, SafeClipboard. Host-contract exceptions (headless API errors, programmer invariants) deliberately unchanged per PRD boundary. 6 doc-contract/unit test files updated to shipped truth; targeted vitest + typecheck pass.


Open in Devin Review

…daries

- Toolbar image title drops base64 jargon
- Inline-image policy error names accepted formats instead of URI internals
- Converter/blob errors give size limits, retry, or alternate-file guidance
- Paste failures state what to try next (less content / plain text)
- Doc-contract tests updated to the shipped phrasing

Audit rules: no internal implementation boundaries in customer-visible text;
every explanation guides the next action.
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

@devin-ai-integration devin-ai-integration 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.

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread src/converter/base64.ts Outdated
@seonghobae
seonghobae marked this pull request as draft August 26, 2026 01:22
@seonghobae seonghobae closed this Aug 26, 2026
@seonghobae seonghobae reopened this Aug 26, 2026
…-honest

Early-return the Error path and scope the v8 ignore to the unreachable
fallback arm only, keeping the global 100% threshold truthful.

Copy link
Copy Markdown
Contributor Author

Exact-head CI failure on current Draft head 5b8037d26a7527434b4aa11cbf8c2fdd92cbc059 is deterministic and Inkspan-local; no rerun should be used as evidence without a source/test change.

Evidence from CI run 32923213855, job 98040776141:

  • checkout and the explicit exact-checkout guard both bound execution to 5b8037d26a7527434b4aa11cbf8c2fdd92cbc059;
  • all 156 test files / 886 tests passed;
  • global coverage still failed at 99.98% statements, 99.95% branches, 99.98% lines;
  • src/extensions/Base64Image.ts is the only reported executable gap: uncovered line 127 in normalizeImageError, where the current branch uses /* v8 ignore next */ before the non-Error fallback.

Falsified hypothesis: the single-line v8-ignore commit restores the enforced 100% gate. It does not on the exact head above. The smallest causal remedy is not another ignore-shape-only change: add a realistic RED that makes the existing public image insertion/paste path receive a hostile non-Error rejection (for example a primitive rejection from the file/host callback boundary), assert the normalized user-facing Error, then retain the reachable fallback without suppression. GREEN acceptance is focused test + full pnpm coverage at 100% + exact-head CI, followed by refetch of this PR's current head/base and checks. If a realistic public path proves the branch unreachable instead, remove the dead fallback rather than suppressing it.

I am not editing this branch while its dedicated writer is active; this comment records the first causal boundary and executable acceptance criteria on the existing owner PR.

Copy link
Copy Markdown
Contributor Author

Ownership correction for the converter portion of this broad UX Draft: src/converter/** is already owned by canonical Draft #160 (fix/blob-size-preflight-20260811), so #390 should not carry a competing converter implementation/test writer.

The unresolved Devin finding here is valid: the guard accepts the inclusive boundary (bytes <= maxBytes) while #390 says “under”. I reproduced it test-first on the canonical owner instead of patching this branch:

Please reconcile #390 by dropping its src/converter/base64.ts and converter-test overlap and inheriting the eventual canonical #160 result rather than duplicating the fix here. Leave this thread unresolved until #390’s actual diff no longer carries the contradictory converter text; do not treat #160 predecessor/current status as approval for #390.

@seonghobae seonghobae closed this Aug 26, 2026
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