mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
84 lines
5.3 KiB
Markdown
84 lines
5.3 KiB
Markdown
# 07 · Settings
|
||
|
||
Astrolabe provides a **Settings** modal where users tune appearance, the spec editor, preview performance, and date formatting. All settings persist locally and apply across sessions on the same device. Settings load at startup; any unknown or missing value falls back to its factory default, so older or partial saved settings never break the app.
|
||
|
||
## Opening the modal
|
||
|
||
- An entry in the application header opens the Settings modal.
|
||
- The keyboard shortcut **Cmd/Ctrl+,** also opens it.
|
||
- The modal is grouped into clearly titled sections: Appearance, Editor, Performance, and Formatting.
|
||
- The modal can be dismissed with a Cancel action or the standard modal-close affordance; dismissing without applying discards any pending edits and restores the last saved values.
|
||
|
||
## Settings
|
||
|
||
### Appearance
|
||
|
||
Controls the overall UI theme. Choosing the Dark theme switches the whole application chrome to a dark presentation.
|
||
|
||
| Setting | Options | Default |
|
||
| -------- | ----------- | ------- |
|
||
| UI theme | Light, Dark | Light |
|
||
|
||
The UI theme is also exposed as a **header toggle** for one-click switching; it
|
||
reads and writes the same persisted `ui.theme` value as this Appearance control,
|
||
so the two always agree. (The toggle shipped in M1.5, ahead of this modal.)
|
||
|
||
### Editor
|
||
|
||
These settings configure the spec editor used to edit Vega-Lite specs (see _Spec Editor & Draft/Published Workflow_). They take effect in the editing surface for the snippet spec.
|
||
|
||
| Setting | Options / Range | Default |
|
||
| ------------ | -------------------------------------------------- | ------- |
|
||
| Font size | 10–18 px (integer) | 12 px |
|
||
| Editor theme | Auto + explicit overrides (provisional — see note) | Auto |
|
||
| Minimap | On / Off | Off |
|
||
| Word wrap | On / Off | On |
|
||
| Line numbers | On / Off | On |
|
||
| Tab size | Integer number of spaces | 2 |
|
||
|
||
- Font size is chosen along a 10–18 range; the current value is shown alongside the control.
|
||
- Editor theme controls the syntax/color presentation inside the editor. **Provisional (to be finalized as we implement the editor):** the default is **Auto**, which derives the editor theme from the app UI theme (light app theme → light editor theme, dark → dark), using custom Monaco themes that match the app chrome. The user may override Auto with an explicit editor theme; the exact override list (custom themes, and whether to include High Contrast or the stock Monaco themes) is deferred. Stored as `editor.theme` with an `'auto'` sentinel for the follow-the-app default.
|
||
- Minimap toggles the condensed overview strip beside the editor.
|
||
- Word wrap toggles soft wrapping of long lines.
|
||
- Line numbers toggles the line-number gutter.
|
||
- Tab size sets the indentation width applied while editing.
|
||
|
||
### Performance
|
||
|
||
| Setting | Range | Default |
|
||
| --------------- | ----------- | ------- |
|
||
| Render debounce | 500–5000 ms | 1500 ms |
|
||
|
||
- Render debounce is the delay after the user stops typing before the preview re-renders (see _Live Preview_).
|
||
- Tradeoff: a lower value makes the preview feel snappier and more immediate but re-renders more often and uses more CPU; a higher value keeps the app calmer and lighter but makes the preview feel laggier behind the spec.
|
||
- The current value is shown alongside the control.
|
||
|
||
### Formatting
|
||
|
||
Governs how dates are rendered throughout the app, for example the timestamps shown in the _Snippet Library_ list.
|
||
|
||
| Setting | Options | Default |
|
||
| ------------------ | ----------------------- | ------- |
|
||
| Date format | Smart, ISO 8601, Custom | Smart |
|
||
| Custom date format | Free-text format string | (empty) |
|
||
|
||
- **Smart**: relative, human-friendly rendering (e.g. "Today", "Yesterday", "3d ago", falling back to a full date for older items).
|
||
- **ISO 8601**: a full ISO 8601 timestamp.
|
||
- **Custom**: dates render using the user-supplied format string.
|
||
- The custom format string field is only relevant when Date format is set to Custom; it is shown only in that case (placeholder guidance such as `yyyy-MM-dd HH:mm`).
|
||
|
||
## Related persisted preferences (documented elsewhere)
|
||
|
||
The following preferences also persist locally across sessions but are managed outside this modal and are documented in their own sections:
|
||
|
||
- **Preview fit mode** — how the preview is sized/fit; see _Live Preview_.
|
||
- **Snippet sort preference** — the snippet list's sort field and direction; see _Snippet Library_.
|
||
|
||
## Behaviors
|
||
|
||
- **Apply / save**: An explicit Apply action writes all changes; they take effect immediately (e.g. the UI theme switches at once).
|
||
- **Dirty indication**: While the form differs from the last saved state, the modal shows an "Unsaved changes" indicator.
|
||
- **Cancel / dismiss**: Closing without applying reverts the form to the last saved values and leaves stored settings untouched.
|
||
- **Reset to defaults**: A Reset action restores every setting to its factory default. It requires explicit confirmation before applying, then saves the defaults.
|
||
- **Startup load**: Settings are read on startup and applied to the UI and editor; missing or unrecognized values silently use their defaults.
|