Repository navigation
feat(transcribe): name who said each line; Master.csv of any size; limits in plain words - #25
Merged
Merged
Conversation
…e; plain-word limits - Master.csv on this computer or a mounted folder is read as a stream, line by line: the CSV parser keeps its state across pieces (a quote, a doubled quote, CRLF or a quoted newline split between pieces), and a row older than the sync is dropped by its start time before the whole row is read. The 512 MB cap is gone for local files. cli-core's SFTP client only reads a file whole, so over SFTP the file is still read whole, up to 512 MB. A stream error names no path (WC-SECR-6). A generated 600 MB Master.csv synced with a 458 MB peak. - Recordings that ffmpeg decodes (WAV, GSM, M4A, SLN) can be up to 2 GB: its output stops at an hour, and a 690 MB hour of 48 kHz stereo WAV peaked at 1.4 GB. MP3, Ogg and FLAC stay at 256 MB, since the bundled decoders decode the whole file before the hour is checked. A local read no longer copies the file's buffer. - recordings_channels (caller,employee or employee,caller) names each channel of a stereo recording: the caller by name and number, the employee by extension and name, from the stored call. Without it, Channel 1 and Channel 2 as before. Not a declared setting: its absence means something no value says (WC-CMD-30). A call's metadata keeps the caller's number as client. - README Limits, the overview's "What it does not do yet", install and connect (the Desktop connect form's Countries of your phone lines field) and the roadmap say first what the reader can do, in plain words (WC-DOC-8). The overview's H1 is "Asterisk", for the site's sidebar. - Changelog fragment under Added and Fixed (WC-DOC-15). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…recordings under 2 GiB - The connect form's Countries of your phone lines hint quoted as Desktop has it. - M4A goes through ffmpeg too, so it loses the speakers like WAV and GSM. - SFTP explained in each sentence that names it. - The recording cap is one byte under 2 GiB, the most Node's readFile reads. - The changelog says a call imported earlier needs one sync before --replace gives its caller's number. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged
leemour
added a commit
that referenced
this pull request
Nov 14, 2026
* chore(release): 0.5.0 Collects the two changes/ fragments into ## 0.5.0 — 14.11.2026 and raises the version: who said each line, Master.csv of any size (#25), cli-core 0.663.0 and cli-base 0.100.0 (#26). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(release): live check of 0.5.0 passed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task
Remove the size caps that exist only because files were read whole, label the two channels of a stereo recording with the real people, and rewrite the README limits and the overview's "What it does not do yet" so a reader sees first what works.
Why
Master.csvover 512 MB was refused, because it was read into memory whole.Channel 1/Channel 2, which nobody can act on.What
src/cdr/csv.ts,src/cdr/reader.ts,src/files.ts):FileAccess.stream; the CSV parser keeps its state across pieces (quote, doubled quote, CRLF, quoted newline), UTF-8 decoded withstream: true, and rows older than the sync are dropped by their start time before the full row is read. Stream errors name no path (WC-SECR-6). Over SFTP, cli-core's client reads only whole files, sostreamyields one read capped at 512 MB (src/sftp-files.ts).src/transcribe-calls.ts): what ffmpeg decodes (WAV, GSM, M4A, SLN) up to 2 GiB − 1 byte; MP3/Ogg/FLAC stay at 256 MB, since the bundled decoders decode the whole file before cli-core checks the hour. The local read no longer copies the buffer.recordings_channels(caller,employee|employee,caller), validated insrc/config.ts: stereo lines name the caller (name + number) and the employee (extension + name) from the stored call; without it,Channel N. Not declared with a default: absence means something no value says (WC-CMD-30). Meeting metadata gainsclient.docs/index.md(H1# Asterisk, new "What it does not do yet"),docs/installation.md(Desktop's Countries of your phone lines field, sizes, channel labels),docs/configuration.md,docs/roadmap.md.changes/feat-limits-and-plain-docs.md(Added, Fixed; WC-DOC-15).Testing
pnpm lint,pnpm typecheck,pnpm test(152 passed, one worker),pnpm docs:check,generate:check,contracts:check,lint:commands,audit:commands,test:matrix:check,security:no-leak,version:check,package:check.DBUS_SESSION_BUS_ADDRESS=disabled:: a generated 629 MB Master.csv synced with a 458 MB peak RSS (old code refused it). A generated one-hour 48 kHz stereo WAV (690 MB) through cli-core'sdecodeChannelspeaked at 1.43 GB RSS.🤖 Generated with Claude Code