Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Floating toolbar: make dragging predictable and keep Position as a secondary fallback

Aperta
#163 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
42/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
swift
Ambito
desktop

Direzione di ricerca

Start in Sources/LocalVoice/CapturePanel.swift (drag snap to eight anchors) and Sources/LocalVoice/FloatingToolbar.swift (Position submenu). Implement free placement after a 4-point drag threshold, 16-point dock snap with a guide, bounds clamping, and replace the eight-item submenu with a compact Position control; persist per existing owner. Done when the listed acceptance checks pass for drag vs click, snap vs free release, collapse/reveal, keyboard placement, and relaunch.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Outcome and evidence

P3, user-requested usability refinement, source-confirmed current behaviour. The toolbar offers dragging and an eight-item Position submenu. The user wants direct movement to be natural, with less menu clutter.

Workbench Preview 2.3.0, build 20260928054038, source 00be555139f87d4557f48fcffc132b8621c251a2, unmodified source, macOS 26.5.1 (25F80), Apple M5, built-in display. Identity verified in the running app using Copy build details on 28 September 2026.

The full toolbar drag/anchor matrix was not run in this audit. Do not describe free placement as an existing broken feature.

Current owner

Source links below pin the earlier audited commit 9578d8cf; the relevant paths were checked against installed 00be5551 and the described behaviour is unchanged. Source findings and native observations are distinguished below.

CapturePanel.swift snaps every completed drag to the nearest of eight anchors. FloatingToolbar.swift exposes those anchors in Position. The row supports dragging from glyph/primary/divider, while mode chips and Prompts retain click behaviour.

Decision

Use free placement by default. A drag beginning on the glyph, primary control or empty chrome moves the toolbar after a 4-point movement threshold; a click below that threshold keeps its existing action. Mode chips and the prompt picker remain ordinary controls.

Snap only when the pointer releases within 16 logical points of an available dock target, with a visible guide while that target is active. Releasing elsewhere preserves the chosen free position. Clamp the toolbar inside the available display bounds and expand inward near edges.

Replace the eight-anchor submenu in the mode menu with one Position… command opening a compact keyboard-accessible placement control. It offers the existing named anchors and a reset to a visible default. This retains precision/accessibility without a cascading menu tree. Update Grammar/surface registry and the owning placement contract as part of this bounded behaviour change.

Persist position per existing owner. Keep later manual placement through collapse/reveal, relaunch and display removal. Reuse consistent drag threshold, snapping and off-screen recovery semantics for Persona where appropriate while retaining independent per-copy state. Persona edge resizing belongs to #157; the toolbar sizes to its content.

Acceptance

  • Drag from the intended chrome without firing its click action; clearly distinguish moving from mode selection.
  • Release beyond the 16-point dock zone and retain the chosen free position; within it, show the guide and snap to that target. Movement below 4 points remains a click.
  • Expanding/collapsing preserves expected placement and pointer targets.
  • Keyboard position choices and off-screen recovery remain available.
  • Relaunch and available display changes preserve later manual choices; record unavailable multi-display tests.
  • Geometry correction is verified first, so clipping does not distort the placement test.

Related: #134. Closed #84 consolidated Position presentation while preserving eight-anchor behaviour; this request concerns the user experience, not repeating that refactor.

Lingua principale
Swift
Stelle
0
Fork
1
Merge medio
8h 16m
PR unite (30g)
210

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Ship-Work/workbench

Tutte le issue di Ship-Work/workbench

Issue simili

Altre issue su Swift

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.