• v0.6.6-rc21 6f07b87826

    v0.6.6-rc21
    All checks were successful
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-13 16:42:10 +02:00 | 60 commits to main since this release

    Drei Folgearbeiten zum Day-Planner-MVP aus rc20, alle aus der rc20-Device-Validation hervorgegangen. (1) Empty-State mit Onboarding-CTAs: Wenn /heute leer ist, sieht der User jetzt eine Erklärung plus zwei Aktions-Buttons ['Manuelle Aufgabe erstellen' → Todo-Liste, 'Mail-Konto verbinden' → Mail-Setup] statt nur die Leerzeile. (2) Refresh-on-Focus: Web refetcht beim Tab-Wechsel zurück, Mobile via AppState-Bridge zum react-query focusManager beim Vordergrund-Hereinkommen — der Plan ist nach längerem Hintergrund-Liegen nicht mehr stale. (3) Re-Plan-Bug-Fix: POST /planner/run lieferte heutige bereits-planned Items nicht in der Response zurück, sodass die UI sie aus dem Cache verlor. planToday() läuft jetzt in einer DB-Transaktion mit Wipe-and-Replan-Semantik (heutige planned → pending → re-slot, done bleibt geschützt). Slotter mit id-Tiebreaker für stabile Slots bei identischem Pool. Architektur-Entscheidung per arch-bot konsultiert (Option a, Wipe-and-replan mit Stabilitäts-Refinement).

    Highlights

    • Empty-State: Onboarding-Karte mit zwei Action-Buttons (Web → /todo + /einstellungen/mail; Mobile → drawer/todo + /mail/new-account); Sub-Issue #463
    • Refresh-on-Focus: useDayPlan opt-in refetchOnWindowFocus; Mobile bridged AppState 'active' → focusManager.setFocused via apps/mobile/app/_layout.tsx; Sub-Issue #465
    • Re-Plan-Bug #461: planToday() in DB-Transaktion mit Demote-Step für heutige planned-Items; gestrige planned + done unangetastet; Slotter-Tiebreaker (priority, earliestAt, createdAt, id) für deterministische Slot-Zuordnung
    • Integration-Test-Idempotenz auf neue Wipe-and-Replan-Semantik umgestellt; API-Suite 452/452 grün
    Downloads
  • v0.6.6-rc20 1111ed62f7

    v0.6.6-rc20
    All checks were successful
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-12 07:06:06 +02:00 | 72 commits to main since this release

    Der Day-Planner hat seinen ersten User-Touchpoint: ein /heute-Screen in Web und Mobile, der die heutigen Kalender-Termine und die vom PlannerService eingeplanten Candidate-Items auf einer gemeinsamen Timeline rendert. Backend (PlannerService, Candidate-Model, ADR 0001) war seit rc16 fertig, aber bisher ohne Client-Surface. Ein manueller 'Tag jetzt planen'-Button triggert POST /planner/run und aktualisiert die Liste. Folge-Phasen (Planner v1 regelbasiert, v2 LLM, Source-Done-Event-Bus aus ADR 0001 §7, Item-Klick → Mark-Done, Refresh-on-Focus) bleiben unter Epic #360 offen.

    Highlights

    • Neues Workspace-Paket @mrrmlab/feature-day-planner mit DayPlannerScreen, Provider und Hooks — spiegelt die Struktur der bestehenden Feature-Pakete (lists, tracking, shopping-list, day-planner)
    • shared-types: DayPlanDto/DayPlanItem/DayPlanEvent zod-Schemas; api-client: neue PlannerResource (GET /planner/today, POST /planner/run) mit 3 neuen Tests
    • Mobile: /heute-Drawer-Eintrag (Expo Router) — Web: /heute-Route + Sidebar-Eintrag (TanStack Router); Source-/Prioritäts-Badges pro Item, Events in eigenem Stil
    • Phase 5 (UI) von Epic #360 abgeschlossen — Epic bleibt für Planner v1/v2 und Event-Bus offen
    Downloads
  • v0.6.6-rc19 088ff78a5b

    v0.6.6-rc19
    All checks were successful
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-09 00:09:37 +02:00 | 86 commits to main since this release

    Shopping-, Todo-, Notes- und Lists-Overview-Screen scrollen wieder. Der Screen-Container aus @mrrmlab/ui war ein YStack flex={1} ohne ScrollView, sodass auf Mobile Inhalte unterhalb des Viewports unerreichbar waren. Opt-in scrollable-Prop am Screen-Component aktiviert einen ScrollView-Wrapper; an den vier Listen-Screens angewendet.

    Highlights

    • Screen aus @mrrmlab/ui akzeptiert jetzt scrollable-Prop (opt-in)
    • ShoppingListScreen, TodoListScreen, NotesListScreen, ListsOverviewScreen mit scrollable
    • Andere Screens mit eigenem ScrollView (mail, archiv, einstellungen) unverändert
    Downloads
  • debug-rpi5 148e8c049c

    Debug APK fuer rpi5 (auto)
    All checks were successful
    continuous-integration/drone/tag Build is passing
    continuous-integration/drone/push Build is passing
    continuous-integration/drone Build is passing
    Pre-release

    admin-mrrm released this 2026-06-08 22:54:53 +02:00 | 88 commits to main since this release

    APP_VARIANT=development. NO Keycloak. Auto-overwritten per custom build. NOT FOR PROD.

    Downloads
  • v0.6.6-rc18 81080c8aaa

    v0.6.6-rc18
    All checks were successful
    continuous-integration/drone/pr Build is passing
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-08 07:27:43 +02:00 | 92 commits to main since this release

    Phase2-Validierung der Mutation→Publish-Kette wurde aus dem fragilen Maestro-Flow rausgezogen: 5 deterministische Unit-Tests in apps/mobile/tests/mutation-observer.test.tsx beweisen die useCreateList/Update/Delete → onSourceChange-Verkabelung gegen ein gemocktes ApiClient. Auf der Backend-Seite restauriert ein X-Dev-User-Header-Bypass in JwtAuthGuard die in den Code-Kommentaren dokumentierte Dev-Passthrough-Semantik — der no-Keycloak-Mobile-Build kann jetzt echte Mutationen gegen dev.api absetzen, ohne dass das prod-Deploy davon betroffen ist.

    Highlights

    • 5 Unit-Tests sperren die Mutation→onSourceChange-Verkabelung (Create/Update/Delete + Failure-Pfad + No-Callback-Provider)
    • JwtAuthGuard akzeptiert X-Dev-User: nur wenn NODE_ENV !== 'production' (4 Guard-Tests inkl. Prod-Bypass-Blocker)
    • HttpClient.defaultHeaders-Option: Mobile-Dev-Build sendet X-Dev-User: dev-user wenn auth === null, Authorization aus getToken gewinnt weiterhin
    • Diagnostik-Counter (bumpA/B/C/D, ctx-Probe, mutation-trace.ts, Trace-Zeile in DebugIndexBar) entfernt — −67 Zeilen Diagnose-Overhead
    Downloads
  • v0.6.6-rc17 13dc5346ad

    v0.6.6-rc17
    All checks were successful
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-07 19:14:32 +02:00 | 106 commits to main since this release

    Mutation-Hooks in feature-lists rufen jetzt einen optionalen onSourceChange-Callback im onSuccess. Mobile-Bootstrap fängt das ab und publisht in shopping-list- und note-DataSources — der Index füllt sich inkrementell beim Anlegen/Editieren/Löschen, der Debug-Button ist nicht mehr die einzige Quelle.

    Highlights

    • Neuer optionaler Prop onSourceChange auf ListsApiClientProvider
    • Alle 6 List-/Item-Mutation-Hooks rufen den Callback in onSuccess
    • Mobile-Bootstrap wired den Callback an einen DataSource-Bundle-Singleton (kein op-sqlite/onnxruntime beim App-Start)
    • 5 neue Tests in data-source-bundle.spec.ts sperren Singleton + Publish-Routing
    Downloads
  • v0.6.6-rc16 a6e8522116

    v0.6.6-rc16
    Some checks failed
    continuous-integration/drone/push Build is failing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-07 18:38:52 +02:00 | 109 commits to main since this release

    Xenova-ONNX-Export behält die Standard-BERT-3-Input-Signatur (input_ids, attention_mask, token_type_ids). E5/XLM-RoBERTa nutzt keine Segment-IDs in der Praxis — wir füttern jetzt einen Zeros-Tensor in token_type_ids, damit der ONNX-Graph zufrieden ist.

    Highlights

    • session.run() bekommt jetzt 3 Inputs statt 2
    • token_type_ids = Zeros-Tensor mit gleicher Shape wie input_ids
    • Spec-Test sperrt 3-Input-Verhalten
    Downloads
  • v0.6.6-rc15 2b269a7d1f

    v0.6.6-rc15
    All checks were successful
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-07 18:11:32 +02:00 | 111 commits to main since this release

    rc14 zeigte: ONNX-Download hängt bei 0 Bytes auf cas-bridge.xethub.hf.co ohne User-Agent (Tokenizer-Downloads mit UA gehen durch). Fix: gleicher UA-String für ONNX-Request + Sanity-Check nach Download (size < 1 MB → delete + throw mit URL).

    Highlights

    • User-Agent-Header für ONNX-Download (war nur auf Tokenizer)
    • Post-Download-Größencheck: <1 MB → löschen + actionable error
    • spec-Tests sperren beide Verhalten gegen Regression
    Downloads
  • v0.6.6-rc14 f62f945d16

    v0.6.6-rc14
    All checks were successful
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-07 17:35:08 +02:00 | 113 commits to main since this release

    Wechsel auf transformers.js-Mirror Xenova/multilingual-e5-small — hostet onnx/model_quantized.onnx (118 MB) im transformers.js-Convention-Pfad. intfloat-Original-Repo hat diese Datei nicht (nur model.onnx 470 MB + AVX512-spezifische Variante). Cache-Verzeichnis auf embedding-e5-small-xenova umbenannt, um die korrupte 15-Byte-Datei aus rc13 zu invalidieren.

    Highlights

    • MODEL_REPO: intfloat → Xenova
    • cache-dir bumped → invalidiert kaputten rc13-Download
    • spec-Test sperrt URL gegen erneute Drift auf intfloat
    Downloads
  • v0.6.6-rc13 336632c269

    v0.6.6-rc13
    All checks were successful
    continuous-integration/drone/push Build is passing
    continuous-integration/drone/tag Build is passing
    Stable

    admin-mrrm released this 2026-06-07 15:57:57 +02:00 | 115 commits to main since this release

    rc12-Gerätetest ist DER entscheidende Befund: die Debug-Bar zeigt 'embedder: loading tokenizer · [awaiting from_pretrained]' und kein einziges 'fetch#N ' folgt — AutoTokenizer.from_pretrained hängt SYNCHRON bevor der erste fetch-Call überhaupt rausgeht. Patchen am fetch-Layer hilft prinzipiell nicht; der Hang liegt vor der HTTP-Schicht (vermutlich in transformers' get_file_metadata / Cache-Lookup auf Hermes). Quellanalyse zeigt: from_pretrained ist nur ein Convenience-Wrapper, der die zwei JSONs lädt und sie an new PreTrainedTokenizer(tokenizerJSON, tokenizerConfig) weiterreicht. Die Dateien haben wir bereits seit rc8 lokal — rc13 überspringt from_pretrained komplett und ruft den Konstruktor direkt. Der ganze fetch-Interceptor wird obsolet und entfällt.

    Highlights

    • feat(embedding): PreTrainedTokenizer wird direkt mit den geparsten JSONs auf Disk konstruiert (#122) — AutoTokenizer.from_pretrained wird nie mehr aufgerufen. Bypass des Hangs auf Hermes.
    • remove(embedding): hf-fetch-interceptor-Modul + Spec entfernt — kein Code-Path mehr, der huggingface.co anspricht (Tokenizer-Konstruktor ist synchron, ONNX-Session lädt nur lokale Datei). Cleanup von ~150 LOC.
    • ensureModelFilesDownloaded() gibt jetzt {modelPath, tokenizerJsonPath, tokenizerConfigPath} zurück; initialize() liest beide JSONs und konstruiert den Tokenizer in einem Schritt.
    • Tests umgebaut: '@huggingface/transformers'-Mock liefert jetzt PreTrainedTokenizer als Konstruktor-Mock; AutoTokenizer-Spielereien fliegen raus.
    Downloads