Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
a2dca5f
fix(canvas): enable hover selection before source capture finishes
Owen-Richard Oct 23, 2026
49adba2
feat(canvas): toggle annotation selection with V
Owen-Richard Oct 23, 2026
e44297d
fix(canvas): use S for annotation selection
Owen-Richard Oct 23, 2026
4c1d2c7
fix(canvas): preserve focus when toggling selection
Owen-Richard Oct 23, 2026
5cb8fab
fix(canvas): dismiss improvement conversations outside
Owen-Richard Oct 23, 2026
ab2adb4
fix(canvas): improve delete action contrast
Owen-Richard Oct 23, 2026
6d52b58
feat(canvas): submit improvement notes by shortcut
Owen-Richard Oct 23, 2026
51ee10c
refactor(canvas): title notes by target
Owen-Richard Oct 23, 2026
91a5d3c
refactor(canvas): simplify single note actions
Owen-Richard Oct 23, 2026
7705d77
fix(canvas): call improvements notes in deletion
Owen-Richard Oct 23, 2026
94d60f9
fix(canvas): simplify notes sidebar copy
Owen-Richard Oct 23, 2026
ef63731
fix(canvas): align Notes sidebar label
Owen-Richard Oct 23, 2026
85aa18f
fix(canvas): rename note picker tooltip
Owen-Richard Oct 23, 2026
68dca4d
fix(canvas): toggle Notes from count
Owen-Richard Oct 23, 2026
acf5afd
style(canvas): format note integration test
Owen-Richard Oct 23, 2026
87346e5
fix(canvas): return note dismiss to header
Owen-Richard Oct 23, 2026
e159c95
fix(canvas): add Retry action icon
Owen-Richard Oct 23, 2026
e7e77b4
fix(canvas): keep one note pin focus ring
Owen-Richard Oct 23, 2026
b084264
style(canvas): polish Save shortcut keycaps
Owen-Richard Oct 23, 2026
5535971
style(canvas): format note UI checks
Owen-Richard Oct 23, 2026
b62ecc2
fix(canvas): name Notes toggle actions
Owen-Richard Oct 23, 2026
8a31009
fix(canvas): align note accessibility labels
Owen-Richard Oct 23, 2026
4f51aab
fix(canvas): simplify note composer copy
Owen-Richard Oct 23, 2026
b7bed2d
chore(deps): update crass
Owen-Richard Oct 23, 2026
1006549
test(canvas): stabilize renderer route teardown
Owen-Richard Oct 23, 2026
c5ddc55
ci(deps): allow crass security release
Owen-Richard Oct 23, 2026
6b42230
style(canvas): center Save shortcut keycaps
Owen-Richard Oct 23, 2026
ee9e649
fix(canvas): harden annotation shortcut events
Owen-Richard Oct 23, 2026
a4d6a28
fix(canvas): scope prototype pointer dismissal
Owen-Richard Oct 23, 2026
0608ed2
fix(canvas): guard Notes counter close
Owen-Richard Oct 23, 2026
a33f139
fix(canvas): cancel pending target with S
Owen-Richard Oct 23, 2026
e547089
fix(canvas): cancel pending target on Escape
Owen-Richard Oct 23, 2026
6526e5d
fix(canvas): preserve Notes sidebar controls
Owen-Richard Oct 23, 2026
075dff3
fix(canvas): validate preview dismissal payload
Owen-Richard Oct 23, 2026
21fdf9d
fix(deps): keep dependency age strict
Owen-Richard Oct 23, 2026
06a7638
test(canvas): focus Notes regression coverage
Owen-Richard Oct 23, 2026
8c64257
merge: update branch from main
Owen-Richard Oct 23, 2026
1a05726
chore(deps): defer crass upgrade
Owen-Richard Oct 23, 2026
b45feca
Merge remote-tracking branch 'origin/main' into owen/10-22-canvas-polish
Owen-Richard Oct 23, 2026
95fc11d
Potential fix for pull request finding
Owen-Richard Oct 23, 2026
4de7113
test(canvas): cover trusted shortcut events
Owen-Richard Oct 23, 2026
207a583
build(extension): refresh shortcut assets
Owen-Richard Oct 23, 2026
64a6515
fix(canvas): require gesture for preview toggle
Owen-Richard Oct 23, 2026
e6c623c
merge: update branch from main
Owen-Richard Oct 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/extensions/replica-prototype/assets/renderer.css

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions .github/extensions/replica-prototype/assets/renderer.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -142,19 +142,21 @@ describe("App()", () => {
/>,
)
const comments = await screen.findByRole("button", { name: /^Comments, 1/ })
const improvements = await screen.findByRole("button", { name: notesCopy.openNotes(1) })
const improvements = await screen.findByRole("button", {
name: /^(Open|Close) Notes \(1\)$/,
})
expect(screen.getByRole("button", { name: commentsCopy.commentMenuLabel })).toBeVisible()
expect(screen.getByRole("button", { name: notesCopy.annotate })).toBeVisible()
const bridge = previewBridge()
fireEvent.click(improvements)
if (improvements.getAttribute("aria-expanded") !== "true") fireEvent.click(improvements)
bridge.ready()
expect(await screen.findByRole("complementary", { name: notesCopy.notes })).toBeVisible()
expect(screen.getByRole("button", { name: `Open improvement: ${note.body}` })).toBeVisible()
expect(screen.getByRole("button", { name: `Open note: ${note.body}` })).toBeVisible()
const noteNonce = bridge.resolveNonce("#note-target")
bridge.resolve(noteNonce)
expect(screen.getByRole("button", { name: threadsCopy.point(1) })).toBeVisible()
fireEvent.click(screen.getByRole("button", { name: `Open improvement: ${note.body}` }))
const conversation = screen.getByRole("dialog", { name: threadsCopy.conversation })
fireEvent.click(screen.getByRole("button", { name: `Open note: ${note.body}` }))
const conversation = screen.getByRole("dialog", { name: note.target })
const reply = within(conversation).getByRole("textbox", {
name: threadsCopy.comments.replyLabel,
})
Expand Down Expand Up @@ -197,7 +199,7 @@ describe("App()", () => {
fireEvent.click(improvements)
bridge.ready()
expect(await screen.findByRole("complementary", { name: notesCopy.notes })).toBeVisible()
expect(screen.getByRole("button", { name: `Open improvement: ${note.body}` })).toBeVisible()
expect(screen.getByRole("button", { name: `Open note: ${note.body}` })).toBeVisible()
expect(
screen.queryByRole("searchbox", { name: commentsCopy.searchLabel }),
).not.toBeInTheDocument()
Expand Down Expand Up @@ -233,7 +235,9 @@ describe("App()", () => {
/>,
)
const comments = await screen.findByRole("button", { name: /^Comments, 1/ })
const improvements = await screen.findByRole("button", { name: notesCopy.openNotes(1) })
const improvements = await screen.findByRole("button", {
name: /^(Open|Close) Notes \(1\)$/,
})
const bridge = previewBridge()
const noteNonce = bridge.resolveNonce("#note-target")
if (mode === "area") {
Expand Down Expand Up @@ -334,7 +338,7 @@ describe("App()", () => {
/>,
)
const comments = await screen.findByRole("button", { name: /^Comments, 1/ })
await screen.findByRole("button", { name: notesCopy.openNotes(1) })
await screen.findByRole("button", { name: /^(Open|Close) Notes \(1\)$/ })
const bridge = previewBridge()
fireEvent.click(screen.getByRole("button", { name: notesCopy.annotate }))
await waitFor(() => expect(completeCapture).toBeTypeOf("function"))
Expand Down
Loading
Loading