Skip to content

Releases

v2026.4.6

Choose a tag to compare

@benjaminwestern benjaminwestern released this 04 Apr 00:34

What changed since v2026.4.5

This release removes the CDP foreground activation that caused Chrome or Edge to take focus during automated navigation and crawl interactions.

Fixed

  • Removed the shared Page.bringToFront call from the CDP navigation helper.
  • Stopped the browser window from being pulled to the foreground on each automated navigation step.
  • Kept the existing CDP-driven navigation flow intact so crawl and extraction behavior stays the same apart from focus handling.

Verification

  • node --check cli.js
  • bun ./cli.js --help
  • rg -n "bringPageToFront|Page\.bringToFront|activatePage" lib -S
  • BUILD_VERSION=2026.4.6 bun ./build.js
  • ./dist/stream-transcript-extractor-macos-arm64 --version

Full Changelog: v2026.4.5...v2026.4.6

v2026.4.5

Choose a tag to compare

@benjaminwestern benjaminwestern released this 02 Apr 04:52

What changed since v2026.4.4

This release fixes the interactive launcher regression that stopped accepting input after the first menu choice in both the Bun entrypoint and the standalone binary.

Fixed

  • Awaited the nested interactive launcher flows before closing the shared readline prompt.
  • Restored input handling for the second and subsequent questions in bun ./cli.js.
  • Restored the same interactive input flow in compiled binaries launched through the entrypoint.

Verification

  • node --check cli.js
  • bun ./cli.js --help
  • bun ./build.js macos-arm64
  • BUILD_VERSION=2026.4.5 bun ./build.js
  • ./dist/stream-transcript-extractor-macos-arm64 --version
  • Manual PTY validation of bun ./cli.js and ./dist/stream-transcript-extractor-macos-arm64 through the interactive launcher

Full Changelog: v2026.4.4...v2026.4.5

v2026.4.4

Choose a tag to compare

@benjaminwestern benjaminwestern released this 01 Apr 23:37

What changed since v2026.4.3

This release streamlines the crawl operator flow and makes reruns resume the saved queue cleanly.

Changed

  • Added a top-level interactive split between recommended settings and custom settings.
  • The recommended path now asks for the browser only, then launches the crawl workflow with the pending queue.
  • Pending queue execution now retries failed items first, then newly discovered items, then any remaining pending items.

Fixed

  • Default crawl queue artifacts now live at stable paths such as output/crawl.state.json and output/crawl.batch.json so reruns reopen the same queue by default.
  • The crawler now restores from saved state or batch artifacts, retries previous failures automatically, and merges newly discovered meetings into the same queue.
  • Older timestamped crawl artifacts are imported and migrated forward automatically on the next run.

Added

  • Batch summaries now include resume and queue snapshot metadata so reruns can recover even if only the batch file remains.

Verification

  • python3 ./scripts/validate_readme.py
  • node --check cli.js
  • node --check lib/network-mode-runtime.js
  • bun ./cli.js --help
  • bun ./cli.js crawl --help
  • Live Edge rerun validated against the existing saved crawl artifacts in ./output

Full Changelog: v2026.4.3...v2026.4.4

v2026.4.3

Choose a tag to compare

@benjaminwestern benjaminwestern released this 01 Apr 22:55

What changed since v2026.4.2

This is a hotfix release for the compiled binary launch path.

Fixed

  • Fixed the no-argument compiled binary launch path for detached launches.
  • Added an explicit terminal handoff for compiled binaries that are opened without a usable interactive TTY.
  • On macOS, the binary now asks Terminal to relaunch it when needed.
  • On Windows, the binary now relaunches itself in a real console window when needed.

Why this release exists

v2026.4.2 shipped the refactored runtime successfully, but the compiled no-argument binary could exit immediately when launched outside an existing terminal session. The supported interactive launcher itself was still correct in a real terminal. This hotfix restores the expected double-click-style launch behavior for compiled binaries.

Verification

  • Rebuilt macos-arm64, macos-x64, and windows-x64 binaries.
  • Re-verified the CLI help surface and the compiled macOS binary help output.

Full Changelog: v2026.4.2...v2026.4.3

v2026.4.2

Choose a tag to compare

@benjaminwestern benjaminwestern released this 01 Apr 22:44

What changed since v2026.4.1

This release finishes the runtime refactor and brings the shipped surface back in line with the supported workflow.

Runtime architecture

  • Replaced the old monolithic extract.js entrypoint with a thin cli.js entrypoint.
  • Split the implementation into focused modules under lib/ for browser session management, crawl state, meeting discovery, transcript capture, transcript output, DOM helpers, and workflow runtimes.
  • Kept extract and crawl on the same underlying extraction path so batch extraction reuses the same capture logic as single-meeting extraction.

