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>
138 lines
5.2 KiB
YAML
138 lines
5.2 KiB
YAML
name: halkyon_todo_flutter
|
|
description: Halkyon Todo, the app.
|
|
publish_to: none
|
|
|
|
# <version>+<build>: the build rises with every release, and the instance asks apps below
|
|
# its minimum build to update (halkyon_base's instance basics).
|
|
version: 0.4.0+4
|
|
|
|
environment:
|
|
sdk: '^3.13.0'
|
|
flutter: '^3.44.4'
|
|
|
|
resolution: workspace
|
|
|
|
dependencies:
|
|
# The chime of a task done on a desktop (decided 10 Nov 2026), as Learn's
|
|
# sounds: GStreamer on Linux.
|
|
audioplayers: ^6.8.1
|
|
clock: ^1.1.3
|
|
crypto: ^3.0.7
|
|
# Reactions on comments (ADR 0033, D36): every emoji, searched, recents on
|
|
# the device.
|
|
emoji_picker_flutter: ^4.5.4
|
|
equatable: ^3.0.0
|
|
flutter:
|
|
sdk: flutter
|
|
flutter_bloc: ^9.1.1
|
|
# Tasks' reminders, scheduled with the system on the device (ADR 0033, D5):
|
|
# the instance reads no task, so it can't remind of one.
|
|
flutter_local_notifications: ^22.3.3
|
|
# A task's location picked on a map (ADR 0033, D32), as Train's maps: the
|
|
# map widget, OpenFreeMap's vector tiles and their coordinates.
|
|
flutter_map: ^8.3.2
|
|
# The tabs, each with its own stack of screens, and Settings over them
|
|
# (ADR 0033, D1), as Learn's and Train's.
|
|
go_router: ^18.0.2
|
|
# What every Halkyon app is built around (a shared package): the instances a
|
|
# device keeps accounts on, signing in through halkyon_base, each person's
|
|
# dependencies opened and closed, with texts of its own.
|
|
halkyon_app:
|
|
path: ../../../packages/halkyon_app
|
|
# The device's half of signing in with OpenID Connect (ADR 0023): the
|
|
# browser that SimpleLogin's sign-in opens, and on Linux and Windows the
|
|
# loopback it comes back to, which the app builds with its name.
|
|
# Primitives every Halkyon package shares: `CoalescingRunner`.
|
|
halkyon_core:
|
|
path: ../../../packages/halkyon_core
|
|
# Comments and descriptions as rich text (ADR 0033, D38).
|
|
halkyon_editor:
|
|
path: ../../../packages/halkyon_editor
|
|
halkyon_oidc_flutter:
|
|
path: ../../../packages/halkyon_oidc_flutter
|
|
halkyon_todo_client:
|
|
path: ../halkyon_todo_client
|
|
# Halkyon's look, shared by its apps (a shared package): the theme, the bundled
|
|
# Noto Sans and the widgets every screen is built of.
|
|
halkyon_ui:
|
|
path: ../../../packages/halkyon_ui
|
|
# Calendars' feeds fetched by the device (ADR 0033, D39).
|
|
http: ^1.6.0
|
|
# gen-l10n's output imports it.
|
|
intl: ^0.20.3
|
|
latlong2: ^0.10.1
|
|
lucide_icons_flutter: ^3.1.20
|
|
material_ui: ^1.5.0
|
|
# This build's version and number, for Settings' foot and what's new.
|
|
package_info_plus: ^10.2.2
|
|
path: ^1.9.1
|
|
path_provider: ^2.1.6
|
|
rrule: ^0.2.18
|
|
serverpod_auth_idp_flutter: 4.0.4
|
|
serverpod_flutter: 4.0.4
|
|
serverpod_offline_sync_client: 0.0.10
|
|
# The instant a reminder is scheduled at, as flutter_local_notifications
|
|
# takes it (in UTC).
|
|
timezone: ^0.11.2
|
|
url_launcher: ^6.3.2
|
|
# Pinned as Train's: the 9 line is beta, the only one for flutter_map 8.
|
|
vector_map_tiles: 9.0.0-beta.13
|
|
|
|
dev_dependencies:
|
|
flutter_driver:
|
|
sdk: flutter
|
|
# Writes the app's icons for every platform from assets/icon/halkyon_todo_icon.png,
|
|
# run through the repository's tool/app_icons.py (see the section below).
|
|
flutter_launcher_icons: ^0.14.4
|
|
flutter_test:
|
|
sdk: flutter
|
|
|
|
test: any
|
|
vector_tile_renderer: ^6.1.0
|
|
flutter:
|
|
# Generates AppLocalizations from lib/l10n (see l10n.yaml).
|
|
generate: true
|
|
# Material's icon font, which serverpod_auth_idp_flutter's widgets ask for
|
|
# (it sets this itself): without it every build and test run warns, and
|
|
# Material's icons would draw as boxes.
|
|
uses-material-design: true
|
|
|
|
assets:
|
|
# The instance the build names, unless --dart-define=SERVER_URL=… does
|
|
# (serverpod_flutter's getServerUrl).
|
|
- assets/config.json
|
|
# What each release changed, one file a release and language
|
|
# (<version>.<language>.txt), drafted by tool/release.dart and edited
|
|
# (Train's ADR 0030, D61): halkyon_app's What's new shows them.
|
|
- assets/whats_new/
|
|
# The chime of a task done on a desktop, Todo's own, synthesized by
|
|
# ../tool/completion_sound.dart.
|
|
- assets/sounds/task_done.wav
|
|
# The app's icon, Lucide's list-todo (ADR 0031), and Lucide's licence for the
|
|
# licence list (the repository's tool/app_icons.py writes both).
|
|
- assets/icon/halkyon_todo_icon.png
|
|
- assets/icon/LICENSE-lucide.txt
|
|
|
|
# The app's icons, written by the repository's tool/app_icons.py: it prepares the
|
|
# rounded images in build/icons/ first, then runs `dart run flutter_launcher_icons`.
|
|
# Android: the adaptive icon, on white, for the launcher to cut to its shape, and the
|
|
# square one older Androids show. iOS: without its alpha channel, on white. macOS and
|
|
# Windows: the rounded tile.
|
|
flutter_launcher_icons:
|
|
image_path: "assets/icon/halkyon_todo_icon.png"
|
|
android: true
|
|
adaptive_icon_background: "#ffffff"
|
|
adaptive_icon_foreground: "assets/icon/halkyon_todo_icon.png"
|
|
adaptive_icon_monochrome: "build/icons/monochrome.png"
|
|
ios: true
|
|
remove_alpha_ios: true
|
|
background_color_ios: "#ffffff"
|
|
image_path_ios_dark_transparent: "build/icons/ios_dark.png"
|
|
image_path_ios_tinted_grayscale: "build/icons/ios_tinted.png"
|
|
macos:
|
|
generate: true
|
|
image_path: "build/icons/macos.png"
|
|
windows:
|
|
generate: true
|
|
image_path: "build/icons/rounded.png"
|
|
icon_size: 256
|