18 Commits

Author SHA1 Message Date
Andrey Epifancev
9144427bba docs(openspec): archive openai-transcriber, promote transcription-provider spec (#5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:47:07 +04:00
Andrey Epifancev
17a5156cc6 docs(openspec): decision #19 (R-4) — final statuses for task-review minors; fix #18 wording (#5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:10:07 +04:00
Andrey Epifancev
ab698d00f3 fix(core): redact() Content-Disposition cut index; errorText never throws; design.md accuracy
M-1: redact()'s Content-Disposition cut computed its index against a
lowercased copy but sliced the original string — some Unicode characters
change length under toLowerCase(), which could let a fragment of
"Content-Disposition" survive the cut. Now uses a case-insensitive regex
matched directly against the original string.

T3.5: errorText() could itself throw on a pathological thrown value (a
null-prototype object with no toString/valueOf/Symbol.toPrimitive),
defeating transcribe()'s "never throws" guarantee in an already-caught
branch. Now wrapped defensively with a generic fallback message.

Also corrects two stale descriptions in design.md (classify/redact
signatures, and the post-promise rejection handling) so the archived
design document matches the shipped code.

Refs #5

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-28 01:24:58 +04:00
Andrey Epifancev
a948a80e7a docs: record decision #18 (R-3) — final review fix scope
Fixing M-1 (redact() Content-Disposition cut index), T3.5 (errorText
defensive wrap), and M-2 (design.md stale signatures) per the final
whole-branch reviewer's own bundling recommendation. Deferring M-3, M-4,
M-5 as cosmetic/unreachable/forward-looking with no current impact.

Refs #5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-28 01:20:17 +04:00
Andrey Epifancev
6f6df01cbd docs: record decisions #16-17 for Task 3/6 deviations from plan's literal code
R-1 (design #16): OpenAiTranscriber.transcribe's redact() call moved out of
the plan's literal post-try/catch position into a single guarded call site,
closing a never-throws gap the plan's own code left open (Task 3 fix loop).

R-2 (design #17): main.ts's settings field needed an override modifier to
satisfy noImplicitOverride against obsidian 1.13.1's new base Plugin.settings
field; the plan's literal code did not compile without it (Task 6).

Refs #5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-28 01:11:03 +04:00
Andrey Epifancev
4059b72178 docs: implementation plan for openai-transcriber; plan-level decisions 13-15 (#5)
Refs #5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-27 23:52:39 +04:00
Andrey Epifancev
a7902222db docs(openspec): trim model setting too (#5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-27 23:44:18 +04:00
Andrey Epifancev
75b9b5e471 docs(openspec): propose openai-transcriber (#5)
Spec delta transcription-provider, proposal and design with decisions
made without discussion.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-27 23:39:58 +04:00
Andrey Epifancev
9b4ea0a3c9 docs(openspec): archive core-recording-lifecycle, promote specs (#1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-27 19:26:25 +04:00
Andrey Epifancev
968140f7e1 docs(openspec): final-review rulings — claim-all scope, per-record errors, fixtures ignore, hardening
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-27 17:05:56 +04:00
Andrey Epifancev
d7ec88a91e docs(openspec): ruling — queue stops sending after dispose()
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKHeGuAYh4W1jNdjMConZa
2026-09-27 16:41:23 +04:00
Andrey Epifancev
cbd76d5802 docs(openspec): SDD pre-flight rulings — implementer models, test helper duplication, decision logging
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 15:47:55 +04:00
Andrey Epifancev
944a6594ec docs: apply plan review — retry status wording, TZ note, stale-sent and rename decisions
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 15:42:09 +04:00
Andrey Epifancev
cb9a691931 docs: implementation plan for core recording lifecycle; planning decisions
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 15:14:25 +04:00
Andrey Epifancev
1cd72201e2 test: track test-01.m4a fixture so golden tests pass on a clean clone
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 15:08:33 +04:00
Andrey Epifancev
75bac1eef9 docs(openspec): apply spec review — UTC id, 10m stale sent, no-speech wording, list() contract; decisions log
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 14:59:31 +04:00
Andrey Epifancev
e00d7e182c docs(openspec): core-recording-lifecycle proposal, specs, design
Refs #1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 14:44:26 +04:00
Andrey Epifancev
72c942f667 chore: bootstrap project skeleton, openspec, fixtures 2026-09-27 14:06:01 +04:00