Skip to content

Feature: Call transcript export - #122

Merged
jhweir merged 3 commits into
devfrom
feat/call-transcript-export
Aug 20, 2026
Merged

Feature: Call transcript export#122
jhweir merged 3 commits into
devfrom
feat/call-transcript-export

Conversation

@lucksus

@lucksus lucksus commented Aug 19, 2026

Copy link
Copy Markdown
Member

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 existing
    gatherTranscriptTurns helper 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.
  • A download button on each call card (CallsList.ts), beside the extract control.
  • The store surface is registered in templateSurface.ts (a content action) and in
    ai-context/src/fragments/stores.ts, with the generated context outputs regenerated — CI diffs
    those, so the fragment alone would have failed it.
  • Icon collection widened (3-primitives/scripts/collect-icons.ts). The scan globs never
    covered packages/templates/** or packages/module-system/**, so an icon named by a built-in
    template 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 download icon and the
    sparkle already sitting next to it. The bundle goes from 40 icons to 103.
  • Removed packages/app-shell/diag.tmp.ts, a debug script committed to dev by accident in
    ad1b569e. Unrelated to this feature, but it was one line away from the code being changed here.

Docs kept in sync

  • Store surface changed → ai-context/src/fragments/stores.ts updated and context regenerated (pnpm --filter @we/ai-context generate-context; CI diffs the outputs)
  • Architecture/layering changed → docs/architecture/codebase-map.md (and its sync partner ai-context/src/fragments/architecture.ts)
  • Seed shape changed → packages/app-shell/src/types/seed.ts comments + docs/getting-started/seed-system.md + seed-examples/
  • A package's public surface changed → that package's README/CONVENTIONS
  • N/A — no doc-bearing surface touched

Test plan

  • pnpm --filter @we/app-shell typecheck — clean
  • pnpm --filter @we/app-shell test — 429 passed
  • pnpm --filter @we/primitives test — 98 passed (icon bundle regenerates: 103 icons, 0 missing)
  • pnpm validate:schemas — 28 schemas, no issues
  • pnpm --filter @we/ai-context generate-context — no further diff, so the CI docs check is clean
  • Manual: exported a transcript from a recorded call and opened the file — TODO, confirm before merge

@netlify

netlify Bot commented Aug 19, 2026

Copy link
Copy Markdown

Deploy Preview for coasys-we ready!

Name Link
🔨 Latest commit ee332db
🔍 Latest deploy log https://app.netlify.com/projects/coasys-we/deploys/6a8718cf64efbe0009d251f9
😎 Deploy Preview https://deploy-preview-122--coasys-we.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

lucksus and others added 3 commits August 20, 2026 16:07
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
jhweir force-pushed the feat/call-transcript-export branch from 70ad990 to ee332db Compare August 20, 2026 15:10
@jhweir jhweir changed the title Add call transcript export button/function. Feature: Call transcript export Aug 20, 2026
@jhweir
jhweir merged commit 12b76ab into dev Aug 20, 2026
5 checks passed
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.

2 participants