CLI and supported workflow

  • Finalized the supported public workflow as bun ./cli.js and bun ./cli.js crawl.
  • Removed the temporary refactor-only JavaScript harnesses and verification scripts from scripts/.
  • Removed the unsupported MP4 downloader surface. The tool remains focused on transcript extraction to local .json and .md outputs.

Help, docs, and build contract

  • Updated the CLI help text to reflect the final workflow and mode boundaries.
  • Updated the README to match the new module layout, the final supported workflow, and the actual build outputs.
  • Clarified that the build produces standalone macOS and Windows executables, not installer packages.

Build verification

  • Rebuilt all release targets successfully:
    • stream-transcript-extractor-macos-arm64
    • stream-transcript-extractor-macos-x64
    • stream-transcript-extractor-windows-x64.exe
  • Smoke-checked the fresh macOS arm64 binary help output after the refactor.

Full Changelog: v2026.4.1...v2026.4.2

v2026.4.1

Choose a tag to compare

@benjaminwestern benjaminwestern released this 01 Apr 11:58

Full Changelog: v2026.3.3...v2026.4.1

v2026.3.3

Choose a tag to compare

@benjaminwestern benjaminwestern released this 01 Apr 02:41

Stream Transcript Extractor v2026.3.3

This release now includes the updated guided startup flow, Markdown-first defaults,
and the refreshed operator-facing CLI copy.

What changed

  • Added a no-flag guided setup flow for the raw CLI and packaged binaries.
  • Exposed mode, browser, profile, output format, output naming, output directory,
    diagnostics, browser control port, and keep-browser-open behavior through menus.
  • Changed the recommended and default output format to Markdown for no-flag and
    flag-driven runs that omit --format.
  • Updated the runtime terminal copy so startup, waiting states, fallback prompts,
    and diagnostic output are clearer for non-technical users.
  • Refreshed the banner and README so the release assets and docs match the current
    product flow.

Validation

  • bun ./extract.js --help
  • interactive TTY smoke test of the guided no-flag startup flow
  • python3 scripts/generate_assets.py
  • python3 scripts/validate_readme.py
  • BUILD_VERSION=v2026.3.3 bun ./build.js
  • ./dist/stream-transcript-extractor-macos-arm64 --version

Release assets

This release includes updated standalone binaries with embedded version v2026.3.3 for:

  • macOS arm64
  • macOS x64
  • Windows x64

v2026.3.2

Choose a tag to compare

@benjaminwestern benjaminwestern released this 01 Apr 01:24

Stream Transcript Extractor v2026.3.2

This release keeps the extractor behavior from v2026.3.1 and improves the
packaging around it. The tool surface is the same network-first Stream
transcript extractor, but the documentation is now much stronger, more
maintainable, and easier to operate from.

What this tool does

Stream Transcript Extractor lets you pull Microsoft Teams recording transcripts
from Microsoft Stream by driving your signed-in Chrome or Edge profile instead
of depending on Microsoft Graph transcript APIs.

It can:

  • Use your local Chrome or Edge profile, including profile selection by name,
    email, or directory.
  • Attach to a browser launched in remote debugging mode with an isolated
    temporary profile wrapper.
  • Extract transcript payloads directly from Microsoft Stream network traffic.
  • Decrypt transcript payloads when Stream serves encrypted transcript bodies.
  • Parse transcript payloads from JSON and WebVTT-style responses.
  • Fall back to DOM extraction when the network transport is not usable.
  • Write transcript output as JSON, Markdown, or both.
  • Capture meeting metadata such as title, date, source URL, creator details,
    and recording start or end times when available.
  • Save network capture diagnostics for successful runs, and for failed runs
    when --debug is enabled.
  • Build standalone binaries for macOS arm64, macOS x64, and Windows x64 with
    Bun.

Extraction modes

The extractor supports three modes:

  • network
    The recommended mode. Open the Stream page with the Transcript panel closed,
    arm capture, then open the panel. This mode captures transcript-related
    network responses, ranks likely candidates, loads response bodies, decrypts
    when necessary, and extracts transcript entries from the payload.
  • automatic
    The network extractor with UI assistance layered on top. After you select the
    page, the tool reloads with capture armed, tries to locate and open the
    Transcript panel, nudges the panel to trigger lazy loading, retries when
    needed, waits for transcript-like traffic, and only then falls back to
    manual assistance.
  • dom
    The fallback mode. This mode scrolls the rendered Stream transcript UI and
    extracts entries from the visible DOM when the network path is unsuitable or
    when you want to inspect how the rendered transcript behaves.

Outputs and diagnostics

The extractor can explain its state more clearly while it runs:

  • Network capture prints a live terminal confirmation when likely transcript
    traffic is seen.
  • Run summaries distinguish between potentially relevant network responses and
    actual parsed transcript payload matches.
  • Automatic mode explains why it fell back to manual help, including what it
    found, what it clicked, and what signal it failed to confirm.
  • --debug in automatic mode prints the full UI action trace, retry flow, and
    fallback reason.
  • --debug in network and automatic modes saves detailed request or response
    lifecycle data, candidate bodies, WebSocket frames, and richer capture
    metadata.
  • Failed network or automatic runs do not save a .network.json file unless
    --debug is enabled.

