Repository navigation
feat(overlay): let users drag the bottom recording overlay - #1027
schneidermilanistvan-hash wants to merge 2 commits into
Conversation
The bottom overlay can be dragged anywhere, including past a screen edge, and the position survives the next presentation and relaunch. Settings gets a Reset Position action, and backups carry the position. A stored position is honoured exactly on the display arrangement it was chosen on. After the arrangement changes it is reused only while the overlay still overlaps an attached screen, so unplugging a display never strands it out of reach. Rebased onto main as a single commit; supersedes altic-dev#974. The placement helpers live in OverlayPlacement.swift to keep BottomOverlayView.swift under the file-length limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
This pull request has been marked stale because it has had no activity for 5 days. It will be closed in 2 days if there is no further activity. Add the |
… change After the display arrangement changes, a stored position was reused if the overlay overlapped any attached screen at all, so a one-point sliver left on the remaining display counted as usable and the overlay came back out of reach. It now needs at least 44x20 pt (clamped to its own size) on one screen's visible area; anything less falls back to the anchored default. Positions on an unchanged arrangement are still honoured exactly, including past a screen edge. The decision takes the screens as parameters so it can be tested without real displays, and OverlayPlacementTests covers the edge cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Pushed 920e18b for both Greptile findings: after a display change the overlay now needs a grabbable 44×20 pt on a screen's visible area (a 1-pt sliver used to count), and @altic-dev @grohith327 could one of you approve the workflows when you get a chance? Happy to change anything. |
|
This pull request has been marked stale because it has had no activity for 5 days. It will be closed in 2 days if there is no further activity. Add the |
|
Gentle bump on this one: rebased, tests added (8 new placement cases), and the review bot's findings are fixed. If a draggable overlay is more than you want to take on, I'm happy to cut it down to a simple bottom-left / centre / right option for Discussion #625 instead. |
FluidVoice PR build readyDownload FluidVoice-PR-1027-920e18bd8019 The artifact contains the ad-hoc-signed app ZIP, Xcode archive, build manifest, and installation instructions. It expires 5 days after the build. Install the app
This build has its own app identity, so its permissions are separate from the release version of FluidVoice. |
|
let me look into this! I think a hotkey hold while moving makes sense tbh - just letting this freeroam seems too open and would invite problems. Is there a way to reset it? |
Description
Supersedes #974, which the stale bot closed while its CI runs were still waiting for approval (first-time contributor), so they never ran.
Same feature, rebased onto current main as one commit:
@altic-dev could you approve the workflows and take a look when you have time? Happy to adjust anything.
Type of Change
Related Issue or Discussion
Relates to Discussion #625 (bottom-left/right overlay positions — dragging covers it) and #284 (free-floating overlay with a persisted, draggable position). The earlier review history is on #974.
Testing
swiftlint --stricton the changed files — clean apart from the existinglegacy_swiftui_aspect_ratiowarning that main also hasswiftformat --lint— no findings on any added lineOverlayPlacementTestsfor display changes and past-edge positionsScreenshots / Video
1. Default — anchored bottom-centre
2. Dragged into the middle of the screen
3. Dragged up against the top edge
4. Reopened after stopping and restarting dictation — still where it was dragged
Notes
OverlayPlacement.swift, and the drag flag now sits onBottomOverlayPanelinOverlayCloseDiagnostics.swiftwhere main moved the panel. This keepsBottomOverlayView.swiftunder the 4000-line limit.🤖 Generated with Claude Code