Gedeelde Dart- en Flutter-bouwstenen voor OciDeck, Keiko en Limi
  • Dart 99.7%
  • Makefile 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-10 21:43:55 +00:00
.forgejo/workflows feat: introduce app appearance foundation 2026-10-04 18:33:31 +02:00
packages AiBackendMode.gateway: loopback zegt niets over de verwerkingslocatie 2026-10-10 23:39:12 +02:00
.gitignore feat: introduce app appearance foundation 2026-10-04 18:33:31 +02:00
.tool-versions feat: introduce app appearance foundation 2026-10-04 18:33:31 +02:00
analysis_options.yaml feat: introduce app appearance foundation 2026-10-04 18:33:31 +02:00
CHANGELOG.md build: require maintained material ui release 2026-10-04 18:35:18 +02:00
LICENSE feat: introduce app appearance foundation 2026-10-04 18:33:31 +02:00
Makefile feat: deel interfacetalen en vertalingen 2026-10-09 09:55:22 +02:00
pubspec.lock fix: make secret storage git-consumable 2026-10-04 18:42:29 +02:00
pubspec.yaml feat: deel interfacetalen en vertalingen 2026-10-09 09:55:22 +02:00
README.md feat: deel interfacetalen en vertalingen 2026-10-09 09:55:22 +02:00

AppFoundation

AppFoundation bevat kleine, productneutrale Dart- en Flutter-bouwstenen die OciDeck, Keiko en Limi gezamenlijk gebruiken. Verbeteringen landen hier één keer, worden hier getest en bereiken de toepassingen daarna via een gepinde versie.

De workspace bevat kleine, los versioneerbare packages:

  • app_appearance: de profielen Basic, Europa en Donker, een stateless Material-themabouwer, AppPalette, kleurhelpers en de contrastpoort voor een uiterlijkprofiel.
  • app_localizations: de gedeelde taalset, frameworks-terugval, taalkeuze en productneutrale vertalingen. Productspecifieke teksten blijven overlays in de toepassingen; de gedeelde catalogus wint bij overlap.
  • secret_storage: het productneutrale opslagcontract, een uitsluitend voor tests en vluchtige sessies bedoelde geheugenimplementatie, en een adapter voor de sleutelhanger van het besturingssysteem. Browseropslag wordt bewust geweigerd, omdat die geen gelijkwaardige veilige sleutelbos biedt.

Nieuwe packages worden pas toegevoegd zodra ten minste twee toepassingen dezelfde bewezen implementatie nodig hebben. Productmodellen, schermen, teksten en beleid blijven in de toepassingen.

Geheimopslag

Applicaties mogen hun eigen sleutelnamen en levenscyclus bepalen, maar gaan via het gedeelde SecretStore-contract. De Flutter-adapter sluit de poort op het web: schrijven werpt een fout zonder sleutel of waarde te onthullen, lezen geeft null, en wissen raakt geen browseropslag. Fouten van een beschikbare OS-sleutelhanger worden niet verborgen en bereiken de applicatie.

MemorySecretStore is nadrukkelijk geen beveiligde opslag en mag alleen voor tests of bewust vluchtige gegevens worden gebruikt. Een applicatie mag er in productie nooit stilzwijgend op terugvallen wanneer de veilige adapter niet beschikbaar is.

Gebruik

dependencies:
  app_appearance:
    git:
      url: https://pawprint.vigilis.online/LibreKAT/AppFoundation.git
      ref: app_appearance-v0.1.0
      path: packages/app_appearance
final theme = const AppThemeBuilder().build(AppAppearanceProfile.europa);

De fontFamily van een profiel is nullable. null betekent het systeemfont; een consumer die een eigen font kiest, moet dat font zelf bundelen. De package doet geen netwerkverzoeken om fonts op te halen.

Ontwikkelen

Flutter is gepind in .tool-versions. Vanaf de repository-root:

make setup
make check

De root is een native Dart-workspace. Alle packages delen daardoor één pubspec.lock en één dependency-resolutie.

Herkomst

De eerste packages zijn in 2026 geëxtraheerd uit de actuele EUPL-1.2-code van OciDeck en Keiko. In app_appearance zijn de ingebouwde profielwaarden en de contrastregels behouden; Keiko's focusgedrag en OciDecks uitgebreide uiterlijkcontrastmeting zijn samengebracht. De globale AppTheme.isDark-toestand is bewust niet overgenomen: thema-opbouw is hier deterministisch en stateless. De geheimopslag combineert Keiko's kleine opslagcontract met OciDecks fail-closed platformpoort, zonder de app-specifieke sleutelcatalogi over te nemen.

Zie de Git-historie van OciDeck en Keiko voor de eerdere auteursbijdragen.

Licentie

European Union Public Licence 1.2 (EUPL-1.2), zie LICENSE.