build: one workspace for every app and the packages they share

The root pubspec lists Learn's, Todo's and the shared packages, which
the apps now take by path instead of pinned commits of halkyon_shared:
one resolution, one lockfile. Learn's versions stay as they were; Todo
moves to Serverpod 4.0.4 and Dart 3.13 with the rest (its generated code
unchanged), drops google_fonts, which it never used, and a template
line Dart 3.13 refuses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-19 20:14:07 +02:00
commit 9643412be9
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
12 changed files with 113 additions and 96 deletions

View file

@ -9,10 +9,7 @@ resolution: workspace
dependencies:
# The client side of halkyon_base (ADR 0014), as the server's.
halkyon_base_client:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_base_client
ref: 96f2d1461803599bdf5b14783f4b3d3a2810742f
path: ../../../packages/halkyon_base_client
serverpod_auth_idp_client: 4.0.4
serverpod_client: 4.0.4
serverpod_offline_sync_client: 0.0.10

View file

@ -1,2 +1,2 @@
# The workspace's lint rules (see ../analysis_options.yaml).
include: ../analysis_options.yaml
include: ../../../analysis_options.yaml

View file

@ -2,7 +2,7 @@
#
# If this app ever leaves the pub workspace, it has to enable the analyzer plugin itself:
# include package:leancode_lint/analysis_options.yaml and add the `plugins:` section here.
include: ../analysis_options.yaml
include: ../../../analysis_options.yaml
analyzer:
exclude:

View file

@ -66,33 +66,21 @@ dependencies:
# schedules.
fsrs: 2.0.1
go_router: ^18.0.2
# What every Halkyon app is built around (halkyon_shared): the instances a
# 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
# data opened and closed, and syncing it, with texts of its own. As
# halkyon_ui, pinned to a signed commit of halkyon_shared's main.
# data opened and closed, and syncing it, with texts of its own.
halkyon_app:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_app
ref: 96f2d1461803599bdf5b14783f4b3d3a2810742f
# Halkyon's low-level parts (halkyon_shared): the queues the repositories
path: ../../../packages/halkyon_app
# Halkyon's low-level parts (a shared package): the queues the repositories
# run their work in (SerialQueue, CoalescingRunner).
halkyon_core:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_core
ref: 96f2d1461803599bdf5b14783f4b3d3a2810742f
path: ../../../packages/halkyon_core
halkyon_learn_client:
path: ../halkyon_learn_client
# Halkyon's look, shared by its apps (halkyon_shared): the theme, the bundled Noto
# Sans, window sizes and the widgets every screen is built of. Pinned to a signed
# commit of halkyon_shared's main; for local work on both, a git-ignored
# pubspec_overrides.yaml at the workspace root points it at a checkout.
# Halkyon's look, shared by its apps (a shared package): the theme, the bundled
# Noto Sans, window sizes and the widgets every screen is built of.
halkyon_ui:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_ui
ref: 96f2d1461803599bdf5b14783f4b3d3a2810742f
path: ../../../packages/halkyon_ui
# Anki's fields are HTML; the editor brings this parser along already.
html: ^0.15.6
# Talks to Jellyfin servers; Serverpod's client brings it along already.

View file

@ -1,5 +1,5 @@
# The workspace's lint rules (see ../analysis_options.yaml), minus generated code.
include: ../analysis_options.yaml
include: ../../../analysis_options.yaml
analyzer:
exclude:

View file

@ -12,15 +12,10 @@ dependencies:
clock: ^1.1.3
crypto: ^3.0.7
# What every Halkyon server has (ADR 0014): signing in, the account and its
# deletion, pruning, the instance's basics. A Serverpod module in
# halkyon_shared, pinned to a signed commit of its main; for local work on
# both, a git-ignored pubspec_overrides.yaml at the workspace root points it
# at a checkout.
# deletion, pruning, the instance's basics. A Serverpod module among the
# repository's shared packages.
halkyon_base_server:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_base_server
ref: 96f2d1461803599bdf5b14783f4b3d3a2810742f
path: ../../../packages/halkyon_base_server
# Reads the pages profile links point to, for their rel="me" back-links.
html: ^0.15.6
# Mails email sign-in's codes over SMTP (ADR 0010).

