• v0.6.6-rc1 1728f15c88

    v0.6.6-rc1
    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-06 18:01:37 +02:00 | 140 commits to main since this release

    Erste verdrahtete Vorabversion von Phase 1 der KI-Foundation (#122): on-device Embedding-Modell + sqlite-vec + Background-Indexing + Suche-UI. Reiner Device-Test-Build — vor Merge nach main muss der Physical-Device-Pass laut apps/mobile/docs/ai-foundation-verification.md grün sein.

    Highlights

    • feat(ai): Phase-1-Wireup (#122, PR #444) — verdrahtet EmbeddingService + VectorStore + DataSourceRegistry + IndexingService hinter der Suche-Route; native Bindings (op-sqlite + onnxruntime) werden lazy beim Route-Render konstruiert.
    • Sub-Issues #439–#443 abgeschlossen: multilingual-e5-small on-device, sqlite-vec via op-sqlite, IDataSource-Adapter für Mails/Listen/Notizen, IndexingService mit Hash-Dedup + Backoff, Suche-UI mit Filter-Chips + Privacy-Hinweis.
    • Initial-Index-Backfill bewusst noch deaktiviert — wartet auf den Ladung + Wifi-Trigger (#438); RC1 indiziert ausschließlich inkrementell auf jede Mutation.
    Downloads
  • v0.6.5 287e525172

    v0.6.5
    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-03 01:53:04 +02:00 | 154 commits to main since this release

    Lint-Konfiguration vereinheitlicht: alle 11 Workspaces nutzen jetzt das gleiche @mrrmlab/config Flat-Config-Preset (base/node/react). CI lintet wieder das gesamte Monorepo statt nur api + shared-types.

    Highlights

    • chore(lint): ESLint v9 Flat-Config in feature-lists, feature-shopping-list, feature-tracking, ui, api-client, auth, mobile (#409) — 7 neue eslint.config.mjs, alle dünn (re-export aus @mrrmlab/config) — kein eigenes Regelwerk pro Paket.
    • Aufgesammelte Lint-Errors gefixt: ungenutzte Imports (Spinner, z, storeSchema, TagChip), unescaped Quotes in JSX (5x), useless escape im Regex, leere Interface-Augmentation (tamagui.config), import()-Type-Annotation in mail/hooks.
    • .drone.yml lint-Step linst jetzt alle Pakete (entfernter --filter), shared-types/api eslint.config.js → .mjs gegen MODULE_TYPELESS-Warnings.
    Downloads
  • v0.6.4 33559dd88b

    v0.6.4
    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-02 01:04:40 +02:00 | 158 commits to main since this release

    Vor parseText sieht der User die von ML Kit erkannten Zeilen-Boxen auf dem Foto und kann sie kuratieren: einzelne Boxen ignorieren, zwei zu einer mergen, fehlende Boxen per '+' selbst aufziehen oder bestehende per Drag-Handles in Größe/Position anpassen. Re-OCR läuft automatisch nur auf den geänderten oder neu erzeugten Boxen.

    Highlights

    • feat(ocr): Lines-Review-Screen zwischen ML Kit und Review (#327) — Tap = ignore, Long-press = Edit-Modus mit 4 Resize-Handles + Verschieben per Body-Drag, Toolbar mit Aktivieren/Mit-mergen/Löschen, '+ Box' für fehlende Zeilen.
    • Pure line-curation Modul (apps/mobile/src/services/line-curation.ts) — fromOcrLines / toggleIgnore / mergeLines / resizeLine / createLine / deleteLine + dirty-Tracking; 17 Vitest-Cases.
    • crop-math: imageRectToContainer als Inverse von containerToImageRect (für Box-Positionierung im Container-Space) — 11 Tests.
    • Re-OCR via ML Kit auf jeder dirty Box (neu/resized/merged) vor parseText, fällt auf Originaltext zurück wenn nichts erkannt wird.
    Downloads
  • v0.6.3 e75b40b811

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

    admin-mrrm released this 2026-05-31 02:28:07 +02:00 | 160 commits to main since this release

    Der User kann vor der Analyse einen Rahmen über das Foto ziehen, um nur den Zettel-Bereich an die OCR zu geben. Tischrand, Hintergrund und Nachbar-Zettel landen nicht mehr im ML-Kit-Input — saubere Erkennung ohne Cluster-Filter-Heuristik als Krücke.

    Highlights

    • feat(ocr): Pre-Crop-UI im Image-Preview (#326) — vier Eck-Handles auf Reanimated SharedValues + Gesture-Handler, dimmed Maske außerhalb des Rahmens, axis-aligned Rechteck mit MIN_RECT=40 und Bounds-Clamping.
    • Pure Crop-Math als testbares Modul (apps/mobile/src/services/crop-math.ts) mit 10 Vitest-Cases für computeDisplayedImage / containerToImageRect / clampRectInImage / isFullImageRect.
    • Crop wird vor ML-Kit und Server-OCR via expo-image-manipulator angewendet; bei Rotation wird der Rahmen zurückgesetzt.
    Downloads
  • v0.6.2 45f841bc72

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

    admin-mrrm released this 2026-05-29 13:36:07 +02:00 | 162 commits to main since this release

    Bei abgelaufenem ID-Token zeigt die App keine alten Daten mehr an, sondern landet zuverlässig auf dem Login. Vorher: API gab korrekt 401 zurück, aber TanStack Query behielt die gecachten Listen, sodass der User trotz fehlender Auth weiter Daten sah.

    Highlights

    • fix(auth): clear cache + force re-auth on 401 (#408, #429) — typed AuthError im api-client, globaler 401-Handler in @mrrmlab/ui macht qc.clear() + Logout-Redirect.
    • Integration-Test für expired JWT → 401 ergänzt; Vitest-Infra in @mrrmlab/api-client und @mrrmlab/ui nachgezogen.
    Downloads
  • v0.6.1 e7f7658ba5

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

    admin-mrrm released this 2026-05-29 00:02:25 +02:00 | 165 commits to main since this release

    Manuelle OCR-Korrektur wird einfacher: jedes erkannte Item zeigt im Review-Screen den dazugehörigen Bildausschnitt seiner handschriftlichen Zeile. Branding-Spalten (Logos, Footer) werden automatisch aus dem ML-Kit-Output gefiltert, bevor parseText läuft.

    Highlights

    • feat(ocr): per-line crops + main-cluster filter (#428) — pro ML-Kit-Zeile ein eigener Bild-Crop via expo-image-manipulator; filterToMainCluster() splittet Zeilen nach X-Position und behält nur den Cluster mit größter vertikaler Ausdehnung.
    • Folge-UX als #427 dokumentiert: User markiert Listenbereich vor OCR (Pre-Crop-Rechteck).
    Downloads
  • v0.6.0 48dc3fcfe3

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

    admin-mrrm released this 2026-05-28 19:30:10 +02:00 | 168 commits to main since this release

    Texterkennung läuft jetzt komplett on-device über Google ML Kit Text Recognition v2 (Latin Script). Bilder verlassen das Gerät nicht mehr, Erkennung erfolgt sofort ohne API-Call. Server-OCR (EasyOCR) bleibt als Backup verfügbar.

    Highlights

    • feat(ocr): on-device OCR via Google ML Kit Text Recognition v2 (#423, #424) — ML-Kit-Modell ~20 MB on-demand über Google Play Services, kein APK-Bloat, Inferenz lokal.
    • feat(ocr): ML-Kit-Integration in den Image-Preview-Flow (#425, #426) — mlkit/de als Default-Modell, neuer POST /lists/parse-text Endpoint wiederverwendet History-Fuzzy-Match auf erkanntem Text.
    • Pivot weg von TrOCR-handwritten (#421/#422 verworfen) — IAM-Korpus-Bias machte das Modell unbrauchbar für deutsche Handschrift.
    Downloads
  • v0.5.0 8fbddacd81

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

    admin-mrrm released this 2026-05-28 12:58:23 +02:00 | 177 commits to main since this release

    Erstes OCR-Feature mit echtem Mehrwert: Tippfehler in der Texterkennung werden gegen die eigenen historischen Einkaufslisten gemappt und als 1-Tap-Vorschlag angeboten. Ersatz für die nach Spike #77 verworfene on-device-OCR-Strategie.

    Highlights

    • feat(ocr): Fuzzy-Match aus Shopping-History (#415) — Server-seitiger Levenshtein-Match mit DE-Normalisierung (ä/ö/ü/ß, case-fold); ReviewScreen zeigt 'Meintest du X?'-Chip mit 1-Tap-Übernahme. Mobile + Web teilen den Komponentenbaum.
    • fix(ci): Drone-YAML-Interpolation in gitea-release-Asset-Upload (#411) — APK wird jetzt zuverlässig hochgeladen, $APK statt ${APK} im Shell-Block.
    Downloads
  • v0.4.6 2145b4a50a

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

    admin-mrrm released this 2026-05-27 18:42:14 +02:00 | 185 commits to main since this release

    Schmaler Hotfix nach v0.4.5: roher Stacktrace bei abgelaufenem ID-Token im UI behoben, transparenter Silent-Refresh statt Crash.

    Highlights

    • fix(auth): getUser() refresht abgelaufene ID-Tokens transparent statt zu werfen (#404) — kein User-facing Stacktrace mehr, geordneter Silent-Refresh oder Login-Redirect.
    Downloads
  • v0.4.5 c2f1d2d1bc

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

    admin-mrrm released this 2026-05-25 11:28:57 +02:00 | 189 commits to main since this release

    Erste komplette Release-Cut-Iteration mit konsistenter Versionierung, rollback-fähigen Image-Tags und automatisierten Smoke-Tests vor jedem Tag-Build.

    Highlights

    • Versions-Sync über alle Workspaces (#396): Single Source of Truth in root package.json, CI prüft Drift via scripts/sync-version.mjs --check.
    • Immutable Image-Tags + 7-Tage-Rollback-Fenster (#397): publish-api/web/ocr taggen mit ${DRONE_COMMIT_SHA:0:7}, docker image prune erst nach 168h.
    • Gitea-Release-Step (#398): Tag-Push erzeugt automatisch Release mit Notes aus roadmap.json + APK-Asset.
    • App-Shell-Epic-Abschluss (#336): Web-Drawer als Side-Drawer (#347), Settings-Navigation entkoppelt vom Drawer (#348), Profil-Menü schließt nach Klick (#349).
    • Maestro lists-smoke Flow + Gradle-Cache + Heap-Fix für e2e-mobile Pipeline.
    Downloads