Release 0.3.1 - #4
Merged
Merged
Conversation
- BinaryManager.ts: replace runtime ffmpeg/ffprobe ladder w/ override→env→bundled probe (~700 LoC
removed)
- scripts/build/fetch-embedded.sh: BtbN (Win/Linux) + Martin-Riedl (mac) per (platform, arch)
- build/beforeBuild.cjs: electron-builder lifecycle hook
- electron-builder.json5: per-platform extraResources w/ ${arch} substitution
- THIRD_PARTY_NOTICES.txt: GPLv3 ffmpeg + Unlicense yt-dlp + MIT deno
- src/main/utils/process.ts + probeBinary: LD_LIBRARY_PATH for Linux shared libs
- vitest: tests/__mocks__/electron.ts for app.isPackaged
/
The ffmpeg/ffprobe-fetching beforeBuild hook returned undefined, which electron-builder treats as "node_modules handled externally" (packager.js — _nodeModulesHandledExternally). Result: every asar since 0.3.0 shipped zero node_modules, crashing every install at `Cannot find module 'electron-log/main'`. Also: route auto-update feed by semver prerelease tag so beta installs follow beta.yml instead of 404'ing on latest.yml. release: 0.3.1-beta.4 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Default 'node' sdk name is treated as backend ingest by OpenPanel server — events arrive un-sessioned with empty deviceId/sessionId. Setting sdk='web' makes the server mint both. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Parallel mac/linux build matrix + Windows Installer workflow each called electron-publisher-github's getOrCreateRelease(), which lists releases by tag and creates a draft when none is found. All racers saw no release simultaneously and each created one, leaving Linux assets (AppImage, tar.gz) stranded in an orphan draft and breaking build-flatpak's gh release download. Adds a prepare-release job between verify-version and build that idempotently creates a draft release for the tag. Subsequent publishers find and reuse it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- render-flatpak-manifest.py also templates metainfo.xml.in, generating
<releases> from the last 10 v* tags (newest first, betas tagged
type="development", stable type="stable"), date from tagger date.
- build-flatpak checkout switches to fetch-depth: 0 + fetch-tags: true
so the render script sees full tag history.
- flatpak-builder cache-key keyed on hashFiles('flatpak/**',
'electron-builder.json5', 'package.json') instead of github.sha,
which never hit and added ~7 min per build.
- pre-commit hook now runs lint-staged only; full-tree lint, knip and
typecheck stay in CI to avoid blocking commits on unrelated WIP.
- ESLint moved into lint-staged (scoped to staged ts/tsx files).
- Rendered manifest, metainfo, bundle, tarball added to .gitignore.
Pre-push ran 'bun run test' against the working tree, which fails on any unstaged WIP and is redundant with CI (.github/workflows/ci.yml runs the same suite on every push). Tests stay in CI — local pre-push no longer blocks pushing branches with mid-flight work.
- collect_releases() now prints git's stderr/stdout when for-each-ref exits non-zero, instead of swallowing it inside CalledProcessError. - build-flatpak step explicitly adds the workspace as a global git safe.directory before invoking the render script. actions/checkout sets this too, but only in a temp config that didn't survive into the next step inside the freedesktop-24.08 container image — so the render-flatpak script's git call hit 'dubious ownership' and exit 128, killing v0.3.1-beta.6's flatpak build.
- Detect Sign-in-to-confirm + HTTP 429 in probe stderr; surface BotWallNotice with three variants (unconfigured / disabled / enabled), generic Retry button on every variant + Enable-cookies-and-retry on the disabled variant. - Add --cookies-from-browser source alongside the existing cookies.txt path. Settings collapse to a single tri-state radio (Off / File / Browser); cookiesEnabled migrates to cookiesMode. 7 browsers, platform-filtered (Safari macOS only). - New CookiesErrorAlert on the wizard error step: fires whenever the probe hard-fails AND cookiesMode != 'off'. Per-mode explanation + Open-cookies-settings link that routes back and auto-expands the cookies section. - Telemetry: format_probed gains bot_wall + cookies_mode; download_started cookies_enabled -> cookies_mode. - 21 locales updated via translate skill. - 3 unit tests added (cookies-resolver, format-probe-signals, settings-store cookies migration). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
OpenPanel ingest classifies events as client vs. server purely from the HTTP User-Agent header (parsed via UAParser). Node fetch's default UA matches the server-event regex, so the ingest skipped sessionId/deviceId minting and left os/osVersion/browser empty, with `device: "server"`. Setting `sdk: 'web'` only flips the `openpanel-sdk-name` metadata header and does not affect that classification. Inject a Chrome-shaped User-Agent on the SDK's api instance via the public `addHeader`. UA is built per-platform/arch with Electron's bundled Chromium version and the app version. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <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.
Summary
devintomainfor the stable 0.3.1 release.package.jsonfrom0.3.1-beta.11to0.3.1.Verification
bun run build:docswith the landing OpenPanel client ID supplied from the environmentbun run lintbun run typecheckbun run knipbun run test(83 files, 1038 tests)bash -n scripts/build/fetch-embedded.shbash -n scripts/test-binaries/smoke-all.shffmpegandffprobeprobe successfully withLD_LIBRARY_PATH=build/embedded/linux-x64Note: I did not run the full
scripts/test-binaries/smoke-all.shmatrix because it downloads every platform asset; the release workflow will exercise the build-time fetches on fresh runners.