-
-
Notifications
You must be signed in to change notification settings - Fork 4
Allow selecting patch line (ranges) and linking to them #49
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
base: master
Are you sure you want to change the base?
Conversation
built with Refined Cloudflare Pages Action⚡ Cloudflare Pages Deployment
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements functionality to allow selecting patch line ranges and linking to them via URL hashes. The main changes include migrating from Svelte actions to attachments, adding selection state management, and implementing URL-based navigation to specific file lines.
- Migrates event handlers from
svelte/actiontosvelte/attachmentsAPI - Implements line selection functionality with URL hash support for linking
- Adds visual indicators for selected lines in the diff viewer
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| Sidebar.svelte | Migrates focusFileDoubleClick from Action to Attachment; adds selection clearing on file double-click |
| FileHeader.svelte | Adds selectHeader function to set file selection when clicking file headers |
| DiffWrapper.svelte | Binds selection state between viewer and ConciseDiffView component |
| util.ts | Converts resizeObserver from Action to Attachment pattern |
| open-diff-dialog.svelte.ts | Adds linkable flag to diff metadata; preserves URL hash in navigation |
| diff-viewer.svelte.ts | Implements selection state management, URL hash parsing/writing, and jump-to-selection logic |
| ShikiThemeSelector.svelte | Updates resizeObserver usage to new Attachment API |
| concise-diff-view.svelte.ts | Adds LineRef types, selection logic, line reference parsing/writing functions |
| ConciseDiffView.svelte | Implements selection UI with visual indicators and jump-to-selection behavior |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| const newStartIdx = lineIdx + 1; | ||
| if (newStartIdx > existingSelection.end.idx) { | ||
| // Selection would be empty, clear it | ||
| this.props.selection.current = undefined; | ||
| return; | ||
| } | ||
| const newStartLine = hunk.lines[newStartIdx]; |
Copilot
AI
Nov 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potential array out-of-bounds access. While line 1318 checks if newStartIdx > existingSelection.end.idx, it doesn't validate that newStartIdx is within the bounds of hunk.lines. Add a check: if (newStartIdx >= hunk.lines.length) before accessing hunk.lines[newStartIdx].
| const newEndIdx = lineIdx - 1; | ||
| if (newEndIdx < existingSelection.start.idx) { | ||
| // Selection would be empty, clear it | ||
| this.props.selection.current = undefined; | ||
| return; | ||
| } | ||
| const newEndLine = hunk.lines[newEndIdx]; |
Copilot
AI
Nov 23, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Potential array out-of-bounds access. While line 1335 checks if newEndIdx < existingSelection.start.idx, it doesn't validate that newEndIdx >= 0. If lineIdx is 0, newEndIdx would be -1, causing an invalid array access. Add a check: if (newEndIdx < 0) before accessing hunk.lines[newEndIdx].
closes #35