managarten/apps
Till JS 526d92f41c fix(memoro): diagnostic logs + loading states + transcription source label
User reported three issues after the Phase 5 + the encryption-decrypt
fix landed:

  1. Auto-title still doesn't appear (placeholder "Titel..." stays empty)
  2. No loading state visible while transcription / title are in flight
  3. Transcript should say which STT engine produced it

This commit ships diagnostics for issue 1 and concrete UX for 2 + 3.

Issue 1 — diagnostics (no fix yet, root cause unknown):

  Add console.info logs at every step of the auto-title pipeline so
  the next test session surfaces exactly where it breaks:

  - memos.svelte.ts after llmTaskQueue.enqueue() succeeds:
      "[memoro] enqueued title task { taskId, memoId }"
  - memos.svelte.ts on enqueue failure:
      "[memoro] failed to enqueue title task: <err>"
  - memoro/llm-watcher.svelte.ts on subscribe:
      "[memoro-llm-watcher] starting subscription"
  - watcher's next handler when rows arrive:
      "[memoro-llm-watcher] saw N done title task(s)"
  - applyRow logs each step: drop / skip / write / consume

  Refactor: extract per-row logic into applyRow() so the next handler
  loop can wrap each row in try/catch — a single bad row won't crash
  the watcher and prevent later rows from being processed.

  Belt-and-suspenders startup sweep: run a one-shot manual sweep of
  done rows immediately after subscribing. Dexie liveQuery sometimes
  misses the first emission when the subscription is set up in the
  same microtask as a recent table update; the sweep catches any
  done rows that already exist from a previous tab session OR that
  were written between layout mount and subscription start.

  Encryption check fix: the previous skip-if-manual-title check
  read `memo.title?.trim()` after Dexie.get(), but Dexie reads
  return the ENCRYPTED row (no decrypt hook) — so memo.title is
  either null/undefined (no manual title) OR an `enc:1:...` blob
  (manual title set). Either way, presence-check is enough; no
  need to decrypt to know whether the user filled it in. The old
  code happened to work because trim() on a non-empty string
  returns truthy regardless. Comment now spells this out.

Issue 2 — visible loading states:

  apps/mana/apps/web/src/lib/modules/memoro/views/DetailView.svelte

  Transcript area now branches on processingStatus:

    - processing → "Wird transkribiert…" with three pulsing dots
                   (CSS @keyframes loadingPulse)
    - failed     → red error message + manual retry hint
    - completed + transcript → the transcript itself + source label
    - completed + no transcript → italic "Kein Transkript vorhanden."

  Title input placeholder swaps to "Titel wird generiert…" while a
  generateTitleTask for this memo is in pending or running state.
  The check uses a Dexie liveQuery against llmQueueDb.tasks via the
  [refType+refId] compound index, returning the most recent task row.
  Reactive — the placeholder switches back to plain "Titel…" the
  moment the watcher writes the title and deletes the queue row.

Issue 3 — transcription source label:

  Below the transcript: a small italic "Voxtral via mana-stt" label.
  Hardcoded to Voxtral because that's services/mana-stt's default
  model (DEFAULT_MODEL = "mistralai/Voxtral-Mini-3B-2507" in
  voxtral_service.py). If we ever route to Whisper or another model
  per-request, the label will need to come from the response payload
  rather than be hardcoded — Phase 5.5 work.

After this commit lands, the test loop is: record a memo, watch the
browser console for the [memoro] / [memoro-llm-watcher] log lines.
Whichever step is missing identifies the broken link.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:41:28 +02:00
..
api refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
calc/packages/shared chore: delete 25 web-archived directories, remove stale stubs, clean workspace config 2026-04-03 13:03:49 +02:00
calendar refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
cards chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
chat refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
citycorners chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
contacts refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
context chore(workspace): remove redundant nested lockfiles + workspace.yaml 2026-04-09 11:57:11 +02:00
docs docs: Phase 9 documentation roundup — close encryption-shaped doc gaps 2026-04-08 11:47:59 +02:00
guides refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
inventar chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
mana fix(memoro): diagnostic logs + loading states + transcription source label 2026-04-09 12:41:28 +02:00
manavoxel chore(workspace): unify vitest to ^4.1.2 across all packages 2026-04-07 13:58:29 +02:00
memoro chore: remove abandoned per-product workspace artifacts 2026-04-09 11:56:51 +02:00
moodlit refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
mukke feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
news refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
nutriphi refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
photos chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
picture refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
planta refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
presi refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
questions refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
skilltree chore: delete 25 web-archived directories, remove stale stubs, clean workspace config 2026-04-03 13:03:49 +02:00
storage refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
times chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
todo refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
traces refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
uload refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
zitare/packages/content chore: delete 25 web-archived directories, remove stale stubs, clean workspace config 2026-04-03 13:03:49 +02:00