5868852686
App features: - Personal-best records per metric: manually settable in Settings and auto-updated when a session beats them; shown in the log modal and a new dashboard "Personal records" card. - Juggling now counts by 1 instead of 5. - 1-on-1 with Elijah gains Technical Skill and Effort scores (out of 10) as manual inputs, plus an optional per-session note. - Service worker now uses a controlled update flow: an in-app "new version ready" banner activates the update on tap and reloads. Data model: - category_metrics gains track_record + record; entries gains note. - Idempotent migrations bring existing databases up to date (juggling step/record, Elijah score metrics) alongside the updated seed. StartOS package: - Bump to 0.1.2:0 with release notes. - Build x86_64 only (drop aarch64) per deployment target.
29 lines
1.8 KiB
TypeScript
29 lines
1.8 KiB
TypeScript
import { IMPOSSIBLE, utils, VersionInfo } from '@start9labs/start-sdk'
|
|
import { store } from '../fileModels/store'
|
|
|
|
export const current = VersionInfo.of({
|
|
version: '0.1.2:0',
|
|
releaseNotes: {
|
|
en_US: 'Personal-best records (auto-update + manual set), juggling counts by 1, technical-skill/effort scores plus per-session notes for 1-on-1 with Elijah, and an in-app "new version ready" refresh prompt.',
|
|
es_ES: 'Récords personales (actualización automática + ajuste manual), los toques cuentan de 1 en 1, puntuaciones de técnica/esfuerzo con notas por sesión para el 1 contra 1 con Elijah, y un aviso de actualización dentro de la app.',
|
|
de_DE: 'Persönliche Bestwerte (automatisch + manuell setzbar), Jonglieren zählt in 1er-Schritten, Technik-/Einsatz-Bewertungen mit Notizen pro Einheit für 1-gegen-1 mit Elijah und ein In-App-Hinweis „Neue Version verfügbar".',
|
|
pl_PL: 'Rekordy życiowe (automatyczna aktualizacja + ręczne ustawianie), żonglerka liczona co 1, oceny techniki/zaangażowania z notatkami dla sesji 1 na 1 z Elijah oraz powiadomienie o aktualizacji w aplikacji.',
|
|
fr_FR: "Records personnels (mise à jour automatique + réglage manuel), jonglages comptés par 1, notes de technique/d'effort avec commentaires par séance pour le 1-contre-1 avec Elijah, et une invite de mise à jour dans l'application.",
|
|
},
|
|
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,
|
|
},
|
|
})
|