View file

@ -2,10 +2,10 @@ name: halkyon_todo_client
description: Starting point for a Serverpod client.
environment:
sdk: '^3.12.2'
sdk: '^3.13.0'
resolution: workspace
dependencies:
serverpod_auth_idp_client: 4.0.3
serverpod_client: 4.0.3
serverpod_auth_idp_client: 4.0.4
serverpod_client: 4.0.4

View file

@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: '^3.12.2'
sdk: '^3.13.0'
flutter: '^3.44.4'
resolution: workspace
@ -29,11 +29,10 @@ dependencies:
cupertino_icons: ^1.0.5
flutter:
sdk: flutter
google_fonts: ^8.1.0
halkyon_todo_client:
path: ../halkyon_todo_client
serverpod_auth_idp_flutter: 4.0.3
serverpod_flutter: 4.0.3
serverpod_auth_idp_flutter: 4.0.4
serverpod_flutter: 4.0.4
dev_dependencies:
# Used for agents to drive the app through the Dart MCP
@ -43,9 +42,6 @@ dev_dependencies:
flutter_test:
sdk: flutter
dependency_overrides:
flutter_secure_storage: ^10.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

View file

@ -12,7 +12,7 @@ class AppConfigRoute extends WidgetRoute {
AppConfigWidget widget;
AppConfigRoute({
required final ServerConfig apiConfig,
required ServerConfig apiConfig,
}) : widget = AppConfigWidget(apiUrl: apiConfig.apiUrl.toString());
@override

View file

@ -4,18 +4,18 @@ description: Starting point for a Serverpod server.
# homepage: https://www.example.com
environment:
sdk: '^3.12.2'
sdk: '^3.13.0'
resolution: workspace
dependencies:
serverpod: 4.0.3
serverpod_auth_idp_server: 4.0.3
serverpod_cloud_storage: 4.0.3
serverpod: 4.0.4
serverpod_auth_idp_server: 4.0.4
serverpod_cloud_storage: 4.0.4
dev_dependencies:
lints: '>=3.0.0 <7.0.0'
serverpod_test: 4.0.3
serverpod_test: 4.0.4
test: ^1.25.5
serverpod:

View file

@ -1,6 +1,14 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
_discoveryapis_commons:
dependency: transitive
description:
name: _discoveryapis_commons
sha256: "55dd9e9cb83f8b62aa5dd8744d3bfedf79d33f9457c1684916c2b5c69c6e3a9b"
url: "https://pub.dev"
source: hosted
version: "1.0.8"
_fe_analyzer_shared:
dependency: transitive
description:
@ -9,6 +17,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "103.0.0"
amazon_cognito_identity_dart_2:
dependency: transitive
description:
name: amazon_cognito_identity_dart_2
sha256: ff3d493eb94d9dc624bd8f0a92bf49754e67d39717e6a52ff0c7dd14e5c0e20b
url: "https://pub.dev"
source: hosted
version: "3.8.2"
analysis_server_plugin:
dependency: transitive
description:
@ -760,6 +776,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "18.0.2"
google_cloud:
dependency: transitive
description:
name: google_cloud
sha256: b385e20726ef5315d302c5933bfb728103116c5be2d3d17094b01a82da538c1f
url: "https://pub.dev"
source: hosted
version: "0.5.0"
google_fonts:
dependency: transitive
description:
@ -816,51 +840,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.3"
halkyon_app:
googleapis:
dependency: transitive
description:
path: "packages/halkyon_app"
ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
resolved-ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
url: "https://code.halkyon.app/project-halkyon/halkyon_shared.git"
source: git
version: "0.1.0"
halkyon_base_client:
name: googleapis
sha256: d38bb64016ef27eca7fde992994b9d2999bcea307685807e15d6a08bff05dc61
url: "https://pub.dev"
source: hosted
version: "17.0.0"
googleapis_auth:
dependency: transitive
description:
path: "packages/halkyon_base_client"
ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
resolved-ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
url: "https://code.halkyon.app/project-halkyon/halkyon_shared.git"
source: git
version: "0.1.0"
halkyon_base_server:
dependency: transitive
description:
path: "packages/halkyon_base_server"
ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
resolved-ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
url: "https://code.halkyon.app/project-halkyon/halkyon_shared.git"
source: git
version: "0.1.0"
halkyon_core:
dependency: transitive
description:
path: "packages/halkyon_core"
ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
resolved-ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
url: "https://code.halkyon.app/project-halkyon/halkyon_shared.git"
source: git
version: "0.0.1"
halkyon_ui:
dependency: transitive
description:
path: "packages/halkyon_ui"
ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
resolved-ref: "96f2d1461803599bdf5b14783f4b3d3a2810742f"
url: "https://code.halkyon.app/project-halkyon/halkyon_shared.git"
source: git
version: "0.1.0"
name: googleapis_auth
sha256: d31822528becea550f7c7a9ab73a4518e31e48f201ab574be7e141f262923f27
url: "https://pub.dev"
source: hosted
version: "2.3.4"
hex:
dependency: transitive
description:
@ -970,6 +965,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
js:
dependency: transitive
description:
name: js
sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
json_annotation:
dependency: transitive
description:
@ -1595,6 +1598,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.0.4"
serverpod_cloud_storage:
dependency: transitive
description:
name: serverpod_cloud_storage
sha256: "49d33119165b60020f900666eeae7751b695d200c86fd68a75c39410f6f61284"
url: "https://pub.dev"
source: hosted
version: "4.0.4"
serverpod_cloud_storage_gcp:
dependency: transitive
description:
name: serverpod_cloud_storage_gcp
sha256: "9861459d8707beb8d60ac174fc0ee8d7992fa4b966ccb1b9eeeb751ce3e3d46d"
url: "https://pub.dev"
source: hosted
version: "4.0.4"
serverpod_cloud_storage_s3_compat:
dependency: transitive
description:
name: serverpod_cloud_storage_s3_compat
sha256: e2639d1cf21c82a2b86876584480241da51cbde8fc59de12e7f6a7ae39b4fd70
url: "https://pub.dev"
source: hosted
version: "4.0.4"
serverpod_database:
dependency: transitive
description:

View file

@ -1,3 +1,5 @@
# The Halkyon project: every app and the packages they share, one pub workspace.
#
# `_` is the conventional name of a pub workspace's root, which is never published or
# imported, so the naming lint doesn't apply to it.
name: _ # ignore: package_names
@ -6,11 +8,23 @@ publish_to: none
environment:
sdk: '^3.13.0'
# Every package of every Halkyon app and the packages they share (ADR 0015): one
# resolution, one lockfile, one version of each dependency across the apps.
workspace:
- halkyon_learn_client
- halkyon_learn_server
- halkyon_learn_flutter
- halkyon_learn_curator
- apps/learn/halkyon_learn_client
- apps/learn/halkyon_learn_server
- apps/learn/halkyon_learn_flutter
- apps/learn/halkyon_learn_curator
- apps/todo/halkyon_todo_client
- apps/todo/halkyon_todo_server
- apps/todo/halkyon_todo_flutter
- packages/halkyon_app
- packages/halkyon_base_client
- packages/halkyon_base_server
- packages/halkyon_core
- packages/halkyon_interop
- packages/halkyon_ui
- packages/halkyon_ui/example
dev_dependencies:
# Referenced by analysis_options.yaml in this directory.