2026-10-19 20:08:27 +02:00
|
|
|
name: halkyon_todo_server
|
feat(todo): the server on halkyon_base
Todo's server includes halkyon_base (ADR 0014), configured for Todo:
its basics say it serves `todo`, sign-in mails name Halkyon Todo, the
source is this repository, minimumAppBuild 1. Authentication through
the module (anonymous, GitHub, email codes, server-side sessions) in
place of the scaffold's email-and-password provider; the module's
pruning scheduled once however often the server starts. The scaffold's
greeting, its Flutter web hosting, cloud storage and Docker files go;
session logs are never persisted. Todo was never deployed, so its
migrations start again with one initial migration. The root's lints
apply, with the four constructor rules off as on Learn's server.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 21:56:12 +02:00
|
|
|
description: Halkyon Todo's server.
|
|
|
|
|
publish_to: none
|
2026-10-19 20:08:27 +02:00
|
|
|
|
|
|
|
|
environment:
|
2026-10-19 20:14:07 +02:00
|
|
|
sdk: '^3.13.0'
|
2026-10-19 20:08:27 +02:00
|
|
|
|
|
|
|
|
resolution: workspace
|
|
|
|
|
|
|
|
|
|
dependencies:
|
feat(todo): the server on halkyon_base
Todo's server includes halkyon_base (ADR 0014), configured for Todo:
its basics say it serves `todo`, sign-in mails name Halkyon Todo, the
source is this repository, minimumAppBuild 1. Authentication through
the module (anonymous, GitHub, email codes, server-side sessions) in
place of the scaffold's email-and-password provider; the module's
pruning scheduled once however often the server starts. The scaffold's
greeting, its Flutter web hosting, cloud storage and Docker files go;
session logs are never persisted. Todo was never deployed, so its
migrations start again with one initial migration. The root's lints
apply, with the four constructor rules off as on Learn's server.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 21:56:12 +02:00
|
|
|
clock: ^1.1.3
|
|
|
|
|
# What every Halkyon server has (ADR 0014): signing in, the account and its
|
|
|
|
|
# deletion, pruning, the instance's basics. A Serverpod module among the
|
|
|
|
|
# repository's shared packages.
|
|
|
|
|
halkyon_base_server:
|
|
|
|
|
path: ../../../packages/halkyon_base_server
|
2026-10-19 20:14:07 +02:00
|
|
|
serverpod: 4.0.4
|
|
|
|
|
serverpod_auth_idp_server: 4.0.4
|
feat(todo): the sync engine and Todo's first models (ADR 0033, D5, D6)
Todo's server syncs with serverpod_offline_sync as Learn's and Train's
do, and holds two synced tables, every payload sealed on the devices:
content_key (the person's data key, sealed to the account) and project
(the Inbox or one of the person's own, changed when edited). A person's
space goes with them, with everything in it.
The migration only adds: the two tables, each indexed on spaceId and
cascading with its space (ON DELETE CASCADE to offline_sync_spaces), the
sync engine's own tables (crdt_*, offline_sync_*) with their foreign
keys, the gen_random_uuid_v7() function their ids default to, and the
modules' version rows. Nothing is dropped or changed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 01:00:53 +01:00
|
|
|
serverpod_offline_sync_server: 0.0.10
|
2026-10-19 20:08:27 +02:00
|
|
|
|
|
|
|
|
dev_dependencies:
|
feat(todo,app): files attached to tasks and comments
Halkyon's ADR 0043, D1, D3, D5 and D8: any file up to 100 MB, attached to
a task's description or to a comment, sealed as everything of Todo's.
Server: the attachment table, synced and sealed as the others, with the
sealed file's hash readable for the store; todoFiles hands halkyon_base
its rows, readable by their space's members, and takes sealed files
alone; the files no attachment names go daily. Its tests hold downloads
to the row's space, refuse a readable file and prune what no live row
names. Migration attachments: CREATE TABLE "attachment" with its indexes
and the foreign key to its space, cascading as every synced table's.
App: AttachmentRepository seals each file for its row, keeps it sealed
and opened in the person's folder, uploads it after each sync and fetches
it as it shows, both held back by Without files on mobile data but for a
file tapped. Under the description and a comment's text, a row of them:
pictures as thumbnails opening full-size, other files as chips opening in
the system's app, else saved; the paperclip beside the description and in the comment's
composer adds them, the composer holding them until it is sent. A task deleted takes its files
and its comments' along, a comment its own.
halkyon_app opens a file in the system's app (FileOpener): on Android
through its plugin and a FileProvider of its own class, sharing the
cache's halkyon_opened/ folder alone; on the desktop as a file: URI.
Whats-New: Attach files to a task's description or a comment with the paperclip: pictures show as thumbnails, other files open in their app.
Whats-New-De: Hänge mit der Büroklammer Dateien an die Beschreibung einer Aufgabe oder an einen Kommentar: Bilder erscheinen als Vorschau, andere Dateien öffnen sich in ihrer App.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-11 01:17:22 +01:00
|
|
|
crypto: ^3.0.7
|
2026-10-19 20:14:07 +02:00
|
|
|
serverpod_test: 4.0.4
|
2026-10-19 20:08:27 +02:00
|
|
|
test: ^1.25.5
|
|
|
|
|
|
|
|
|
|
serverpod:
|
|
|
|
|
# Companion Flutter apps that `serverpod start` can launch (Ctrl+R), keyed
|
|
|
|
|
# by a display alias. The default device is the web server, opening the
|
|
|
|
|
# machine's default browser when ready. All non-reserved properties are
|
|
|
|
|
# forwarded to `flutter run`. For the best IDE debugging experience, use
|
|
|
|
|
# `chrome` or a native target as the device. See the example below:
|
|
|
|
|
#
|
|
|
|
|
# Admin:
|
|
|
|
|
# path: ../apps/admin_flutter
|
|
|
|
|
# displayName: "Admin app"
|
|
|
|
|
# auto_launch: true
|
|
|
|
|
# device: chrome
|
|
|
|
|
# target: lib/main.dart
|
|
|
|
|
# web-hostname: 0.0.0.0
|
|
|
|
|
# web-port: 8090
|
|
|
|
|
# release: true
|
|
|
|
|
# pub: false
|
|
|
|
|
# dart-define:
|
|
|
|
|
# API_URL=https://admin.example.com
|
|
|
|
|
# FLAVOR=production
|
|
|
|
|
flutter_apps:
|
|
|
|
|
halkyon_todo:
|
|
|
|
|
path: ../halkyon_todo_flutter
|
feat(todo): the server on halkyon_base
Todo's server includes halkyon_base (ADR 0014), configured for Todo:
its basics say it serves `todo`, sign-in mails name Halkyon Todo, the
source is this repository, minimumAppBuild 1. Authentication through
the module (anonymous, GitHub, email codes, server-side sessions) in
place of the scaffold's email-and-password provider; the module's
pruning scheduled once however often the server starts. The scaffold's
greeting, its Flutter web hosting, cloud storage and Docker files go;
session logs are never persisted. Todo was never deployed, so its
migrations start again with one initial migration. The root's lints
apply, with the four constructor rules off as on Learn's server.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 21:56:12 +02:00
|
|
|
displayName: "Halkyon Todo"
|
2026-10-19 20:08:27 +02:00
|
|
|
auto_launch: true
|
|
|
|
|
target: lib/driver.dart
|
feat(todo): dialogs on the desktop, the tabs reordered, a task's path and menu (ADR 0033, D11 to D14)
- halkyon_ui: showAdaptiveSheet shows a dialog on Linux, macOS and Windows
at every width (bottom sheets stay on phones and tablets below expanded
windows), so Learn and Train follow; SheetScaffold takes a heading in
the title's place and may leave out its close button.
- Todo: the tabs are Inbox, Today, Upcoming, Browse, Today still opening;
`serverpod start` launches the app on Linux, as it has no web build.
- A task's sheet shows where the task is (its project, an icon once tasks
are above it, and the tasks above it, each opening what it names) and a
⋮ menu in place of its close button: when it was added (its UUID v7),
Duplicate with its sub-tasks, hiding its done sub-tasks (synced in its
payload), Close in the pane, Delete after asking. The description's icon
stays by its first line.
- A row names its project and section at the end of its date's line; every
menu entry has its icon.
- Learn: a studyset's path starts at the Library tab's icon, named by its
tooltip.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-01 16:53:38 +01:00
|
|
|
# Todo has no web build (the default device): run it on the desktop,
|
|
|
|
|
# as Learn does.
|
|
|
|
|
device: linux
|