What changed in v2026.3.2

  • Reworked the README so the source workflow, extraction modes, outputs,
    troubleshooting flow, and release path are clearer and easier to scan.
  • Added generated documentation assets for the README, including a banner and
    section header graphics with a documented source of truth.
  • Added documentation maintenance scripts for regenerating README assets and
    validating local README references.
  • Added mise task wrappers for the documentation asset and validation flow.
  • Added Python cache ignores to .gitignore so the repository stays clean when
    the docs scripts are run locally.

Release assets

This release includes standalone binaries with embedded version
v2026.3.2 for:

  • macOS arm64
  • macOS x64
  • Windows x64

v2026.3.1

Choose a tag to compare

@benjaminwestern benjaminwestern released this 01 Apr 00:36

Stream Transcript Extractor v2026.3.1

This release turns the extractor into a much easier tool to operate in the
real world. The network path is still the preferred path, but it now gives
better terminal feedback, clearer failure summaries, and a new automatic mode
that tries to perform the fragile UI steps for you before it falls back to
manual help.

What this tool does

Stream Transcript Extractor lets you pull Microsoft Teams recording transcripts
from Microsoft Stream by driving your signed-in Chrome or Edge profile instead
of depending on Microsoft Graph transcript APIs.

It can:

  • Use your local Chrome or Edge profile, including profile selection by name,
    email, or directory.
  • Attach to a browser launched in remote debugging mode with an isolated
    temporary profile wrapper.
  • Extract transcript payloads directly from Microsoft Stream network traffic.
  • Decrypt transcript payloads when Stream serves encrypted transcript bodies.
  • Parse transcript payloads from JSON and WebVTT-style responses.
  • Fall back to DOM extraction when the network transport is not usable.
  • Write transcript output as JSON, Markdown, or both.
  • Capture meeting metadata such as title, date, source URL, creator details,
    and recording start or end times when available.
  • Save network capture diagnostics for successful runs, and for failed runs
    when --debug is enabled.
  • Build standalone binaries for macOS arm64, macOS x64, and Windows x64 with
    Bun.

Extraction modes

The extractor now supports three modes:

  • network
    The recommended mode. Open the Stream page with the Transcript panel closed,
    arm capture, then open the panel. This mode captures transcript-related
    network responses, ranks likely candidates, loads response bodies, decrypts
    when necessary, and extracts transcript entries from the payload.
  • automatic
    A new mode built on the same network extractor. After you select the page,
    the tool reloads with capture armed, tries to locate and open the Transcript
    panel, nudges the panel to trigger lazy loading, retries when needed, waits
    for transcript-like traffic, and only then falls back to manual assistance.
  • dom
    The fallback mode. This mode scrolls the rendered Stream transcript UI and
    extracts entries from the visible DOM when the network path is unsuitable or
    when you want to inspect how the rendered transcript behaves.

Outputs and diagnostics

The tool can now explain its state more clearly while it runs:

  • Network capture prints a live terminal confirmation when likely transcript
    traffic is seen.
  • Run summaries now distinguish between potentially relevant network responses
    and actual parsed transcript payload matches.
  • Automatic mode explains why it fell back to manual help, including what it
    found, what it clicked, and what signal it failed to confirm.
  • --debug in automatic mode prints the full UI action trace, retry flow, and
    fallback reason.
  • --debug in network and automatic modes saves detailed request or response
    lifecycle data, candidate bodies, WebSocket frames, and richer capture
    metadata.
  • Failed network or automatic runs no longer save a .network.json file unless
    --debug is enabled.

CLI surface

The CLI supports:

  • --mode <network|automatic|dom>
  • --browser <chrome|edge>
  • --profile <query>
  • --output <name>
  • --output-dir <path>
  • --format <json|md|both>
  • --debug-port <port>
  • --debug
  • --keep-browser-open
  • --help
  • --version

What changed in v2026.3.1

  • Added automatic mode for transcript-panel automation on top of the network
    extractor.
  • Added terminal confirmation when likely transcript traffic is detected during
    capture.
  • Added clearer fallback summaries so users can understand why automatic mode
    could not finish without help.
  • Added automatic-mode debug logging for UI actions, retries, and fallback
    reasons.
  • Changed run summaries to report potentially relevant responses separately from
    actual parsed transcript payload matches.
  • Gated failed-run .network.json creation behind --debug.
  • Updated README and help text to document the new mode and diagnostics.

Release assets

This release includes standalone binaries with embedded version
v2026.3.1 for:

  • macOS arm64
  • macOS x64
  • Windows x64