390aaf556e
Average watts (assault bike, rower, ski erg) was a free-text entry stuffed into the per-set customMetrics JSON blob. Promote it to a real nullable column, SetLog.watts, written through every set path (create / PATCH / add-sets / import-save / account-import) and shown everywhere as "Avg. watts" with a proper numeric input. The column is added by the boot-time guarded ALTER in docker_entrypoint.sh (additive, idempotent), so the version migration stays empty. Existing data is untouched: legacy watts values remain readable from customMetrics and migrate to the column the next time a set is saved.
28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
import { IMPOSSIBLE, VersionInfo } from '@start9labs/start-sdk'
|
|
|
|
/**
|
|
* v1.2.0:4 — Avg. watts as a first-class set field (2026-06-16).
|
|
*
|
|
* Average watts (assault bike, rower, ski erg) used to be a free-text entry
|
|
* stuffed into the per-set customMetrics JSON blob. It's now a real nullable
|
|
* column, SetLog.watts, written through every set path (create / PATCH /
|
|
* add-sets / import-save / account-import) and shown everywhere as
|
|
* "Avg. watts" with a proper numeric input.
|
|
*
|
|
* Additive schema change: the SetLog.watts column is added by the boot-time
|
|
* guarded ALTER in docker_entrypoint.sh (so this migration stays empty, like
|
|
* every other column add). Existing data is untouched — legacy watts values
|
|
* remain readable from customMetrics and migrate to the column on next save.
|
|
*/
|
|
export const v_1_2_0_4 = VersionInfo.of({
|
|
version: '1.2.0:4',
|
|
releaseNotes: {
|
|
en_US:
|
|
'Average watts is now a first-class field for cardio machines (assault bike, rower, ski erg) — a proper numeric "Avg. watts" input instead of a free-text custom metric. Existing data is preserved.',
|
|
},
|
|
migrations: {
|
|
up: async () => {},
|
|
down: IMPOSSIBLE,
|
|
},
|
|
})
|