Skip to content

Merge upstream final 54 commits + orphaned-PR harvest#19

Merged
ThairaHub merged 6 commits into
mainfrom
merge/upstream-2026-06-11
Jun 11, 2026
Merged

Merge upstream final 54 commits + orphaned-PR harvest#19
ThairaHub merged 6 commits into
mainfrom
merge/upstream-2026-06-11

Conversation

@ThairaHub

Copy link
Copy Markdown
Collaborator

Upstream siddharthvaddem/openscreen is now archived; this brings the fork fully up to date with its final state and harvests the valuable orphaned PRs.

Upstream merge (8e55b12)

54 commits: in-browser auto-captions (Whisper, bundled model), 17 custom cursor themes, reactive PiP zoom, webcam mirror toggle, cursor-smoothing rewrite, remember-last-folder, record-permissions prompt, waveform/CI fixes.

Union resolution keeps all fork features (segmented webcam, focus regions, subtitles, corner/stack presets). Decisions:

  • Both caption stacks kept (upstream in-browser + fork Electron-side) for comparison.
  • Blur stays flagged off (BLUR_REGIONS_ENABLED = false) matching upstream.
  • Cursor-in-export restored via upstream's exporter cursor plumbing (was dropped in merge Add webcam mask shape support #1).
  • Reactive webcam shrink gated off while a focus region animates so the two zooms don't fight.
  • Locale gaps (upstream shipped several keys en-only) filled with English fallback.

Additional commits

Verification

  • tsc --noEmit — 0 errors
  • vite build — renderer + electron + preload OK
  • i18n-check — all 12 locales match en across 7 namespaces
  • vitest225/225 passing (was 221 + 4 pre-existing failures)
  • No conflict markers

🤖 Generated with Claude Code

ThairaHub and others added 6 commits June 11, 2026 13:31
…tive zoom

Union resolution keeping fork features (segmented webcam, focus regions,
subtitles, corner/stack presets) plus upstream's auto-caption pipeline,
custom cursor themes, webcam mirror toggle, reactive PiP zoom, and the
cursor smoothing rewrite. Cursor-in-export plumbing restored via
upstream's exporter config fields. Reactive webcam shrink is gated off
while a focus region animates so it doesn't fight the focus-zoom rect.
Locale gaps (upstream en-only keys) filled with English fallback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Port isSourceCopyFastPathEligible/getSourceCopyFastPathBlockers and the
copy-only export path dropped when the segmented exporter replaced
upstream's. Unedited MP4 exports at source resolution now return the
source bytes directly instead of re-encoding. Fork-specific blockers
added for webcam segments and active subtitles. Fixes the 4 failing
videoExporter tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rash on stop

Ported from archived upstream PR siddharthvaddem#687.
Native macOS/Windows capture buffered the whole webcam sidecar in
renderer memory and assembled it on stop; long takes OOM-crashed the
renderer and lost the recording. Webcam chunks now stream to disk like
the screen track (siddharthvaddem#616), with partial-file cleanup on cancel/failure.

Co-authored-by: Yago <yago@local>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ed-region decode

Ported from archived upstream PR siddharthvaddem#682.
The stall check compared against the last encoder output time, so long
decode-and-discard stretches over trim regions tripped the 15s timeout
and aborted the export. The timer now measures only time actually spent
waiting on a full encode queue.

Co-authored-by: もりこ <moriko19971224@gmail.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ported from archived upstream PR siddharthvaddem#678.
Design doc for an openscreen-export-helper child process (decode ->
GPU composite -> HW encode -> mux) with per-platform encoder priority
and a phased delivery roadmap. Kept as the export-performance roadmap
now that upstream is archived.

Co-authored-by: Kelly Yang <124ykl@gmail.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…fork files

Browser tests expect export() to reject with BackgroundLoadError when
the wallpaper fails to load; the fork's exporters (taken wholesale in
merge #1) swallowed it into { success: false }. Restore upstream's
rethrow in both VideoExporter's encoder-retry loop and GifExporter.

Also repo-wide biome format pass: CI lints all files, while lint-staged
only ever formatted staged ones, leaving 5 errors in fork-only files.

The failing 'notify' check (upstream's PR-to-Discord sync) needs Discord
secrets the fork doesn't have; workflow disabled via API
(disabled_manually), file kept for a future fork Discord.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ThairaHub ThairaHub merged commit fd8dd1b into main Jun 11, 2026
4 checks passed
@joaothaira joaothaira deleted the merge/upstream-2026-06-11 branch June 11, 2026 17:34
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.

1 participant