-
Notifications
You must be signed in to change notification settings - Fork 0
Feature/compar improvements #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
aa0e3ea
feat(compare): temporarily unlink panes with Control
frathe 827f04a
fix(deps): update grpc-go to v1.83.2
frathe f07d9ef
chore: upgrade Go and security dependencies
frathe 41c982a
fix(compare): route unlinked swipe input by reveal
frathe 78179bb
added missing trane
frathe 880a8b7
several small fixes
frathe 8c83586
several small fixes
frathe c2f63f2
add release signing workflow changes
frathe 38989e4
fix ci preven unverified simlysign download.
frathe 9edd8bc
ci: increase full test timeout to 30 minutes
frathe File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
.scratch/swipe-unlinked-pointer-routing/issues/01-route-swipe-input-by-reveal.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,49 @@ | ||
| # 01 - Route Swipe input by revealed pane | ||
|
|
||
| Status: resolved | ||
|
|
||
| ## Contract | ||
|
|
||
| Through `compare.Feature.Overlay()` in a real Fyne test window, prove that | ||
| Swipe + Unlinked comparison assigns pointer input to the photo occupying the | ||
| revealed region under the pointer. Hit regions must follow the current divider | ||
| without changing either photo's full-viewport render geometry. | ||
|
|
||
| Add a private `layoutPaneInput(index, input)` helper driven by | ||
| `paneVisibleArea`. Apply it during pane layout and every reveal/divider update, | ||
| and remove the full-viewport input reset from transform application. The | ||
| divider remains the exclusive drag target in its hit area, and a fully hidden | ||
| pane has no interactive area. | ||
|
|
||
| Files: `internal/ui/compare/compare_test.go`, | ||
| `internal/ui/compare/transform.go`, and `internal/ui/compare/swipe.go`. | ||
|
|
||
| ## Red / green | ||
|
|
||
| 1. Add `TestCompareSwipeUnlinkedCanvasRoutesPointerByReveal` using actual | ||
| canvas hover, drag, and wheel dispatch at the default divider and after | ||
| moving it to 75%. | ||
| 2. Observe the current implementation report `Unlinked: Right` while the | ||
| pointer is over the visible left photo. | ||
| 3. Implement reveal-aligned pane input bounds. | ||
| 4. Verify Left/Right status, pane-local gestures, and subsequent transform keys | ||
| affect only the revealed target. Retain the last target after leaving a | ||
| photo region. | ||
|
|
||
| ## Acceptance | ||
|
|
||
| `go test ./internal/ui/compare -run '^TestCompareSwipeUnlinkedCanvasRoutesPointerByReveal$' -count=1` | ||
|
|
||
| ## Constraints | ||
|
|
||
| - Do not change renderer viewports, reveal clips, image transforms, tile | ||
| planning, shaders, caches, or divider behavior. | ||
| - Do not add an assembled-viewer duplicate of this regression. | ||
| - Do not add exported APIs or user-visible strings. | ||
|
|
||
| ## Comments | ||
|
|
||
| - Red: the permanent canvas test reported `Unlinked: Right` while the pointer | ||
| was at x=200 in the visible left reveal. | ||
| - Green: reveal-aligned pane input bounds passed the focused acceptance command, | ||
| including divider movement, both extremes, gestures, and transform keys. |
42 changes: 42 additions & 0 deletions
42
.scratch/swipe-unlinked-pointer-routing/issues/02-preserve-right-wheel-anchor.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| # 02 - Preserve the right Swipe wheel anchor | ||
|
|
||
| Status: resolved | ||
| Blocked by: 01 | ||
|
|
||
| ## Contract | ||
|
|
||
| After Ticket 01 makes the right pane input start at the divider, preserve the | ||
| full-viewport image point beneath an unmodified wheel gesture. Copy each | ||
| non-nil `fyne.ScrollEvent`, add the input widget's reveal offset to the copied | ||
| event position, and forward that viewport-relative event. Never mutate the | ||
| event supplied by the caller. | ||
|
|
||
| Files: `internal/ui/compare/compare_test.go` and | ||
| `internal/ui/compare/input.go`. | ||
|
|
||
| ## Red / green | ||
|
|
||
| 1. Add `TestCompareSwipeUnlinkedRightWheelPreservesViewportAnchor` through the | ||
| overlay's pane input seam after Ticket 01 is green. | ||
| 2. Observe the right photo zoom around the reveal-local coordinate instead of | ||
| the full-viewport cursor position. | ||
| 3. Add the scroll-coordinate translation and observe the point beneath the | ||
| cursor remain fixed. | ||
| 4. Verify the original event is unchanged and nil events remain inert. | ||
|
|
||
| ## Acceptance | ||
|
|
||
| `go test ./internal/ui/compare -run '^TestCompareSwipeUnlinkedRightWheelPreservesViewportAnchor$' -count=1` | ||
|
|
||
| ## Constraints | ||
|
|
||
| - Preserve left-pane, side-by-side, linked-wheel, and Shift+wheel behavior. | ||
| - Do not expose pane internals or add a second scroll path. | ||
| - Do not mutate caller-owned input events. | ||
|
|
||
| ## Comments | ||
|
|
||
| - Red: with reveal-local x=100 forwarded unchanged, the normalized point under | ||
| full-viewport x=500 moved from `0.625` to `0.5774` during wheel zoom. | ||
| - Green: translating a copied event by the input origin preserved the anchor; | ||
| the original event remained unchanged and nil stayed inert. |
62 changes: 62 additions & 0 deletions
62
.scratch/swipe-unlinked-pointer-routing/issues/03-document-review-and-verify.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| # 03 - Document, review, and verify the Swipe routing fix | ||
|
|
||
| Status: resolved | ||
| Blocked by: 01, 02 | ||
|
|
||
| ## Contract | ||
|
|
||
| Record the approved terminology and implementation invariant, review the two | ||
| vertical TDD slices, negatively verify their guards, and run the final gate | ||
| once. | ||
|
|
||
| Add **Linked comparison** and **Unlinked comparison** to `CONTEXT.md` and mark | ||
| locked/unlocked comparison as avoided terminology. Update `ARCHITECTURE.md` to | ||
| state that Swipe input bounds mirror the reveal while wheel coordinates are | ||
| translated back into the full viewport. Add the bugfix to `todos.md` and | ||
| normalize its existing locking/unlocking wording to linking/unlinking. | ||
|
|
||
| Complete the local spec and ticket comments with observed evidence, record the | ||
| Standard-route plan and cost ledger, and move the completed plan to | ||
| `finished_refactorings/` after the final gate. | ||
|
|
||
| ## Verification | ||
|
|
||
| 1. Run `go test ./internal/ui/compare -count=1`. | ||
| 2. Run | ||
| `go test ./internal/ui -run 'Compare(LinkToggle|SwipePointer)' -count=1`. | ||
| 3. Temporarily restore full-width pane inputs and confirm Ticket 01 fails for | ||
| the original Right-over-left symptom; restore the fix. | ||
| 4. Temporarily remove scroll-coordinate translation and confirm Ticket 02 | ||
| fails for lost cursor anchoring; restore the fix. | ||
| 5. Rerun both focused ticket commands on the restored tree. | ||
| 6. Run `make verify` once and record its actual result. | ||
|
|
||
| ## Acceptance | ||
|
|
||
| - Every spec acceptance command passes on the final tree. | ||
| - `rg -n 'Linked comparison|Unlinked comparison' CONTEXT.md` finds both | ||
| canonical terms. | ||
| - `rg -n 'reveal|revealed' ARCHITECTURE.md todos.md` finds the architecture and | ||
| release-note records. | ||
| - `make verify` passes. | ||
| - No diagnostic files or debug instrumentation remain. | ||
|
|
||
| ## Constraints | ||
|
|
||
| - Leave the already-correct manuals and translations unchanged. | ||
| - Do not create an ADR or claim a manual native UI smoke test. | ||
| - Do not commit; provide the suggested commit message at handoff. | ||
|
|
||
| ## Comments | ||
|
|
||
| - `go test ./internal/ui/compare -count=1` passed, as did the assembled | ||
| `Compare(LinkToggle|SwipePointer)` selection and both focused guards. | ||
| - Deliberately restoring full-width inputs reproduced `Unlinked: Right` over | ||
| the left reveal. Deliberately removing coordinate translation reproduced the | ||
| wheel-anchor drift from `0.625` to `0.5774`. Both fixes were restored and | ||
| both guards passed again. | ||
| - `CONTEXT.md`, `ARCHITECTURE.md`, and `todos.md` now record the approved terms, | ||
| invariant, and bugfix. Manuals, translations, and ADRs were left unchanged. | ||
| - `make verify` passed: formatting, embedded TUF-root check, vet, build, and the | ||
| complete Linux/amd64 race suite were green (`internal/ui` 676.609s; | ||
| `internal/ui/compare` 28.486s). |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.