cf64a2dc50
- EPA Agility & Speed: add Max Speed and Max Weighted Speed (mph), decimal record-tracked metrics, per session. - Logged sessions are editable: tapping a category or a logged entry opens it pre-filled; saving updates that entry (PUT /api/entries/:id) instead of creating a duplicate. Record auto-update runs on edit too. - Every value field is now a tap-to-type number input (decimal keypad for speeds) while keeping the +/- stepper buttons; native spinners removed. New decimal metric kind; seed + idempotent migration add the EPA speed metrics. - Bump StartOS package to 0.1.5:0; service worker cache to v5.
29 lines
1.6 KiB
TypeScript
29 lines
1.6 KiB
TypeScript
import { IMPOSSIBLE, utils, VersionInfo } from '@start9labs/start-sdk'
|
|
import { store } from '../fileModels/store'
|
|
|
|
export const current = VersionInfo.of({
|
|
version: '0.1.5:0',
|
|
releaseNotes: {
|
|
en_US: 'Every value field is now tap-to-type: tap the number to enter an exact value (decimals supported for speeds) or use the +/- buttons as before.',
|
|
es_ES: 'Cada campo de valor ahora permite escribir: toca el número para introducir un valor exacto (con decimales para las velocidades) o usa los botones +/- como antes.',
|
|
de_DE: 'Jedes Wertefeld kann jetzt direkt eingetippt werden: Tippe auf die Zahl für einen exakten Wert (Dezimalstellen für Geschwindigkeiten) oder nutze wie bisher die +/- Tasten.',
|
|
pl_PL: 'Każde pole wartości można teraz wpisać dotykiem: dotknij liczby, aby wprowadzić dokładną wartość (z dziesiętnymi dla prędkości) lub użyj przycisków +/- jak wcześniej.',
|
|
fr_FR: "Chaque champ de valeur est désormais modifiable au clavier : touchez le nombre pour saisir une valeur exacte (décimales pour les vitesses) ou utilisez les boutons +/- comme avant.",
|
|
},
|
|
migrations: {
|
|
up: async ({ effects }) => {
|
|
// Generate a random login password on first install so the app is never
|
|
// left on a known default. The user can change it via "Set Login Password".
|
|
const existing = await store.read().once()
|
|
if (!existing) {
|
|
const password = utils.getDefaultString({
|
|
charset: 'a-z,A-Z,2-9',
|
|
len: 16,
|
|
})
|
|
await store.write(effects, { password })
|
|
}
|
|
},
|
|
down: IMPOSSIBLE,
|
|
},
|
|
})
|