feat(meditate): the app: Today, Explore, Profile, the sitting and its bells
halkyon_meditate_flutter on halkyon_app and halkyon_ui (ADR 0038): the
first start, sign-in and account as every Halkyon app's, a bar below
medium windows and a rail with the icon from medium on, fern washes,
Settings in cards (Sync, the operator's, Sitting, Practice, the
account, What's new, About, the version), English and German.
- Today: a greeting by the hour, Sit now at 5, 10, 20 minutes and the
timer's own length, the practice of the day, the week with the days
in a row, favourites, recently sat (D9).
- Explore: six practices of Halkyon's own, written for the app, found
by a search without case or accents, by goal and by kind; each page
with how it goes, its lengths, its heart and Start (D4, D10).
- The sitting, over the tabs: its time from the clock, a ring counting
down, the cue of the moment, Pause and End, the bells at the start,
between and at the end, the screen kept on; ended early, kept from a
minute on where the person says so (D5, D6).
- Profile: every Halkyon app's, then the person's practice: minutes,
sittings, days, the week and every sitting kept, to delete (D8).
- Settings and sittings sealed with the person's key and synced (D7).
The bells are synthesised by apps/meditate/tool/bells.py, the icon is
Lucide's sprout from cobalt through pacific into fern
(tool/app_icons.py). Releases and the deploy are a later step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 09:25:30 +01:00
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
|
import 'package:halkyon_app/halkyon_app.dart';
|
|
|
|
|
import 'package:halkyon_meditate_flutter/src/app/licences.dart';
|
|
|
|
|
import 'package:halkyon_meditate_flutter/src/app/meditate_app.dart';
|
|
|
|
|
import 'package:halkyon_meditate_flutter/src/app/meditate_dependencies.dart';
|
|
|
|
|
import 'package:halkyon_ui/halkyon_ui.dart';
|
|
|
|
|
import 'package:material_ui/material_ui.dart';
|
|
|
|
|
import 'package:path/path.dart' as p;
|
|
|
|
|
import 'package:serverpod_flutter/serverpod_flutter.dart';
|
|
|
|
|
|
|
|
|
|
Future<void> main() async {
|
|
|
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
|
// Noto Sans' notice (halkyon_ui), the flags' and Unicode CLDR's
|
|
|
|
|
// (halkyon_app), and Lucide's for the app's icon.
|
|
|
|
|
registerFontLicenses();
|
|
|
|
|
registerHalkyonAppLicenses();
|
|
|
|
|
registerLucideLicense();
|
|
|
|
|
// The instance the build names (`--dart-define=SERVER_URL=…`, or
|
|
|
|
|
// `assets/config.json`): the first offered at the first start.
|
|
|
|
|
final builtIn = Instance.parse(await getServerUrl())!;
|
|
|
|
|
final device = await MeditateDevice.create(builtIn: builtIn);
|
|
|
|
|
final instances = InstanceChoice(
|
|
|
|
|
FileInstanceStore(File(p.join(device.support, 'instances.json'))),
|
|
|
|
|
builtIn: builtIn,
|
|
|
|
|
forget: device.storage.forget,
|
|
|
|
|
sharesStorage: device.storage.sharesWith,
|
|
|
|
|
);
|
|
|
|
|
await instances.load(usedBefore: device.storage.usedBefore());
|
2026-11-04 22:30:29 +01:00
|
|
|
// The device's appearance and language, read before the first frame so
|
|
|
|
|
// that it opens in them.
|
|
|
|
|
final look = await LookCubit.open(
|
|
|
|
|
FileLookStore(File(p.join(device.support, 'look.json'))),
|
|
|
|
|
);
|
feat(meditate): the app: Today, Explore, Profile, the sitting and its bells
halkyon_meditate_flutter on halkyon_app and halkyon_ui (ADR 0038): the
first start, sign-in and account as every Halkyon app's, a bar below
medium windows and a rail with the icon from medium on, fern washes,
Settings in cards (Sync, the operator's, Sitting, Practice, the
account, What's new, About, the version), English and German.
- Today: a greeting by the hour, Sit now at 5, 10, 20 minutes and the
timer's own length, the practice of the day, the week with the days
in a row, favourites, recently sat (D9).
- Explore: six practices of Halkyon's own, written for the app, found
by a search without case or accents, by goal and by kind; each page
with how it goes, its lengths, its heart and Start (D4, D10).
- The sitting, over the tabs: its time from the clock, a ring counting
down, the cue of the moment, Pause and End, the bells at the start,
between and at the end, the screen kept on; ended early, kept from a
minute on where the person says so (D5, D6).
- Profile: every Halkyon app's, then the person's practice: minutes,
sittings, days, the week and every sitting kept, to delete (D8).
- Settings and sittings sealed with the person's key and synced (D7).
The bells are synthesised by apps/meditate/tool/bells.py, the icon is
Lucide's sprout from cobalt through pacific into fern
(tool/app_icons.py). Releases and the deploy are a later step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 09:25:30 +01:00
|
|
|
runApp(
|
|
|
|
|
// What's new in each release (Train's ADR 0030, D61), from
|
|
|
|
|
// assets/whats_new/, shown once after an update.
|
|
|
|
|
WhatsNewScope(
|
|
|
|
|
whatsNew: WhatsNew(
|
|
|
|
|
AssetWhatsNewSource(rootBundle),
|
|
|
|
|
FileWhatsNewStore(File(p.join(device.support, 'whats_new.json'))),
|
|
|
|
|
version: device.appVersion,
|
|
|
|
|
),
|
|
|
|
|
// An instance chosen before: the app ran on this device already.
|
|
|
|
|
usedBefore: instances.current != null,
|
|
|
|
|
child: MeditateApp(
|
|
|
|
|
choice: instances,
|
|
|
|
|
// Only an instance of Halkyon Meditate: one of another Halkyon app's
|
|
|
|
|
// answers too, but holds nothing of this app's.
|
|
|
|
|
checker: ServerpodInstanceChecker(app: 'meditate'),
|
|
|
|
|
open: (instance) => MeditateDependencies.create(instance, device),
|
2026-11-04 22:30:29 +01:00
|
|
|
look: look,
|
feat(meditate): the app: Today, Explore, Profile, the sitting and its bells
halkyon_meditate_flutter on halkyon_app and halkyon_ui (ADR 0038): the
first start, sign-in and account as every Halkyon app's, a bar below
medium windows and a rail with the icon from medium on, fern washes,
Settings in cards (Sync, the operator's, Sitting, Practice, the
account, What's new, About, the version), English and German.
- Today: a greeting by the hour, Sit now at 5, 10, 20 minutes and the
timer's own length, the practice of the day, the week with the days
in a row, favourites, recently sat (D9).
- Explore: six practices of Halkyon's own, written for the app, found
by a search without case or accents, by goal and by kind; each page
with how it goes, its lengths, its heart and Start (D4, D10).
- The sitting, over the tabs: its time from the clock, a ring counting
down, the cue of the moment, Pause and End, the bells at the start,
between and at the end, the screen kept on; ended early, kept from a
minute on where the person says so (D5, D6).
- Profile: every Halkyon app's, then the person's practice: minutes,
sittings, days, the week and every sitting kept, to delete (D8).
- Settings and sittings sealed with the person's key and synced (D7).
The bells are synthesised by apps/meditate/tool/bells.py, the icon is
Lucide's sprout from cobalt through pacific into fern
(tool/app_icons.py). Releases and the deploy are a later step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-03 09:25:30 +01:00
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|