| status | open |
|---|---|
| summary | P4 — a one-shot post-install dialog pointing the user at the Configurator. Approved in dialog form; not built. The drop-time welcome (bootstrap opens the picker on first drop, guided first run in the page) landed separately on 2026-08-22. |
| since | 7842401 2026-08-21 (approved, unbuilt) |
2026-08-22 — adjacent work landed, this plan still open. The bootstrap's first drop now opens the picker by itself (
exec_root_welcome, a storage-flaggedonCreate), and the served picker runs a guided first run -- welcome presets, step strip, a done step ending on Open Settings. Seepackaging/README.md, "The first drop opens the picker by itself". That covers the install-time gap; what remains here is the next-boot nudge after an install made without the picker (paste rail, manual rail), and the machine-global seen-flag design below is unchanged. One thing it assumed is now true: the root host (FNS_ConfigHost, canonicalFNS) ships in the bootstrap since 2026-08-22 -- before that a user's root had no section in the roaming config at all. Itsconfig_callbacksDAT already carries one state entry (last_install,docs/LastInstallRecord.md); the seen-flag belongs beside it.
Approved 2026-08-21 (owner): dialog form. After a successful install, nothing currently points the user at the configurator. Add a one-shot nudge.
- A
PopDialogon first boot after install: "FNSTools installed — open the Configurator to arrange your toolbar." Buttons: Open Configurator / Later / Don't show again. - Open Configurator opens the gear UI (same entry point as the toolbar gear button) and sets the seen-flag.
- Later leaves the flag unset — nudges again next boot.
- Don't show again sets the flag, no navigation.
- Lives in the machine-global config JSON via ConfigRegistry — a state
entry (or Registration-page par) on the root
FNShost. Fires once per machine, not per project, and roams correctly. - Edge case: a project pinned to
Configscope = project(.toe-only) does not load the global JSON — the flag then lives in whatever scope is active. Acceptable: worst case is one extra nudge in a project-scoped project. Do not special-case it. - The dev project must never nudge: the dev machine's config already carries the flag after the first dismissal (or pre-seed it).
- Boot window only — hard NO-RECURRING-SCANS constraint (live-show toolkit; nothing discovery-shaped on a timer).
- Config applies ~30 frames after registration, so the flag is not
readable at extension init. Defer the nudge check past the config-apply
window (e.g.
run(..., delayFrames=...)from the root ext's boot path, after the ConfigRegistry apply pass; idempotent, guarded if the check runs before config lands). - Implementation home: the root FNSTools ext — it exists on every install rail (one-drop bootstrap, FNS_Installer, Textport), so all rails get the nudge without per-rail wiring.
PopDialogis the same widget family used by the Configscope scope-flip confirm (seeFNS_ConfigRegistry, commit 33b955d) — reuse that pattern rather than a custom panel.- Landing changes to the root ext requires re-exporting the carrying
toxes (root
FNSTools.toxat minimum) — the externaltox-reload trap: live edits not exported to every carrying tox are silently reverted at next project open (seedocs/ConfiguratorPersistenceFixes.mdstatus note / commit 61748d9).
- Fresh scratch install (from
packaging/dist/, palette config JSON without the flag): nudge appears exactly once. - Open Configurator lands on the gear UI; flag set; second boot silent.
- Later: nudge reappears on next boot; Don't show again: never again.
- Dev project: never nudged.
- Cold boot after tox export: behavior identical from disk.