- Revert the automation action labels back to "Aux N: action" (no
functional reason to change this wording).
- Simplify the aux timers header in the playback control: the flex
container now only handles layout, and the label text reuses the
same font-size/color as the per-timer labels below it, instead of a
bespoke style block duplicating those values.
- Replace the generic, length-driven normaliser with an explicit
sanitiseAuxTimerNames() that always deals with exactly three timers,
and rename it away from "normalise" (which didn't convey that it
trims, caps length and fills in missing entries). Static defaults
now use a plain ['', '', ''] literal instead of calling the
sanitiser with no input to sanitise.
- Settings.type.ts and AuxTimerSettings.tsx no longer generate their
three fields from a loop; the form mirrors the same explicit,
one-field-per-row style already used by GeneralSettings.tsx.
- Trim comments that only restated what the following line already
says, keeping the ones that explain non-obvious behaviour (why
AuxTimerService needs to be resynced separately from the data
provider, why SimpleTimer.reset() preserves the name).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WCZejVTzuAY3tHTE6nB3JH
Addresses the review findings on the aux timer naming feature.
- Aux timer names are project data, but they were only applied at
bootstrap and on a settings POST. Loading another project left the
previous project's names in the runtime store, so the controls and
views disagreed with the settings panel until a restart. The names are
now applied when a project is loaded, and patching the current project
settings applies them and sends a settings refetch to the clients
(loading a project already triggers a full refetch via the rundown).
- Consolidate the name handling into a single normaliser in ontime-utils,
used by the project file parser, the API validation and to build the
default value. This creates the property when importing project files
saved before the feature existed, and enforces the name length limit
server side rather than only in the form.
- loadNames normalises its input, so the runtime state is consistent
regardless of the shape of the stored settings.
- Clarify that auxTimerNames is ordered (index 0 is aux timer 1), and
derive the settings form from the shared aux timer count.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WCZejVTzuAY3tHTE6nB3JH
Adds custom, persisted names for the three aux timers, editable in the
editor settings and surfaced everywhere an aux title is shown.
- Persist `auxTimerNames` on the Settings object (default empty, falls
back to the stock "Aux N" label when unset). Reuses the existing
settings pipeline: validation sanitises to a fixed-length trimmed
array, the parser normalises loaded/legacy data, and migrations carry
the field forward.
- New "Aux timers" settings section to name each timer, plus a shortcut
button next to the aux timers in the playback control that jumps
straight to it.
- Resolve names via a shared getAuxTimerLabel helper in the aux timer
control, Studio view, secondary-source selector and preview, and the
automation action labels.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WCZejVTzuAY3tHTE6nB3JH
* chore: migrate eslint to oxlint
* chore: migrate prettier to oxfmt
* chore: migrate typescript
* chore: toThrow should have a expected value
* chore: cast test value as Day
* chore: small title fix
* chore: mocks should be hoisted
* chore: incorrect async useage
* chore: test should be inside description
* chore: test sohuld include an expeced
* chore: oxfmt
---------
Co-authored-by: alex-Arc <omnivox@LAPTOP-RC5SNBVV.localdomain>
* feat: get server port from app satate or env
optional startup port from env will always override
function for parsing port from env
populate default port in app state
add test for migration
* bump version
* migrate settings
* migrate viewsettings
* migrate url preset
* migrate project data
* migrate custom fields
* migrate automations
* migrate rundown
* lint
* return custom field translation table
* check regex
* new url type
* refactor
* migrate old OSC subscriptions
* migrate old http subscriptions
* update comments
* migrate the whole db
* remove automation logging unlis there is an error
* return a new object
* refactor: copy currup is only used in one place
* make a copy of original migrated file
* refactor: ensure image flder is part of project service init
* add entrys to groups
* small cleanup
* just drop incorrect custom fields in the default data parser