NilsBriggen
|
97aee3e4b3
|
feat(phase4): enrichment — dates->calendar, citations->references, book/paper links
CI / test (push) Successful in 16s
CI / build-apk (push) Has been skipped
CI / deploy-web (push) Successful in 29s
All detection pure/on-device; lookups send only the id/topic (never transcript):
- src/lib/enrich pure modules: dates (absolute + relative, anchored to lectureDate),
citations (DOI/arXiv/ISBN/author-year), ics (RFC5545), bib (BibTeX/RIS), links
(legit + Anna's Archive/LibGen search URLs) — 60 tests.
- lookup.ts: CORS-friendly metadata clients (Crossref/OpenAlex/Open Library) +
Wikipedia summary; AbortController timeouts, session cache, never throws.
- UI: transcript "Dates & references" (add to calendar .ics, look up references +
open DOI/OpenLibrary/Google Books/Wikipedia/Anna's Archive/LibGen); per-course
Bibliography screen with BibTeX/RIS export.
Not going to app stores, so Anna's Archive/LibGen links are included per request
(search URLs only — never fetched/proxied). 275 tests green, 0 tsc errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 15:48:13 +02:00 |
|
NilsBriggen
|
40858e0025
|
feat(phase3): learning helpers — summary, glossary, flashcards (SM-2), quizzes
CI / test (push) Successful in 16s
CI / build-apk (push) Has been skipped
CI / deploy-web (push) Successful in 30s
Deterministic, on-device, no model:
- src/lib/learn pure modules (tokenize, summary [TextRank-ish], glossary
[definition-pattern + frequency], flashcards [cloze/Q-A], srs [SM-2], quiz
[MCQ with distractors]) — 37 unit tests.
- Flashcard persistence: Dexie v4 + native v4 `flashcards` table; create/list/
listDue/updateSrs/delete/counts; cascades (transcript delete, course->Unsorted).
- UI: transcript "Study aids" (generate summary+glossary, click-to-seek; create
flashcards), Study screen (SM-2 review + Anki CSV export), per-lecture Quiz,
library Study link with due-count badge.
215 tests green, 0 tsc errors, web export builds.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 15:37:42 +02:00 |
|
NilsBriggen
|
fc24c0875d
|
feat(phase1): on-device semantic recall — embeddings, vector search, hybrid ranking
CI / test (push) Successful in 17s
CI / build-apk (push) Has been skipped
CI / deploy-web (push) Successful in 27s
Exam-time search over your own lectures, 100% on-device (vectors never leave it):
- EmbeddingEngine (transformers.js feature-extraction via the CDN loader,
multilingual-e5-small 384-dim, e5 query/passage prefixes); native stub.
- Vector store in StorageRepo (Dexie v3 + native v3 segvecs): upsertVectors,
brute-force cosine searchVectors (course-scoped), clearVectors, unembeddedIds.
Cascades: re-embed on segment edit, reassign updates vector courseId, deletes cascade.
- Hybrid search: semantic candidates + lexical rank fused via reciprocal-rank-fusion
(pure, tested); searchLectures() returns segment hits tagged semantic/lexical/both.
- embeddingStore: build-index/backfill with progress + embed-on-save (fire-and-forget).
- Search screen: query -> segment hits (snippet · course · time) -> tap jumps the
transcript to that timestamp (seek + scroll-into-view). Per-course stats on Courses.
25 repo tests (incl. cosine ranking + course scoping), 13 search tests, 170 total green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 14:48:03 +02:00 |
|
NilsBriggen
|
8db59d4bbe
|
feat(phase0): courses, migrations, persisted audio, stable segment IDs, course-aware UI
CI / test (push) Successful in 16s
CI / build-apk (push) Has been skipped
CI / deploy-web (push) Successful in 29s
Data layer (Zod-gated, behind StorageRepo; web Dexie v2 + native expo-sqlite
user_version migrations, both with no-data-loss segment-id backfill):
- Course entity + courseId/lectureDate/instructor/location/tags/lectureNumber on
transcripts; listCourses/createCourse/updateCourse/deleteCourse, listByCourse,
reassign. Stable per-segment ids assigned on create/update + backfilled.
- Persisted source audio (Dexie blob / expo-file-system) via putMedia/getMediaUrl;
the editor replays it after reload.
UI/stores:
- Pre-capture sheet (title + course + lecture date + language) before transcribing.
- Course-aware library home (All/Unsorted/per-course filter) + Courses screen.
- coursesStore; transcriptsStore course filter + reassign; transcribeStore threads
course/date and persists media.
16 web-repo tests incl. v1->v2 migration no-data-loss; 148 total green; web export OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 13:54:38 +02:00 |
|
NilsBriggen
|
9f42ee2460
|
Build Wisp: on-device transcription studio (web + native, one codebase)
CI / test (push) Has been cancelled
CI / deploy-web (push) Has been cancelled
CI / build-apk (push) Has been cancelled
Private, offline speech-to-text that runs Whisper on the user's own device —
free, no account, no per-minute fees. Replaces Otter.ai / Rev.
- Pure, tested engine: chunking, overlap timestamp-stitching, exports
(SRT/VTT/TXT/MD/JSON), WAV codec, resampler, job queue, model catalog (142 tests).
- Platform-abstracted TranscriptionEngine: transformers.js on web (loaded from
CDN at runtime to dodge Metro's onnxruntime-web bundling limits), whisper.rn
on native. Shared pipeline orchestrates decode -> chunk -> transcribe -> stitch.
- Cross-platform StorageRepo (Dexie web / expo-sqlite native), Zod-validated.
- UI: library + search, import, live-progress transcription, synced click-to-seek
editor, multi-format export; model picker + privacy in settings.
- Web ships as a single-page PWA with COOP/COEP isolation for threaded WASM;
Docker (nginx) image + Traefik compose for wisp.briggen.dev.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-13 17:54:21 +02:00 |
|