Skip to content

Pumice profile kinds and settings layout — tracking profiles, a Format tab, one placeholder syntax

State: open/proposed

Pending — outcomes to be populated when this decision is accepted.

Tracking mode shipped as a fourth interval kind on the same session table, started from the same profile list as pomodoro. A profile is a work context (name, default tags, notes template) and a pomodoro recipe (durations, cycle, auto-start) in one row. Track mode ignores the recipe, so a tracking profile’s form shows six fields that mean nothing, and both pickers show every profile.

The vault export (D-PVNF-pumice-vault-note-format) adds a write mode, a property picker and two templates. Three template systems now exist with two syntaxes: the profile notes template ({profile_name}, pre-fills the journal), the vault body template ({{profile}}, renders the note) and the vault entry template. The write mode sits on the Vault tab, but everything it changes sits elsewhere.

Settings tabs today: General, Profiles, Vault, Templates, Sounds, Journal, Data. The journal switch reads “Show Journal after Focus” but also governs a tracked End.

pomodorotrack
Fieldsname, default tags, notes template, property rows, recipe (focus, short break, long break, pomodoros per cycle, auto-start)name, default tags, notes template, property rows
Pickerthe PomodoroTrack toggle filters the focus view’s picker to one kind
StorageTimerProfile.kind, #[serde(default)] to pomodoro, in AppConfig.timer_profilessame list; no second list, no second entity
Seedexisting profiles stay pomodoroone built-in General tracking profile so Track mode starts on day one

Session rows keep profile_id. The vault format does not change. A context-and-recipe split into two entities was considered and dropped: it is cleaner in the abstract, but it adds a second pick to every start.

General, Profiles, Journal, Sounds, Vault, Format, Data. Journal sits beside Profiles because it is part of the session flow. Templates becomes Format.

TabOwns
Profilestwo lists, “Pomodoro profiles” and “Tracking profiles”; the tracking form is the short one
Journal”Show journal after focus” and “Show journal after a tracked End”, same default
Vaultfolder, on and off, vault type, daily-note location, status; Advanced: folders, triggers, opener, tracker block
Format”Write as” at the top, then the controls that depend on it
Write asBelow the select
A note per sessionProperties table (rows of key, value, on and off; tags and cssclasses switches; rename-all action), body template with preview, Bases button
A list in the daily noteentry template with preview, daily-note heading

Both templates are stored whichever mode is on, so switching modes never loses an edit. Vault keeps a stable shape; every mode-dependent control is under the control that decides it.

The profile notes template moves to {{token}} with the vault templates’ token names. {profile_name}, {planned_minutes} and {started_at} become {{profile}}, {{planned}} and {{start}}, migrated once at config upgrade. One cheat sheet serves both forms. {{planned}} is added to the token set; it is empty for a tracked session.

Specified in D-PVNF-pumice-vault-note-format. Relevant here: a profile carries rows of its own, merged by key after the vault’s, which is why the profile form has the same key and value table as the Format tab. A profile row with a vault row’s key overrides its value for that profile’s sessions.

  • Kind, not two entities. The picker, the session row and the vault note all key off one profile id. A discriminator keeps that and still gives each mode a form with only its own fields.
  • Format under the mode. A tab whose meaning changes behind the user’s back is the defect; a select whose choice reshapes the rest of the same tab is the fix.
  • One syntax. Two placeholder styles in one app is a support cost with no upside. The profile template is the older and smaller one, so it moves.
  • TimerProfile gains kind and properties (rows); ProfileInput and the generated ops follow. Old configs load unchanged.
  • JournalConfig gains show_after_tracked, default true.
  • SettingsTemplates is replaced by SettingsFormat; the property picker and Bases button leave SettingsVault.
  • The focus view’s picker filters by the persisted timer mode. With one profile of a kind the picker hides, as it does today for one profile.

Config upgrade only. kind defaults to pomodoro; a missing General tracking profile is appended once; notes templates are rewritten to the new syntax in place with a one-time notice, the same path the legacy vault template takes.

Per-profile template overrides for the vault; a per-profile vault folder; contexts as an entity separate from recipes.

  • Whether the General tracking profile should be deletable once another tracking profile exists, or stay built-in like Basic Pomodoro.

← Back to Decisions