Add initial halkyon-shared packages #2

Merged
raisondetredev merged 1 commit from refs/pull/2/head into main 2026-04-27 19:11:41 +02:00
raisondetredev commented 2026-04-27 19:08:38 +02:00 (Migrated from codeberg.org)

Initial population of the three shared packages.

halkyon_core (pure Dart)

  • Re-exports Clock from package:clock for testable time access.
  • Logger interface with ConsoleLogger reference implementation.
  • generateUuid() thin wrapper over package:uuid.
  • HalkyonException marker interface.

halkyon_interop (pure Dart)

  • TaskShape: minimal cross-app task representation.
  • HalkyonEvent sealed hierarchy with ReviewDueEvent.
  • EventPublisher interface with DormantPublisher no-op default.

halkyon_ui (Flutter)

  • HalkyonBrand: cobalt #273EB2 (primary seed), copper #C44800 (accent).
    Both extracted from the project icon's gradient stops.
  • HalkyonColorScheme.light() / .dark(): Material 3 ColorSchemes seeded
    from cobalt with copper pinned as tertiary.
  • HalkyonExtras ThemeExtension: success/warning/info status colors and
    FSRS rating colors (Again/Hard/Good/Easy).
  • HalkyonPickerPalette ThemeExtension: 20 named content colors for
    user-facing color picking. Stays fixed across themes and dynamic colors.
  • HalkyonTheme.light() / .dark(): assembled ThemeData factories.
  • HalkyonThemeAccessors: ergonomic Theme.of(context).halkyon and
    .pickerPalette getters with safe fallbacks.

Workspace setup

  • Pub Workspace at the repo root ties the three packages together.
  • All packages publish_to: none (private to the org).

Notes

  • Architecture decisions reflect ongoing planning: pure-Dart core, BLoC-
    ready halkyon_ui without prescribing state management, no Result type
    (idiomatic try/catch instead).
  • Some files are codegen output (*.tailor.dart); these are committed
    per Dart convention.

Test coverage

Each lib/src/<file>.dart has a corresponding test/<file>_test.dart.
All tests pass via flutter test packages/<name> for each package.

Initial population of the three shared packages. ## halkyon_core (pure Dart) - Re-exports `Clock` from package:clock for testable time access. - `Logger` interface with `ConsoleLogger` reference implementation. - `generateUuid()` thin wrapper over package:uuid. - `HalkyonException` marker interface. ## halkyon_interop (pure Dart) - `TaskShape`: minimal cross-app task representation. - `HalkyonEvent` sealed hierarchy with `ReviewDueEvent`. - `EventPublisher` interface with `DormantPublisher` no-op default. ## halkyon_ui (Flutter) - `HalkyonBrand`: cobalt #273EB2 (primary seed), copper #C44800 (accent). Both extracted from the project icon's gradient stops. - `HalkyonColorScheme.light()` / `.dark()`: Material 3 ColorSchemes seeded from cobalt with copper pinned as tertiary. - `HalkyonExtras` ThemeExtension: success/warning/info status colors and FSRS rating colors (Again/Hard/Good/Easy). - `HalkyonPickerPalette` ThemeExtension: 20 named content colors for user-facing color picking. Stays fixed across themes and dynamic colors. - `HalkyonTheme.light()` / `.dark()`: assembled `ThemeData` factories. - `HalkyonThemeAccessors`: ergonomic `Theme.of(context).halkyon` and `.pickerPalette` getters with safe fallbacks. ## Workspace setup - Pub Workspace at the repo root ties the three packages together. - All packages `publish_to: none` (private to the org). ## Notes - Architecture decisions reflect ongoing planning: pure-Dart core, BLoC- ready halkyon_ui without prescribing state management, no Result type (idiomatic try/catch instead). - Some files are codegen output (`*.tailor.dart`); these are committed per Dart convention. ## Test coverage Each `lib/src/<file>.dart` has a corresponding `test/<file>_test.dart`. All tests pass via `flutter test packages/<name>` for each package.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
project-halkyon/halkyon-shared!2
No description provided.