Skip to content

Implement plaud download (spec 0002)#1

Merged
simensollie merged 1 commit into
mainfrom
spec-0002-download
May 3, 2026
Merged

Implement plaud download (spec 0002)#1
simensollie merged 1 commit into
mainfrom
spec-0002-download

Conversation

@simensollie

Copy link
Copy Markdown
Owner

Summary

  • Implements spec 0002 (download recordings): F-01 through F-19. plaud download <id>... produces a per-recording archive folder containing transcript (canonical JSON plus rendered md/srt/vtt/txt), Plaud-generated summary, metadata, and optional audio.
  • Worker pool meters recordings (concurrency clamped 1..16); per-recording errors do not abort the run; 401 mid-run cancels the session. Atomic per-file writes via .partial + fsync + rename. Per-artifact idempotency keyed on S3 ETag (audio) and SHA-256 (transcript, summary).
  • New internal/archive package (slug folding, layout, atomic writes, metadata, renderers, Windows long-path) and new internal/api calls (detail, temp_url, audio, transcript_fetch, idle-read deadline reader). Pulls in golang.org/x/text for NFKD slug folding.
  • Repo-wide em-dash sweep across spec notes/templates per CLAUDE.md. specs/*/resources/ added to .gitignore so real recordings stay out of git.

Test plan

  • go test -race ./... green locally
  • go vet ./... and gofmt -l . clean
  • Manual smoke per spec 0002 §8 acceptance walk on a real EU account before flipping spec status to Done

Spec 0002: per-recording archive folder containing transcript (canonical
JSON plus rendered md/srt/vtt/txt), Plaud-generated summary, metadata,
and optional audio. Worker pool meters recordings; per-recording errors
do not abort the run; 401 mid-run cancels the session. Atomic per-file
writes via .partial + fsync + rename. Per-artifact idempotency keyed on
S3 ETag (audio) and SHA-256 (transcript, summary).

Adds internal/archive (slug folding, layout, atomic writes, metadata,
renderers, Windows long-path) and extends internal/api with detail,
temp_url, audio, transcript_fetch, and an idle-read deadline reader.

Also folds in repo-wide em-dash removal across spec notes and templates
(CLAUDE.md style rule), adds specs/*/resources/ to .gitignore so real
recordings stay out of git, and pulls in golang.org/x/text for NFKD
folding in slug generation.

Spec: specs/0002-download-recordings/
Phases: 1-6 ticked
@simensollie simensollie merged commit c535b24 into main May 3, 2026
3 of 4 checks passed
@simensollie simensollie deleted the spec-0002-download branch May 3, 2026 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant