backlog: plan GUI buttons — wiring fixes (020a), Browse/Save/Load (020b), Generate-scenario (020c) #31

Merged
ykp merged 1 commit from docs/gui-buttons-plan into main 2026-09-28 22:49:18 +02:00
Owner

What

Work-order plan (docs-only) for the four GUI gaps found while inspecting the
GUI: three new backlog files + overview index rows.

Key finding (P0): the "missing generate button" is really a broken
generate path. app.py reads self._power_sat_var / _power_db_var in
_on_model_change / _on_set_power, but neither attribute is ever
created
(verified by AST scan). Toggling any signal checkbox raises
AttributeError inside the Tk callback, the selection never lands in the
model, can_generate stays False — the Generate button stays disabled
forever. Additionally, the Settings-tab entries, the Channel-tab Doppler/
delay spans and the fmt/placeholder comboboxes have no trace/command
wiring
(_on_setting, _on_span are dead code) — only the
signal-selection tab is wired.

The three work orders

  • 020a — GUI wiring fixes (P0, blocks the rest): build the per-satellite
    power panel the step-013 code assumed (fixes the crash), wire every
    Settings entry, the span entries and the comboboxes to the model.
  • 020b — file buttons: output-file Browse (save dialog, format-aware
    extension), Save scenario… / Load scenario… over the existing
    Scenario.to_json/from_json sidecar format; load maps the scenario back
    through update_many and rebuilds the selection checkboxes via the
    existing sat_spec_for_system helper; buttons lock while a job runs.
  • 020c — Generate-scenario button: run the 014 pre-flight (gate →
    build → validate → draw_channels), then write the sidecar-only JSON
    (resolved seed + drawn channels included) — hand the result to
    gengnss scenario FILE -o out.i16 for byte-identical generation. CLI
    byte-parity is an acceptance test.

All three are model/test-driven per repo conventions (no display needed for
the core tests; gui-marked smokes for the dialogs).

Docs-only change — no code touched.

## What Work-order plan (docs-only) for the four GUI gaps found while inspecting the GUI: three new backlog files + overview index rows. **Key finding (P0):** the "missing generate button" is really a broken generate path. `app.py` reads `self._power_sat_var` / `_power_db_var` in `_on_model_change` / `_on_set_power`, but **neither attribute is ever created** (verified by AST scan). Toggling any signal checkbox raises `AttributeError` inside the Tk callback, the selection never lands in the model, `can_generate` stays False — the Generate button stays disabled forever. Additionally, the Settings-tab entries, the Channel-tab Doppler/ delay spans and the fmt/placeholder comboboxes have **no trace/command wiring** (`_on_setting`, `_on_span` are dead code) — only the signal-selection tab is wired. ## The three work orders - **020a — GUI wiring fixes (P0, blocks the rest):** build the per-satellite power panel the step-013 code assumed (fixes the crash), wire every Settings entry, the span entries and the comboboxes to the model. - **020b — file buttons:** output-file **Browse** (save dialog, format-aware extension), **Save scenario…** / **Load scenario…** over the existing `Scenario.to_json/from_json` sidecar format; load maps the scenario back through `update_many` and rebuilds the selection checkboxes via the existing `sat_spec_for_system` helper; buttons lock while a job runs. - **020c — Generate-scenario button:** run the 014 pre-flight (gate → build → validate → `draw_channels`), then write the sidecar-only JSON (resolved seed + drawn channels included) — hand the result to `gengnss scenario FILE -o out.i16` for byte-identical generation. CLI byte-parity is an acceptance test. All three are model/test-driven per repo conventions (no display needed for the core tests; gui-marked smokes for the dialogs). Docs-only change — no code touched.
docs(backlog): plan GUI button work — 020a wiring fixes (P0: selection crash + dead settings entries), 020b Browse/Save/Load, 020c Generate-scenario
Some checks failed
ci / test (3.14) (push) Failing after 1m3s
ci / test (3.12) (push) Failing after 1m8s
ci / test (3.9) (push) Successful in 2m8s
ci / test (3.12) (pull_request) Failing after 1m6s
ci / test (3.14) (pull_request) Failing after 1m13s
ci / test (3.9) (pull_request) Failing after 1m54s
e319245361
ykp merged commit bbd94d0a3d into main 2026-09-28 22:49:18 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ykp/gengnss!31
No description provided.