desktop: in-place reprocess via .shonar.json remote-id sidecar
The bug: 'Re-transcribe' uploaded a brand-new recording every click — the server id lived only in DetailUi and died with the process, so duplicates piled up server-side and no restart could reuse them. - RemoteMapping sidecar (<name>.shonar.json) persists recording id + model + title next to the audio; survives restart, renames (carried by renameFile), and Syncthing - openDetail preloads remoteId + override model from the sidecar - transcribe() re-runs POST /reprocess?job=transcribe&model= in place when a mapping exists; upload only for never-uploaded files - new Re-summarize button (mapping-gated) hits /reprocess?job=summarize - 404 on a stale mapping deletes the sidecar and tells the user to re-upload (self-heals instead of failing forever) - 6 unit tests (roundtrip, corrupt json, blank id, rename carry-over)
This commit is contained in:
parent
b121d1a2e3
commit
ac77f89ffa
5 changed files with 214 additions and 2 deletions
|
|
@ -19,6 +19,7 @@ updated in the same commit as the work it describes.
|
|||
| M8 | Android: details screen — transcript synced to playback, summary, action items, editing | done — `detail/{id}` route (transcript/summary/status tabs, tap-to-seek, speed control, edit dialogs, title rename) on `CustomShonarProvider` AI methods (fetch/update transcript+summary, jobs, PATCH title/notes) against new backend `PUT transcript/summary` user-edit endpoints (versioned, pipeline won't clobber); pure `AiContent` parsing/sync mapping; 19 new Android tests + 5 backend edit tests, full suites green (186 Android, 55 backend), `assembleDebug` clean. Local-only/unsynced rows get honest empty states; on-device verification pending |
|
||||
| T1 | Backend transcription model support — registry (tiny/base/small/medium/large-v3), global default (`base`, runtime-editable), per-recording overrides, `GET /api/v1/models`, worker uses saved model, job stage/progress | done — migration (`recordings`+`upload_sessions.transcription_model`, `processing_jobs.stage/progress`, `app_settings`); `PUT /models/default` (future rows only); finalize/session override (finalize wins); faster-whisper model cache + fail-fast unavailable errors; 10 new tests, backend suite 64 green + ruff clean |
|
||||
| M9 | Backend: full-text search endpoints + filters, exports (audio/txt/md/zip), deletion sweep | TODO (schema/FTS columns exist) |
|
||||
| D-1 | Desktop: in-place reprocess (no re-upload) — `<name>.shonar.json` sidecar maps library file → server recording id; Re-transcribe/Re-summarize hit `POST /reprocess` (model override switches persist server-side); rename carries mapping; deleted-remote mapping self-heals to re-upload | done — provider `reprocess()`, endpoint `?model=` param, 2 backend + 6 desktop tests, suites green (69 backend, 23 desktop) |
|
||||
| M10 | Android dark mode, accessibility pass, consent UX polish, deploy/backup docs, OpenAPI sync | TODO |
|
||||
|
||||
## Explicit TODOs (not yet implemented)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue