0.6.0 — Application Settings#
Released.
Per-project application settings stored in .VIS/settings.json, accessed via
Project.Settings, surfaced through a built-in tabbed Settings window.
Storage & API#
ProjectSettings(VIStk/Structures/_Settings.py) —project.Settings.get(key, default)/.set(key, value)/.save(), backed by.VIS/settings.json(newVINFO.p_settingspath).getresolution order: stored override → explicitdefaultargument → frameworkDEFAULTStable →None.A full default
settings.jsonis generated atVIS newand on first Host launch (ProjectSettings.ensure_file(), idempotent) so all options are visible/editable; in memory only genuine overrides are tracked andsave()writes the complete resolved set back. A missing or corrupt file falls back to defaults without crashing.effective()(full resolved map, for the UI),reset(key),__contains__, and adirtyflag — the Host skips the shutdown write when nothing changed.Saved automatically on Host shutdown. The capture commits only after every window has closed without veto, so a vetoed quit leaves settings untouched.
Window & display#
window.default_width/default_height/default_align(center + 8 compass points) /min_width/min_heightapplied to the session’s first window.window.remember_geometry— restore the primary window’s last size and position.window.fullscreen_on_launch— open the first window maximized.
Host & startup#
host.start_with_os— toggles the Windows startup-registry entry (_register_startup/unregister_startup), reconciled on Save; disabled and not persisted over on non-Windows.host.remember_tabs— reopen the previous session’s screens as tabs. Themax_tabslimit is bypassed during restore so a remembered session isn’t truncated; screens no longer in the project are dropped silently.
Appearance#
appearance.font_family/font_sizeapplied at launch to Tk’s named fonts (TkDefaultFontetc.), which default and ttk widgets inherit.appearance.color_scheme— stored placeholder for the styles system (no effect yet).Live re-styling of already-open windows is deferred to 0.6.1.
Notifications#
notifications.enabled(stored; consumed by the 0.9 Toast widget) andnotifications.duration_ms— now the defaultInfoRow.show_bannerduration when a caller omits it.
Settings UI#
Modal, tabbed (
ttk.Notebook) window opened from a framework-provided HostMenu > Settings entry present on every window. Save / Cancel / Restore Defaults; controls seeded fromeffective(); Save writes overrides-only and rejects negative / non-numeric numeric input.host.register_settings_panel(name, setup_fn)— apps contribute their own tabs;setup_fn(parent_frame)builds into the tab body (mirrors a screen’ssetup). A panel that raises shows an inline error rather than a blank tab.
Scope notes#
The spec’s tray items (start-minimized-to-tray, a tray Settings entry) were dropped: the 0.5.3 always-Host refactor removed the system tray, so the Host now lives only as long as its windows.
Remember-open-tabs is a screens-only restore: the open screens reopen as tabs in one window; split-pane layouts and multiple windows are not reconstructed.
Window-size settings apply to the session’s primary window; drag-detached / popped-out windows keep the default size.