Feature: Call transcript export - #122
Merged
Merged
Conversation
✅ Deploy Preview for coasys-we ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
The store surface gained `exportCallTranscript` but the generated context outputs were never regenerated, which CI diffs. Also fixes the prettier quote style in the fragment and the import order in SpaceStore. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ery speaker Three follow-ups from review of the export button: - The export re-read and re-sorted the call's children itself, duplicating `gatherTranscriptTurns`. It now goes through that helper, so what counts as a turn — which rows are dropped, and in what order they end up — is decided once and the file agrees with what extraction reads. - Speaker names came from the profile cache alone, so anyone not already on screen exported as a raw DID. Fetch the transcript's speakers first, and read the name the host already derives rather than assembling it again. - Icon collection never scanned templates or feature modules, so every icon a built-in template named — the new `download`, and `sparkle` beside it — fell through to the CDN and rendered as nothing offline. Also removes `diag.tmp.ts`, a debug script committed to dev by accident. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jhweir
force-pushed
the
feat/call-transcript-export
branch
from
August 20, 2026 15:10
70ad990 to
ee332db
Compare
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.
Summary
A recorded call can now be taken out of the space as a plain text file — one line per utterance,
Name, ISO timestamp: text— from a download button on the call's card.Offered to everyone rather than gated on authorship, on the same reasoning as rejoining a call: it
reads the shared record and writes to the reader's own device, so there is no one else's account
being edited the way there is with the edit and delete beside it.
Changes
spaceStore.exportCallTranscript(callId)— gathers the call's turns through the existinggatherTranscriptTurnshelper rather than reading the children again, so what counts as a turn(which rows are dropped, and the order they end up in) is decided in one place and the exported
file agrees with what extraction feeds the model. Names every speaker: the profile cache is
populated as a side effect of rendering people, so the transcript's speakers are fetched first,
or anyone not currently on screen would export as a raw DID. The file is named after the call and
stamped with the export time, so successive exports don't overwrite each other.
CallsList.ts), beside the extract control.templateSurface.ts(acontentaction) and inai-context/src/fragments/stores.ts, with the generated context outputs regenerated — CI diffsthose, so the fragment alone would have failed it.
3-primitives/scripts/collect-icons.ts). The scan globs nevercovered
packages/templates/**orpackages/module-system/**, so an icon named by a built-intemplate was absent from the bundle and fell through to the jsdelivr CDN — fine in development,
blank on a desktop build with no connection. This affected the new
downloadicon and thesparklealready sitting next to it. The bundle goes from 40 icons to 103.packages/app-shell/diag.tmp.ts, a debug script committed todevby accident inad1b569e. Unrelated to this feature, but it was one line away from the code being changed here.Docs kept in sync
ai-context/src/fragments/stores.tsupdated and context regenerated (pnpm --filter @we/ai-context generate-context; CI diffs the outputs)docs/architecture/codebase-map.md(and its sync partnerai-context/src/fragments/architecture.ts)packages/app-shell/src/types/seed.tscomments +docs/getting-started/seed-system.md+seed-examples/Test plan
pnpm --filter @we/app-shell typecheck— cleanpnpm --filter @we/app-shell test— 429 passedpnpm --filter @we/primitives test— 98 passed (icon bundle regenerates: 103 icons, 0 missing)pnpm validate:schemas— 28 schemas, no issuespnpm --filter @we/ai-context generate-context— no further diff, so the CI docs check is clean