Skip to content

Releases: sebastian-software/offcourse

v1.5.1

Choose a tag to compare

@swernerx swernerx released this 22 Jul 21:53
367f6e6

1.5.1 (2026-07-22)

Bug Fixes

  • align npm trusted publishing workflow name (#123) (1568b82)

v1.5.0

Choose a tag to compare

@swernerx swernerx released this 22 Jul 20:09
3436594

1.5.0 (2026-07-22)

Features

  • add Piccalilli course support (4657304)
  • support Josh Comeau courses via unified sync (#39) (97056bd)
  • unify course sync state across platforms (#69) (1530dee), closes #21

Bug Fixes

  • accept duplicate HLS rendition names (#75) (c007c8a)
  • avoid self-merging Loom video as audio (0377ca5), closes #95
  • clean up shared state follow-ups (#98) (4163a98)
  • deps: update actions/setup-node action to v7 (c06aca0)
  • deps: update codecov/codecov-action action to v7 (8bb0401)
  • deps: update commitlint monorepo to v21.2.1 (d6bb7a3)
  • deps: update dependency ast-v8-to-istanbul to v1.0.5 (0ef0c9c)
  • deps: update dependency execa to v10 (84eed00)
  • deps: update dependency lint-staged to v17.1.0 (#76) (181a7a9)
  • deps: update dependency node to v24 (e83c18a)
  • deps: update pnpm to v11.13.1 (6b3707e)
  • deps: update pnpm to v11.15.0 (#77) (818502d)
  • download complete LearningSuite videos (bf650cc)
  • ensure segment paths are relative in concatSegments function (#1) (6dbc09a)
  • fail incomplete HLS segment downloads (#44) (5855339)
  • fall back to GET when HLS HEAD is rejected (9a14de1), closes #96
  • format Renovate configuration (#46) (d8abb5d)
  • handle incomplete Vimeo configs (1d37011)
  • handle progressive output stream failures (#48) (8cdcd6a)
  • handle unsupported Skool sync options (2d25477), closes #90
  • harden course database migrations (#63) (05234c4)
  • harden download failures and timeouts (a4fc545), closes #93
  • harden downloader HTTP boundaries (#61) (a737fdf)
  • harden LearningSuite module scanning (9945eef), closes #85
  • ignore local worktrees in checks (580ed71)
  • improve scraper diagnostics and title cleanup (#54) (b0da40b)
  • isolate LearningSuite HLS renditions (#49) (8216379)
  • keep interactive Josh login on current page (8bff05b), closes #89
  • loom: clean up downloads and capture sessions (#52) (0857a08)
  • make CLI shutdown interruptible (5990f77)
  • normalize Skool URLs before validation (#50) (b1b6c6c)
  • polish Josh Comeau extraction and downloads (79e38bf), closes #97
  • preserve LearningSuite modules and lessons (#51) (56c0ff0)
  • preserve retry errors during shutdown (300625c), closes #86
  • preserve signed HLS variant queries (87bb033)
  • preserve Vimeo HLS audio and signed URLs (#53) (43238db)
  • propagate progressive stream failures (#43) (c1b53ba)
  • protect stored session credentials (#41) (57ed415)
  • publish attachments atomically (6238a37)
  • publish ffmpeg output atomically (#47) (484acc2)
  • redact signed download URLs (#42) (5cd3248)
  • reject unsupported sync options and URLs (#55) (b6e2ad9)
  • report complete source coverage (#56) (077a916)
  • report coverage without provider workaround (#57) (92cc64b)
  • resume validated native lessons (73fb4dd)
  • sanitize attachment download paths (#40) (b92983b)
  • stabilize Josh Comeau Vimeo extraction ([4c3c580](https://github.com/sebastian-software/offcourse/c...
Read more

v1.4.0

Choose a tag to compare

@swernerx swernerx released this 28 Dec 12:18
f1622d9

1.4.0 (2025-12-28)

Features

  • add spinner feedback during course structure scanning (3e9bc2d)
  • parallel course structure scanning (97a5fe4)

v1.3.0

Choose a tag to compare

@swernerx swernerx released this 27 Dec 14:02
a42127b

1.3.0 (2025-12-27)

Features

  • add integration test infrastructure with combined Codecov coverage (5113cc6)
  • add self-hosted HLS test stream for integration tests (5c56175)

Bug Fixes

  • cli: ensure browser always closes and process exits cleanly (fab14ec)
  • codecov config - don't require both flags simultaneously (8a04c6a)
  • downloader: use unique temp directories for parallel segment downloads (cec6c37)
  • handle untildify behavior in expandPath tests (ee4e192)
  • learningsuite: auto-dismiss MUI modal dialogs before interactions (b80959c)
  • learningsuite: capture all HLS segments by seeking through video (822db9a)
  • make fileSystem tests cross-platform compatible (8f64516)
  • make path tests cross-platform compatible (11c81b6)
  • optimize integration tests for speed (0bd826c)
  • skip slow HLS download test by default in integration tests (d724434)
  • update vitest config for v4 (remove deprecated poolOptions) (f603fcc)
  • use pnpm instead of npm in CI workflow (776b67f)

v1.2.2

Choose a tag to compare

@swernerx swernerx released this 23 Dec 17:27
e060cc3

1.2.2 (2025-12-23)

Bug Fixes

  • downloader: add -nostdin to ffmpeg to prevent hanging (3dd95eb)
  • learningsuite: add auth token (APIKEY) to video downloads (4f4f963)
  • learningsuite: capture API proxy URLs and follow redirects (6301013)
  • learningsuite: download encrypted HLS videos via segment capture (d0c0f0a)

v1.2.1

Choose a tag to compare

@swernerx swernerx released this 23 Dec 15:44
5e83392

1.2.1 (2025-12-23)

Bug Fixes

  • learningsuite: filter out API proxy URLs, capture real CDN URLs (e281413)

v1.2.0

Choose a tag to compare

@swernerx swernerx released this 23 Dec 15:09
45e8d9e

1.2.0 (2025-12-23)

Features

  • add GitHub Pages homepage with logo (a121038)

Bug Fixes

  • hls: improve video URL detection and error handling (7b9b0cc)

v1.1.0

Choose a tag to compare

@swernerx swernerx released this 23 Dec 14:42
7f5e5b0

1.1.0 (2025-12-23)

Features

  • add LearningSuite platform support (d5c2af5)
  • complete command now auto-detects platform (5a11776)
  • complete: iterative approach to unlock all content (a3d5207)
  • learningsuite: add --auto-complete option to batch complete lessons (df86ad2)
  • learningsuite: detect locked lessons and add auto-complete option (05235bd)

Bug Fixes

  • complete: avoid stale element references when clicking modules (73ccd35)
  • complete: iterate through all modules and lessons systematically (6aac791)
  • complete: mark incomplete lessons, not just unlock locked ones (ff6c5cb)
  • learningsuite: --auto-complete now exits after completing lessons (78852d9)
  • learningsuite: add Origin/Referer headers to HLS downloads (d1157b2)
  • learningsuite: improve video and attachment extraction (a0da5b9)
  • learningsuite: improve video detection with play button trigger (e750f6e)
  • learningsuite: pass session cookies to HLS video downloads (09b2006)
  • learningsuite: properly extract lesson title and text content (b57fcc6)
  • learningsuite: properly extract modules and lessons from course pages (9b1d5dd)
  • learningsuite: remove redundant video URL from markdown (146d6f6)
  • learningsuite: suppress GraphQL errors, use DOM-based extraction (96aad94)
  • learningsuite: use correct referer URL for video downloads (31f3031)
  • resolve ESLint errors (4fd34cc)
  • show correct phase message when --skip-content is used (b6b7e82)

v1.0.1

Choose a tag to compare

@swernerx swernerx released this 22 Dec 21:28
10b21ea

1.0.1 (2025-12-22)

Bug Fixes

  • use separate tsconfig.build.json for production build (86e60c9)

v1.0.0

Choose a tag to compare

@swernerx swernerx released this 22 Dec 21:24
7e30d66

1.0.0 (2025-12-22)

⚠ BREAKING CHANGES

  • The 'enrich' command for transcribing videos is no longer available

Features

  • add --resume flag and fix HLS URL handling in downloaders (163055b)
  • add detailed error reporting and retry logic for Loom downloads (177e92d)
  • add fast mode to skip images, fonts, CSS during scraping (bc7a128)
  • add HighLevel (GoHighLevel) course scraper support (04c15f8)
  • add network interception fallback for video URL capture (fc36f6d)
  • add OpenRouter integration for transcript polishing (22487f2)
  • add tsx for dev, detect locked lessons (809c9fd)
  • add video transcription with Whisper (06f9edd)
  • add video type prefix [LOOM], [VIMEO] etc. to output (bba70e7)
  • add Vimeo video download support (64ecde7)
  • add Zod schemas for API response validation (1fec40f)
  • beautiful multi-progress bars for parallel downloads (cfe6e01)
  • cli: add Commander-based CLI with sync, login, inspect commands (53b53e1)
  • config: add configuration system with Zod validation (552e5c8)
  • detect and track locked lessons separately (8a62c9a)
  • download linked PDF and Office files from lessons (6e838be)
  • downloader: add HLS streaming support for Loom videos (2dfcae1)
  • downloader: add native video downloader with queue system (8c6e236)
  • extract Vimeo URLs from running player in iframe (ba68bbe)
  • format transcripts with paragraphs (cd16eb8)
  • improve download progress display and file size reporting (c5a548c)
  • improve locked lesson detection using hasAccess from JSON (6b2e3e8)
  • improved logging for unsupported video providers (f808169)
  • parallel downloads for faster video syncing (95d12f2)
  • progress bar for Phase 1 (course structure scanning) (2017425)
  • progress bars for validation and content extraction phases (324be59)
  • remove AI transcription and enrich feature (7ba6327)
  • scraper: add Playwright-based Skool scraper (b9b111f)
  • separate summary.md and transcript.md, add module summaries (fc49a60)
  • SQLite state management, improved video detection, graceful shutdown (fc001d7)
  • storage: add filesystem utilities for course output (ef18545)
  • support domain-restricted Vimeo videos via browser context (2b16e0c)
  • use CDP network interception to capture video URLs from iframes (b49a873)
  • use readable titles in summary and transcript files (ad1377d)

Bug Fixes

  • --force flag now also resets error lessons for retry (d20e7fb)
  • --resume --retry-errors now works correctly (bbe732d)
  • add autoplay=1 to embed URLs to trigger HLS fetch (1ffa068)
  • add conventional-changelog-conventionalcommits peer dependency (84f4502)
  • add missing await to saveMarkdown call (da6e1e7)
  • capture Loom/Vimeo HLS by navigating to embed page (6608bd9)
  • clean download progress display - remove completed bars (8334894)
  • extract full iframe URLs with auth params for Vimeo (e8fcec3)
  • formatting (4491c00)
  • handle direct HLS URLs in Loom downloader (974b7d6)
  • highlevel: correctly parse product API response for course name (697ab07)
  • highlevel: fix video detection and default to headless mode (e4dcf51)
  • migrate to Zod 4 API for url and datetime validation (7519b2c)
  • mute videos during extraction to avoid audio output (9150dc0)
  • mute videos during extraction to avoid audio output (ee43c1c)
  • navigator: correctly handle module URLs vs classroom URLs (a0e8763)
  • prefix unused parameter with underscore in queue test (076f9c4)
  • resolve lint errors in syncHighLevel.ts (4af50d5)
  • simplify release-it preset config for v10 compatibility (9f9748f)
  • use Playwright request API for Vimeo (avoids CORS) (09a2386)
  • use response listener instead of route interception (cb63eee)
  • use URL slug for output directory name (804e4fb)
  • version (d17bbc7)

Performance Improvements

  • reduce wait times and improve content extraction (e306be2)