FFmpeg on Windows logs addresses without 0x ([Parsed_silencedetect_0 @ 00000244af592040]), so since the ffmpeg 8.1 fix no line matched and detection found nothing. The regex before that only matched Windows by accident (an unescaped [ made it a character class).
Also drop the pre-8.1 log format, since only the bundled ffmpeg is supported.
Fixes#3174
Changelog: Fix detecting silent and black scenes on Windows, which found nothing since 3.70.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QJfcnstoUXVtcR4FuTuTs
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
Electron now derives a window's Wayland app ID and X11 WM_CLASS from
the product name, lowercased: "losslesscut" (electron/electron#49988,
electron/electron#51424). Without desktopName, electron-builder still
writes StartupWMClass=LosslessCut into the AppImage's desktop entry,
and warns about it in every Linux build. When the launcher is
installed under another file name, as AppImageLauncher does, GNOME
then can't link the running window to it, and the dock shows a
generic icon.
Setting desktopName to the name Electron already defaults to makes
electron-builder write StartupWMClass=losslesscut, the value the
Flathub desktop file already uses. The app's own app ID and WM_CLASS
don't change.
Changelog: Linux: docks show LosslessCut's own icon for the AppImage when its launcher is installed under another name (e.g. by AppImageLauncher)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fill in frames x11grab dropped before the zoom, which otherwise shortened the social versions (no outro, captions out of sync)
- Don't skip the cleanup when an action that's awaited later fails
- Fail early if the API port is in use, or on an unknown --music or a bad --scale
- Allow 60 s for an action, e.g. a scene detection
- Close the app before encoding, and drop empty captions
- Constant frame rate master, and fonts-inter in AGENTS.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QJfcnstoUXVtcR4FuTuTs
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
- Hide the docs header's Download button at 800–896px, where it pushed the theme picker off the screen
- FAQ: only the Windows store version avoids signing warnings (the macOS GitHub builds are signed too), keep the author's
public beta wording and the warning about bugs, drop the app store review claim, and LosslessCut is built around cutting
without re-encoding (smart cut does re-encode a little)
- The current OS requirements are now in docs/requirements.md, which the other pages link to; the homepage has them once
- Keep the old #usage-typical-workflow anchor in docs/index.md
- Meta descriptions for the docs index and the FAQ, a shorter homepage title, readable links in the homepage FAQ
- GITHUB_TOKEN is also used for the latest version
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AntZvg7M7on4kAETvpYqzp
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
- docs/faq.md: the FAQ and commonly requested features from docs/index.md, grouped, with each question as a heading (so it can
be linked, and is in the page's table of contents), plus: is it safe, which operating systems, how to update, and how it
compares to other video editors
- docs/getting-started.md: download and install, then the typical workflow from docs/index.md
- The app's /go/faq and /go/usage links, the issue templates and the README point to the new pages
- Homepage: the latest version and its date (fetched at build time, not linked), the system requirements and "Is it safe?"
below the store badges, two more FAQ answers, the version in the structured data, and "Download" in the title
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AntZvg7M7on4kAETvpYqzp
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
- The hero's frame is now a <FramedVideo> component. Videos other than the hero only load and play while they're on screen,
and stay paused if the user paused them
- Tears of Steel is CC BY, so the demo credits it below
- Privacy policy: the homepage no longer embeds YouTube
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AntZvg7M7on4kAETvpYqzp
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
Each demo now also makes <scenario>-landscape.mp4 (16:10) and <scenario>-vertical.mp4 (9:16, for Reels, TikTok and Shorts): captions and zooms set by the scenario, an intro and outro card, and optional music (--music). The plain master stays as it was, for the website.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QJfcnstoUXVtcR4FuTuTs
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
- With reduced motion, no source matches, so the video isn't downloaded
- Browsers that ignore the sources' media get the large video instead of the small one on desktop
- No pause button for a video that can't play
- Remove the unused .hero-media > img rule, and mention the pause button script in Home.tsx
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AntZvg7M7on4kAETvpYqzp
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
The hero video's URLs are in website/src/images.ts, with master's other images: a smaller one for phones, and its first frame as
the poster. The pause button starts in the right state if the browser doesn't autoplay the video.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AntZvg7M7on4kAETvpYqzp
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
1x/2x srcset from dist/, like the screenshots. Re-encoding the clean image
isn't visible (SSIMULACRA2 86 against the original) and saves about 50 KB
on 1x screens.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The screenshots, homepage backgrounds, generation-loss comparison images and
the og:image now live on static.mifi.no (Cloudflare R2), with their originals
in src/ and resized versions in dist/, instead of in this repo.
- README and the Flathub appdata use the full-size main screenshot
- The homepage gets 1x/2x srcset for the screenshots, and uses the
originals for the generation-loss comparison (re-encoding would add
artifacts to it)
- og:image and the structured data point to the same 1200x630 image as
before
- The URLs are in website/src/images.ts
Removes the unused tracks_screenshot.jpg.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hero is a short silent loop of the core idea: mark and label three parts and merge them into one file in a moment. Scenarios can start the video after opening the file. Encode at CRF 18, since web versions are now made from these elsewhere.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QJfcnstoUXVtcR4FuTuTs
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
- Fix type errors, and kill the recorder if the scenario fails
- Resolve an absolute --clips dir correctly
- Log the renderer's console, since failed actions still return 200
- Actually record at 30 fps (-framerate was after -i)
- Fail clearly if the recording fails or the app exits at startup
- Allow multiple instances, so a running LosslessCut doesn't take over
- Download clips via a temp file
- Drop the redundant addSegment and quit steps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QJfcnstoUXVtcR4FuTuTs
Co-authored-by: Mikael Finstad <finstaden@gmail.com>