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

Windowing foundation: one model, decided once a frame, tested without a screen

Aperta
#243 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
zig
Ambito
backend, desktop

Direzione di ricerca

Start with docs/WINDOWING_FOUNDATION_PLAN.md, which contains the review findings and breaks the work into separate PRs; note the stated dependencies on #237, #238, and #242. Choose one step and follow its named scope, such as running the app module tests in step 1 or measuring Objective-C messages in step 4. Done means completing that step while preserving today's behaviour; this issue describes a broad, multi-step plan rather than a single newcomer-sized change.

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

Descrizione

The plan is docs/WINDOWING_FOUNDATION_PLAN.md (#246). Every step keeps today's behaviour. They make the windowing (floats, menus, dialogs, view drags, drop zones) testable without a screen and cheap in native calls, share one model across platforms, and leave the backend usable by any dvui app. It builds on NATIVE_WINDOWS_PLAN.md and WINDOWS_LINUX_GLASS_PLAN.md, and doesn't repeat them.

Findings from the 2026-10-08 review are in the doc. In short:

  • one Viewport struct serves five kinds of window;
  • Popout re-decides every window by hand each frame, through five near-copies of fill-and-present;
  • there are seven coordinate spaces and two different band thresholds;
  • drag hit tests repeat once per region per frame;
  • macOS makes about 20 Objective-C messages per float per frame, changed or not;
  • glass looks are mirrored four deep and the shader is hand-synced three ways;
  • 32 layout tests never ran;
  • nothing popped out is tested.

Steps, each its own PR:

  • 1. Run the app module's own tests (32 that never ran): #244
  • 2. Menus and dialogs stay auxiliary windows on macOS: #245
  • 3. Typed coordinate spaces and one bandOf in viewport_map, after #237 and #238
  • 4. OsWindow: kinds as a union, native handles cached, dressing applied only on change, per-kind budgets (measure Objective-C messages per frame before and after)
  • 5. The frame's windows as a pure plan the backend reconciles, plus a fake backend and the first integration tests that pop a float out
  • 6. One fill for every OS window, with a target pool
  • 7. A drag model computed once a frame, with tests, and the release rules in one table
  • 8. Float, window and drag lifecycles as explicit states
  • 9. Glass: published capabilities, one look record end to end, shader parity (after #242)
  • 10. Full-screen transitions driven by Core Animation, if release builds don't hold 8.3 ms
  • 11. dvui changes on the fork (subwindow render redirection, a screens hook, subwindow kind and parent), the backend as a package, and dvui's example app as the acceptance test
  • 12. Remove the dead viewport API, along with steps 3–5
Lingua principale
Zig
Stelle
1.5k
Fork
40
Merge medio
5h 35m
PR unite (30g)
151

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 fizzyedit/fizzy

Tutte le issue di fizzyedit/fizzy

Issue simili

Altre issue su Backend & API Design

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.