{
    "version": "https://jsonfeed.org/version/1",
    "title": "OpenScreen development journal",
    "home_page_url": "https://getopenscreen.com/blog/",
    "description": "What I have shipped since picking OpenScreen up in June 2026, and what broke along the way.",
    "items": [
        {
            "id": "https://getopenscreen.com/blog/2026/08/24/store-and-crash-safe-recordings/",
            "content_html": "<p>Two things in this stretch matter more than the version numbers. Capture now writes fragmented MP4, so a recorder that dies halfway through leaves you a playable file instead of a corrupt one. And the app finally installs the way people on each platform expect it to.</p>\n<p>That is <a href=\"https://github.com/getopenscreen/openscreen/releases/tag/v1.10.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">v1.10.0</a>, August 24. Before it, v1.9.0 through v1.9.6 in under two weeks.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"losing-a-recording-used-to-be-possible\">Losing a recording used to be possible<a href=\"https://getopenscreen.com/blog/2026/08/24/store-and-crash-safe-recordings/#losing-a-recording-used-to-be-possible\" class=\"hash-link\" aria-label=\"Direct link to Losing a recording used to be possible\" title=\"Direct link to Losing a recording used to be possible\" translate=\"no\">​</a></h2>\n<p>A screen recorder that can lose the take is not a screen recorder. The old capture path wrote a single MP4 whose index is finalised at the end, so a helper crash, a forced quit or a dead battery left a file no player could open. The recording had happened. It was just unreadable.</p>\n<p>Capture writes fragmented MP4 now. The file is valid at every fragment boundary, so whatever was captured before the process died is still there and still plays.</p>\n<p>The same release stopped two other ways to lose work. The native webcam stream writes to disk while it records, so killing a recording can't take the camera track with it, and the Windows capture helper stopped hanging on stop, which used to require killing the process and losing the file.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"where-you-can-install-it-now\">Where you can install it now<a href=\"https://getopenscreen.com/blog/2026/08/24/store-and-crash-safe-recordings/#where-you-can-install-it-now\" class=\"hash-link\" aria-label=\"Direct link to Where you can install it now\" title=\"Direct link to Where you can install it now\" translate=\"no\">​</a></h2>\n<p>Most of v1.10.0 was packaging. Distribution is where free desktop software quietly fails: the build works, and nobody can get it.</p>\n<p><strong>Windows.</strong> The appx goes to the Microsoft Store from the release build, with branded tiles. That is the route I'd recommend on Windows now. winget stopped skipping silently. There is no Visual C++ Redistributable dependency any more, and the OpenMP runtime the transcription backends actually import is bundled, so transcription works on a clean machine.</p>\n<p><strong>Linux.</strong> Fedora RPM (<a href=\"https://github.com/getopenscreen/openscreen/pull/101\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Mundo-Dev0ps</a>), ARM64 builds (<a href=\"https://github.com/getopenscreen/openscreen/pull/293\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@zebster-cmd</a>), and DMA-BUF negotiation so capture works on niri and other wlroots compositors, which had no working screen recorder from this project at all. Packages now respect the glibc floor of the distros they claim to target, declared and proven on a clean machine, and AppStream metadata is in place for Flathub.</p>\n<p><strong>macOS.</strong> The Homebrew cask job runs again instead of sitting dormant.</p>\n<p>Capture is also DPI-aware and stops guessing which monitor you meant, and there is a GPU DXGI encode path behind a flag, opt-in until it earns the default.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"v190-three-weeks-earlier\">v1.9.0, three weeks earlier<a href=\"https://getopenscreen.com/blog/2026/08/24/store-and-crash-safe-recordings/#v190-three-weeks-earlier\" class=\"hash-link\" aria-label=\"Direct link to v1.9.0, three weeks earlier\" title=\"Direct link to v1.9.0, three weeks earlier\" translate=\"no\">​</a></h2>\n<p>v1.9.0 shipped August 5, the day after v1.8.0 was promoted. That is a backed-up queue rather than speed: the 1.8.0 RC window ran through nine candidates while <code>main</code> kept moving. The frozen release branch is the only reason the two didn't tangle.</p>\n<p>Two features in it:</p>\n<ul>\n<li class=\"\">Teleprompter mode in the notes window. Your script scrolls next to the capture, mirrored so it reads right in a webcam (<a href=\"https://github.com/getopenscreen/openscreen/pull/152\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@My-Denia</a>).</li>\n<li class=\"\">A headless CLI with <code>record</code>, <code>export</code> and <code>info</code>, driving the same engine the app does, which makes OpenScreen usable from a script or on a server (<a href=\"https://github.com/getopenscreen/openscreen/pull/176\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@PeterTakahashi</a>).</li>\n</ul>\n<p>It also removed a PID-file instance lock that could permanently brick startup, notarized macOS RCs like stable builds, and made the AppX package declare all 13 locales instead of one.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"what-changed-in-the-patch-releases\">What changed in the patch releases<a href=\"https://getopenscreen.com/blog/2026/08/24/store-and-crash-safe-recordings/#what-changed-in-the-patch-releases\" class=\"hash-link\" aria-label=\"Direct link to What changed in the patch releases\" title=\"Direct link to What changed in the patch releases\" translate=\"no\">​</a></h2>\n<p>v1.9.1, v1.9.2, v1.9.5 and v1.9.6 went out over ten days. 1.9.3 and 1.9.4 never left RC and their fixes rolled forward.</p>\n<p>Roundness, shadow and motion blur are on by default now, which is the look most people were assembling by hand on every project. The Windows cursor sampler became DPI-aware. The chat agent learned <code>addTrims</code> and <code>addZooms</code>, so asking it for a cut stopped costing a round trip through a slower path.</p>\n<p>Every release's regression pass is written up in the repo's testing docs, including the ones that caught a candidate breaking something. This site was rebuilt in the same window, and gained its light theme.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"on-main-right-now\">On <code>main</code> right now<a href=\"https://getopenscreen.com/blog/2026/08/24/store-and-crash-safe-recordings/#on-main-right-now\" class=\"hash-link\" aria-label=\"Direct link to on-main-right-now\" title=\"Direct link to on-main-right-now\" translate=\"no\">​</a></h2>\n<p>Webcam background effects have landed on all three compositor backends. Blur or replace what is behind you, including an AI cutout that doesn't need a green screen. The transcription helper reports its real timing and which compute backend it used, so \"how long will this take\" has an answer instead of a progress bar with no scale.</p>\n<p>Still open: hardware encode on Linux, and measurements on discrete GPUs and QSV. It is still pre-1.x, so rough edges are expected and bug reports are welcome.</p>\n<p>Three months, ten releases. <a href=\"https://getopenscreen.com/discord\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Discord</a> is open if you want to argue with any of it.</p>",
            "url": "https://getopenscreen.com/blog/2026/08/24/store-and-crash-safe-recordings/",
            "title": "Recordings that survive a crash, and an app you can actually install",
            "summary": "v1.10.0 put OpenScreen in the Microsoft Store, on Fedora and on ARM64, and made capture write fragmented MP4 so a helper that dies mid-recording leaves a playable file.",
            "date_modified": "2026-08-24T00:00:00.000Z",
            "author": {
                "name": "Etienne Lescot",
                "url": "https://github.com/EtienneLescot"
            },
            "tags": [
                "release",
                "distribution"
            ]
        },
        {
            "id": "https://getopenscreen.com/blog/2026/08/04/local-whisper-and-a-rust-compositor/",
            "content_html": "<p>Exporting a 1080p60 project with full effects used to run at about 8 fps. The same project now exports at about 126 fps on the same laptop. The bottleneck was never the encoder, which is the part of this worth writing down.</p>\n<p><a href=\"https://github.com/getopenscreen/openscreen/releases/tag/v1.8.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">v1.8.0</a> shipped that on August 4, alongside an optional AI editing layer that transcribes and edits entirely on your own machine.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"the-ai-layer\">The AI layer<a href=\"https://getopenscreen.com/blog/2026/08/04/local-whisper-and-a-rust-compositor/#the-ai-layer\" class=\"hash-link\" aria-label=\"Direct link to The AI layer\" title=\"Direct link to The AI layer\" translate=\"no\">​</a></h2>\n<p>It is off by default. If you never turn it on, nothing downloads, no model is contacted, and you have exactly the 1.7.0 feature set. That was in the roadmap from week one and I don't intend to change it.</p>\n<p>Turn it on and you get four things.</p>\n<p><strong>Transcription on your machine.</strong> Whisper via whisper.cpp, with Metal on Apple Silicon, Vulkan on Windows and Linux, CPU everywhere else. DTW word timestamps. Nothing is uploaded and it works offline.</p>\n<p><strong>Editing through the transcript.</strong> Select words, delete them, the span is cut from playback and export. Word boundaries get re-anchored against the audio so the cut lands where the word actually starts.</p>\n<p><strong>Captions derived from the transcript</strong>, instead of generated once and then maintained by hand. Restyle or regroup them with no regeneration step. Translation into 15 languages if you want it.</p>\n<p><strong>Editing by chat.</strong> Describe an edit in plain language and an agent applies real timeline operations: cuts, zooms, speed ramps, annotations, camera framing. <code>Ctrl/Cmd + Z</code> undoes an agent edit the same way it undoes yours, with per-message rewind.</p>\n<p>The chat uses your own LLM key. Anthropic, OpenAI, Google, Mistral, OpenRouter, MiniMax, or anything OpenAI-compatible. Keys go in your OS credential store and requests go from your machine straight to the provider. There is no OpenScreen server in the middle, because there is no OpenScreen server.</p>\n<p>1.8.0 also <em>removed</em> the ChatGPT and GitHub Copilot sign-in options the pre-fork codebase had. Using someone's existing subscription there meant shipping GitHub's and OpenAI's own client IDs against endpoints they reserve for their own clients, from inside a signed installer. I didn't want to be in that position. If those vendors open a sanctioned surface, the integrations come back.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"the-compositor\">The compositor<a href=\"https://getopenscreen.com/blog/2026/08/04/local-whisper-and-a-rust-compositor/#the-compositor\" class=\"hash-link\" aria-label=\"Direct link to The compositor\" title=\"Direct link to The compositor\" translate=\"no\">​</a></h2>\n<p>Export at 1080p60 with full effects ran at roughly 8 fps. The same project now runs at roughly 126 fps on the same laptop, an AMD Ryzen 5 7520U with its passive integrated Radeon. That machine is deliberately weak. Your number will be different. The order of magnitude is the point.</p>\n<p>It is one GPU-resident chain with no CPU readback between stages:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#F8F8F2;--prism-background-color:#282A36\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"color:#F8F8F2;background-color:#282A36\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#F8F8F2\"><span class=\"token plain\">demux -&gt; hardware decode -&gt; GPU composite -&gt; RGB to NV12 -&gt; hardware encode -&gt; MP4 mux</span><br></div></code></pre></div></div>\n<p>I didn't set out to rewrite it. I first rebuilt the Canvas2D compositor to cache by what invalidates a cache instead of by layer. That was worth about 2x, and I verified it byte-identical (SSIM 1.000000 across all 1418 frames of the reference export). What it really did was make the profile readable: compositing was 79% of the time, encoding was 4.5%. The bottleneck was the compositor, running on the CPU inside a browser.</p>\n<p>Preview and export now both consume the same <code>SceneDescription</code> the app builds, so there is no second renderer to drift. The frame in the editor is the frame that gets written.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"three-backends\">Three backends<a href=\"https://getopenscreen.com/blog/2026/08/04/local-whisper-and-a-rust-compositor/#three-backends\" class=\"hash-link\" aria-label=\"Direct link to Three backends\" title=\"Direct link to Three backends\" translate=\"no\">​</a></h2>\n<table><thead><tr><th>Backend</th><th>Stack</th></tr></thead><tbody><tr><td>Windows</td><td>Direct3D 11, HLSL, D3D11VA decode, hardware encode</td></tr><tr><td>macOS</td><td>Metal (all nine shader entry points ported to MSL), VideoToolbox decode/encode, CoreText text rasterizer</td></tr><tr><td>Linux</td><td>wgpu/WGSL, software H.264 encode, MP4 mux with AAC audio</td></tr></tbody></table>\n<p>There is a CPU backend too, software render and decode, picked automatically when there is no usable GPU. The UI tells you when you are on it, so a slow export has a visible reason.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"the-macos-decode-detour\">The macOS decode detour<a href=\"https://getopenscreen.com/blog/2026/08/04/local-whisper-and-a-rust-compositor/#the-macos-decode-detour\" class=\"hash-link\" aria-label=\"Direct link to The macOS decode detour\" title=\"Direct link to The macOS decode detour\" translate=\"no\">​</a></h3>\n<p>Profiling the first working Metal export showed 74% of wall time in decode. The compositor was at 0.2 ms/frame. The hardware decoder pays a fixed per-frame latency, and OpenScreen's own capture writes Constrained Baseline H.264, which software decodes in a few hundred microseconds.</p>\n<p>So the decoder is picked by profile now. Baseline goes to software, which came out 2.4x faster end-to-end on the test export (182 fps against 76). High, HEVC and 4K go to VideoToolbox, where the arbitration flips the other way.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"still-open\">Still open<a href=\"https://getopenscreen.com/blog/2026/08/04/local-whisper-and-a-rust-compositor/#still-open\" class=\"hash-link\" aria-label=\"Direct link to Still open\" title=\"Direct link to Still open\" translate=\"no\">​</a></h2>\n<p>Hardware encode on Linux. It is correct today and slower for being software. And every number above comes from one weak laptop, so discrete GPUs and Intel QSV still need real measurements.</p>\n<p>Next: v1.9.0 through v1.9.6 in twelve days, and v1.10.0.</p>",
            "url": "https://getopenscreen.com/blog/2026/08/04/local-whisper-and-a-rust-compositor/",
            "title": "v1.8.0, local whisper and a Rust compositor",
            "summary": "Export went from about 8 fps to about 126 fps, and the profile that explains why says the encoder was never the bottleneck. Plus an AI editing layer that runs on your own machine and stays off unless you turn it on.",
            "date_modified": "2026-08-04T00:00:00.000Z",
            "author": {
                "name": "Etienne Lescot",
                "url": "https://github.com/EtienneLescot"
            },
            "tags": [
                "release",
                "ai",
                "rendering"
            ]
        },
        {
            "id": "https://getopenscreen.com/blog/2026/07/19/eight-first-time-contributors/",
            "content_html": "<p>Two releases in the first month, <a href=\"https://github.com/getopenscreen/openscreen/releases/tag/v1.6.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">v1.6.0</a> on July 4 and <a href=\"https://github.com/getopenscreen/openscreen/releases/tag/v1.7.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">v1.7.0</a> on July 19. The second one is the one worth writing about. Eight people who had never touched the project shipped most of it, and several of those changes fix things that had been broken since before the archive.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"v160-so-that-merging-is-safe\">v1.6.0, so that merging is safe<a href=\"https://getopenscreen.com/blog/2026/07/19/eight-first-time-contributors/#v160-so-that-merging-is-safe\" class=\"hash-link\" aria-label=\"Direct link to v1.6.0, so that merging is safe\" title=\"Direct link to v1.6.0, so that merging is safe\" translate=\"no\">​</a></h2>\n<p>The fork inherited a codebase with no release candidate process. Merging a stranger's PR into a project with no RC step means the first person to find the regression is a user, so this came first: RC tags, a promote workflow, release notes generated from the PR history.</p>\n<p>The Windows Graphics Capture helper, the native code that does the actual recording on Windows, got per-step stop timing and a diagnostic tool. \"Recording fails on stop\" is not a fixable bug report when all you know is that it failed, and it was the most common one.</p>\n<p>The Linux HUD got its drag handle back. The overlay's pointer-events handling made the bar unmovable there, which nobody had noticed because nobody on the original team ran Linux.</p>\n<p>Three PRs from outside landed in this one: the macOS cursor offset in single-window capture (<a href=\"https://github.com/getopenscreen/openscreen/pull/22\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@giulio333</a>), copy/paste for timeline region attributes (<a href=\"https://github.com/getopenscreen/openscreen/pull/33\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@446f6e6e79</a>), and a CI refactor (<a href=\"https://github.com/getopenscreen/openscreen/pull/40\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@psychosomat</a>).</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"the-release-branch-rule\">The release branch rule<a href=\"https://getopenscreen.com/blog/2026/07/19/eight-first-time-contributors/#the-release-branch-rule\" class=\"hash-link\" aria-label=\"Direct link to The release branch rule\" title=\"Direct link to The release branch rule\" translate=\"no\">​</a></h3>\n<p>If you maintain something with a promote step, this is the part to steal. One release branch per stable version, cut at the RC, frozen until promote. Only cherry-picked bugfixes land on it, and anything merged to <code>main</code> after the cut ships in the next cycle.</p>\n<p>I wrote that rule after the promote workflow tagged the tip of <code>main</code> instead of the RC snapshot people had tested. The release went out containing commits nobody had signed off on, and I replayed it. The rule is in the repo docs now and every release since has followed it.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"v170\">v1.7.0<a href=\"https://getopenscreen.com/blog/2026/07/19/eight-first-time-contributors/#v170\" class=\"hash-link\" aria-label=\"Direct link to v1.7.0\" title=\"Direct link to v1.7.0\" translate=\"no\">​</a></h2>\n<p>Eight first-time contributors:</p>\n<ul>\n<li class=\"\">Large recordings stream instead of loading into memory. The editor and exporter used to run out of RAM on long captures, which made the app unusable for exactly the recordings people care most about (<a href=\"https://github.com/getopenscreen/openscreen/pull/74\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@rainyflash</a>).</li>\n<li class=\"\">A software H.264 fallback for Windows machines whose hardware encoder is missing or locked, which is a large share of corporate laptops (<a href=\"https://github.com/getopenscreen/openscreen/pull/73\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@My-Denia</a>).</li>\n<li class=\"\">The webcam recorder now starts after native macOS capture does, so the first seconds of camera footage stop vanishing (<a href=\"https://github.com/getopenscreen/openscreen/pull/85\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@josiahcoad</a>).</li>\n<li class=\"\">A fix for the cursor drifting out of place after a crop (<a href=\"https://github.com/getopenscreen/openscreen/pull/65\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@SakuraiSatoru</a>).</li>\n<li class=\"\">A notes window that capture ignores, so you can keep your script beside the recording without it showing up in the video (<a href=\"https://github.com/getopenscreen/openscreen/pull/43\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Itzadetunji</a>).</li>\n<li class=\"\">Playback speed up to 100x, for finding the one moment you want in an hour of footage (<a href=\"https://github.com/getopenscreen/openscreen/pull/80\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@rainyflash</a>).</li>\n<li class=\"\">The Full Camera timeline effect. Press a key and the webcam PiP grows to fullscreen for a stretch, then eases back (<a href=\"https://github.com/getopenscreen/openscreen/pull/66\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@rodrvc</a>).</li>\n<li class=\"\">A custom gradient editor for backgrounds (<a href=\"https://github.com/getopenscreen/openscreen/pull/81\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@psychosomat</a>).</li>\n</ul>\n<p>The platform work in that release was mine. Preview recovery from WebGL context loss on Linux and Wayland. Vulkan off on Wayland so PipeWire capture can import DMA-BUF frames. webm duration patching rewritten so hour-long recordings stop killing the editor on load.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"why-this-matters-more-than-the-feature-list\">Why this matters more than the feature list<a href=\"https://getopenscreen.com/blog/2026/07/19/eight-first-time-contributors/#why-this-matters-more-than-the-feature-list\" class=\"hash-link\" aria-label=\"Direct link to Why this matters more than the feature list\" title=\"Direct link to Why this matters more than the feature list\" translate=\"no\">​</a></h2>\n<p>An archived repo with 39k stars has a lot of people sitting on fixes they wrote for themselves and never upstreamed, because there was nobody to merge them. Reopening the repo released about a month of accumulated work in two weeks, from people who had already done it.</p>\n<p>That is the argument for continuing an archived project rather than starting a new one. The users are already there and some of them are already contributors.</p>\n<p>Next: v1.8.0, where an AI layer and a whole new rendering engine shipped under one version number.</p>",
            "url": "https://getopenscreen.com/blog/2026/07/19/eight-first-time-contributors/",
            "title": "v1.7.0 was mostly written by people I'd never met",
            "summary": "Eight first-time contributors shipped most of v1.7.0, including memory-safe handling of long recordings and a software H.264 fallback. Before it, v1.6.0 built the release process that made merging their work safe.",
            "date_modified": "2026-07-19T00:00:00.000Z",
            "author": {
                "name": "Etienne Lescot",
                "url": "https://github.com/EtienneLescot"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://getopenscreen.com/blog/2026/06/15/picking-up-openscreen/",
            "content_html": "<p>The last commit on <a href=\"https://github.com/siddharthvaddem/openscreen\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">siddharthvaddem/openscreen</a> landed on June 6, 2026. It bumped the Nix package to v1.5.0. Then the repo went read-only, like the README had been warning it would for a while. 39k stars, and v1.5.0 as the final release.</p>\n<p>I picked it up on June 15, with the original author's approval. Same name, same MIT license, new URL. This post starts a journal of what happens next.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"where-it-lives-now\">Where it lives now<a href=\"https://getopenscreen.com/blog/2026/06/15/picking-up-openscreen/#where-it-lives-now\" class=\"hash-link\" aria-label=\"Direct link to Where it lives now\" title=\"Direct link to Where it lives now\" translate=\"no\">​</a></h2>\n<p><a href=\"https://github.com/getopenscreen/openscreen\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">github.com/getopenscreen/openscreen</a>. It started as a personal fork and moved under the <code>getopenscreen</code> org in the first week. It stays there.</p>\n<p>The archived original is still online and still read-only. Every commit of it is in this repo's history.</p>\n<p>I tagged v1.5.0 on day one with no code changes at all. Same code, same installer, same version number. It only exists to prove the release pipeline works on my infrastructure before anything real ships through it. v1.6.0 is the first release with new work in it.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"what-im-committing-to\">What I'm committing to<a href=\"https://getopenscreen.com/blog/2026/06/15/picking-up-openscreen/#what-im-committing-to\" class=\"hash-link\" aria-label=\"Direct link to What I'm committing to\" title=\"Direct link to What I'm committing to\" translate=\"no\">​</a></h2>\n<p>Forking a popular archived project is a good way to quietly turn it into something else. So, written down where you can hold me to it:</p>\n<ul>\n<li class=\"\">Free forever, MIT. No paid tier, no premium features, no usage caps. Nothing is gated on who you are.</li>\n<li class=\"\">Stability before features. The recorder has to work on macOS, Windows and Linux. Bugs from real users go first.</li>\n<li class=\"\">It's not production-grade, and I'll keep saying so. Expect rough edges and breaking changes, including to the project format.</li>\n</ul>\n<p>The <a href=\"https://github.com/getopenscreen/openscreen/blob/main/ROADMAP.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">roadmap</a> is public: record, edit, export, plus an optional AI editing layer that's off by default and never required. There's a <a href=\"https://getopenscreen.com/discord\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Discord</a> with a roadmap channel if you want to argue about any of it.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"it-already-had-contributors\">It already had contributors<a href=\"https://getopenscreen.com/blog/2026/06/15/picking-up-openscreen/#it-already-had-contributors\" class=\"hash-link\" aria-label=\"Direct link to It already had contributors\" title=\"Direct link to It already had contributors\" translate=\"no\">​</a></h2>\n<p>Four days in, before I'd shipped anything, someone I'd never met opened <a href=\"https://github.com/getopenscreen/openscreen/pull/4\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">a fix for exports stalling</a> when trim regions leave long decoder gaps. Real bug, correct diagnosis, regression test included.</p>\n<p>That's roughly what the job turned out to be. Very little of it is features. Mostly it's release candidates that mean something, CI that fails loudly, and diagnostics for the parts that break on other people's machines. Native capture on Windows and macOS is as finicky as its reputation.</p>\n<p>I'll write up what ships and what breaks here. Next: v1.6.0 and v1.7.0.</p>",
            "url": "https://getopenscreen.com/blog/2026/06/15/picking-up-openscreen/",
            "title": "Picking up OpenScreen",
            "summary": "The original repo was archived after v1.5.0. I forked it, kept the name and the MIT license, and moved it to a new home.",
            "date_modified": "2026-06-15T00:00:00.000Z",
            "author": {
                "name": "Etienne Lescot",
                "url": "https://github.com/EtienneLescot"
            },
            "tags": [
                "announcement"
            ]
        }
    ]
}