4093 Commits
Author SHA1 Message Date
Mikael Finstad 9537c1cf29 Merge pull request #3177 from mifi/static-originals-private
website: originals on static.mifi.no are private now
2026-10-23 20:37:53 +08:00
Mikael FinstadandClaude Opus 5.5 261023dc3b website: originals on static.mifi.no are private now
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:08:54 +08:00
Mikael Finstad e8b68b850b Merge pull request #3176 from mifi/claude/fix-windows-detect
Fix silent and black scene detection on Windows
2026-10-23 18:10:13 +08:00
ClaudeandMikael Finstad 8770c6c012 Also accept uppercase hex in ffmpeg log addresses
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>
2026-10-23 10:06:37 +00:00
ClaudeandMikael Finstad 6c16760bee Fix silent and black scene detection on Windows
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>
2026-10-23 09:54:30 +00:00
Mikael Finstad 374eecf9a9 Merge pull request #3172 from nkboedecker/set-linux-desktop-name
Set desktopName so Linux launchers match the app's window
2026-10-23 17:44:52 +08:00
Mikael Finstad 740ac9fec4 Merge pull request #3175 from mifi/claude/website-official-title
Website: "Official Download" in the homepage title, and a clearer description
2026-10-23 17:38:15 +08:00
ClaudeandMikael Finstad 14199728f4 Website: "Official Download" in the homepage title, and a clearer description
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>
2026-10-23 09:37:01 +00:00
Natalie BoedeckerandClaude Opus 5.5 38a700d4b9 Set desktopName so Linux launchers match the app's window
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>
2026-10-22 14:53:24 -04:00
Mikael Finstad 8ae38b7e47 Merge pull request #3168 from mifi/claude/losslesscut-ranking-issue-km32mk
Website: homepage content in `main`, footer in `footer` elements
2026-10-22 15:57:07 +08:00
ClaudeandMikael Finstad 27ec6baf50 Website: the homepage content in <main> and the footer in <footer>, for screen readers and accessibility checkers
The layout is unchanged.

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>
2026-10-22 07:33:54 +00:00
Mikael Finstad be46b73a61 Merge pull request #3163 from mifi/claude/losslesscut-ranking-issue-km32mk
Website redesign: hero video, feature cards, FAQ and Getting started pages
2026-10-22 15:21:55 +08:00
Claude c3f4c50233 Merge remote-tracking branch 'origin/master' into claude/losslesscut-ranking-issue-km32mk
Co-authored-by: Mikael Finstad <finstaden@gmail.com>

# Conflicts:
#	AGENTS.md
2026-10-22 07:17:45 +00:00
ClaudeandMikael Finstad e2a4912189 Rebuild the website when a release is published, so the homepage shows the new 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>
2026-10-22 07:15:13 +00:00
Mikael Finstad 9686637e65 Merge pull request #3164 from mifi/claude/feature-media
Add feature media recorder (demo videos, social media versions, screenshots)
2026-10-22 15:14:13 +08:00
ClaudeandMikael Finstad 495a4db2a5 Feature media: fixes from review
- 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>
2026-10-22 07:10:36 +00:00
ClaudeandMikael Finstad 7e89958201 Docs and website: review fixes for the FAQ, Getting started and homepage changes
- 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>
2026-10-22 07:05:14 +00:00
ClaudeandMikael Finstad fb2ea6a863 Website: replace the old tracks screenshot with a video of the Tracks panel
The video switches off tracks one by one, in a crop of the Tracks panel (<FramedVideo> without the title bar, with the pause
button in the bottom right corner), and credits Tears of Steel below it.

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>
2026-10-22 07:02:08 +00:00
ClaudeandMikael Finstad 34708c6552 Feature media: hero without the export warning, scene caption after detection
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>
2026-10-22 07:01:44 +00:00
ClaudeandMikael Finstad b48fa797ff Docs: a FAQ page and a Getting started page, a Download button in the docs header, and the latest version on the homepage
- 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>
2026-10-22 06:54:43 +00:00
ClaudeandMikael Finstad 7213045811 Feature media: music in the social media versions
Tracks by Kevin MacLeod (incompetech.com, CC BY 4.0), downloaded when first used: Werq by default, or pick one with --music (or an audio file, or none). The script prints the credit posts need.

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>
2026-10-22 06:34:49 +00:00
ClaudeandMikael Finstad fbfb0fcadf Website: show the scene change detection demo video, and fix a lint error
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>
2026-10-22 06:29:17 +00:00
ClaudeandMikael Finstad 5861e6794f Website: replace the YouTube embed with a scene change detection demo video (once it's uploaded), in the hero's window frame
- 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>
2026-10-22 06:25:45 +00:00
ClaudeandMikael Finstad 44587cdc2a Feature media: --scale 2 for HiDPI recordings, cropped screenshots
The tracks demo also saves a screenshot of only the tracks panel, e.g. 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>
2026-10-22 06:20:23 +00:00
ClaudeandMikael Finstad 84c72c7d7b Feature media: social media versions with captions, zooms, intro and outro
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>
2026-10-22 06:15:22 +00:00
ClaudeandMikael Finstad d3cd02d8fe Website: hero video review fixes
- 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>
2026-10-22 06:13:21 +00:00
Claude 85a5b420db Merge remote-tracking branch 'origin/master' into claude/losslesscut-ranking-issue-km32mk
Co-authored-by: Mikael Finstad <finstaden@gmail.com>
2026-10-22 06:08:14 +00:00
Mikael Finstad 37a153cc77 Merge pull request #3159 from mifi/dependabot/npm_and_yarn/vite-7.3.7
Bump vite from 7.3.5 to 7.3.7
2026-10-22 13:55:50 +08:00
ClaudeandMikael Finstad 10941f9c0b Merge master, and use the hero video on static.mifi.no
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>
2026-10-22 05:54:44 +00:00
Mikael Finstad 7b2ef27b43 Merge pull request #3167 from mifi/claude/images-on-static-mifi-no
Move README and website images to static.mifi.no
2026-10-22 13:39:59 +08:00
Mikael FinstadandClaude Opus 5.5 2610222760 Use resized versions for the generation-loss comparison too
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>
2026-10-22 13:12:49 +08:00
Mikael FinstadandClaude Opus 5.5 261022a1c6 Move README and website images to static.mifi.no
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>
2026-10-22 13:04:11 +08:00
ClaudeandMikael Finstad 8f34dae403 Website: show the hero video (src/assets/home/hero.mp4) in a window frame, with a pause button, and only its poster with reduced motion
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>
2026-10-22 04:31:55 +00:00
ClaudeandMikael Finstad 8d1958a180 Feature media: hero plays the beach clip and marks parts as it plays
From a critic review: the footage now moves, no label dialogs covering the frame, and it ends on the timeline with the parts instead of the success dialog, so the loop seam is smaller.

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>
2026-10-22 04:24:22 +00:00
ClaudeandMikael Finstad 647deb558a Feature media: dark menu bar, hero with brighter clips
Record with the dark GTK theme so the menu bar matches the app, and try the hero with the lighthouse (hero) and the beach (hero-beach) clips.

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>
2026-10-22 04:22:19 +00:00
ClaudeandMikael Finstad 6d4b995829 Feature media: hero demo for the homepage, higher quality masters
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>
2026-10-22 04:13:22 +00:00
ClaudeandMikael Finstad bbc6b58c88 Feature media: make tears-of-steel.mkv from its source with a stream copy
ffmpeg reads only the needed part over HTTP (about 26 MB instead of 410 MB), so the clip doesn't need to be uploaded to static.mifi.no.

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>
2026-10-22 02:43:39 +00:00
ClaudeandMikael Finstad 261a897251 Feature media: record at 1024x640
The UI has less empty space and is easier to read in posts. The script now checks that the screen is the size of the window, since clicks are at fixed positions.

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>
2026-10-21 15:20:33 +00:00
ClaudeandMikael Finstad 4bb0fa1ec4 Feature media: simple mode for merge-files, wait after the last label
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>
2026-10-21 15:13:32 +00:00
ClaudeandMikael Finstad 92ed84edb9 Feature media: richer UI and labels in merge-cuts
Record with the advanced view and timeline thumbnails, the waveform for the demos with audio, label the merge-cuts segments, and add an actionWithDialog step for actions that ask for input.

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>
2026-10-21 15:06:33 +00:00
ClaudeandMikael Finstad 16402cf6d1 Feature media: label the segments in cut-segments
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>
2026-10-21 15:03:36 +00:00
ClaudeandMikael Finstad bb577130d1 Feature media: YouTube chapters, keyboard shortcuts and dark mode demos
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>
2026-10-21 15:02:17 +00:00
ClaudeandMikael Finstad a5d16aaa43 Feature media: merge cuts and fixed duration segments demos
Scenarios can set settings to start with (e.g. the export mode).

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>
2026-10-21 14:53:07 +00:00
ClaudeandMikael Finstad da119fbe92 Feature media: track selection, track metadata and full-screen waveform demos
Add click and type steps (xdotool). The tracks demo now turns off some tracks and exports, and the waveform demo also shows the full-screen waveform.

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>
2026-10-21 14:46:08 +00:00
ClaudeandMikael Finstad 3f53dba195 Feature media: tracks, scene change, waveform, rotate and invert demos
Add a key step (xdotool) to confirm dialogs that actions open, and use an excerpt of Tears of Steel for the tracks, scene change and waveform demos.

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>
2026-10-21 14:27:43 +00:00
ClaudeandMikael Finstad c5ecfd6e02 Feature media: demos with clips from static.mifi.no
Add split-segments and merge-files scenarios, play and export in cut-segments, download the clips from static.mifi.no by default, and export into the temp dir.

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>
2026-10-21 14:00:12 +00:00
ClaudeandMikael Finstad cc9a7b2e65 Website: draw feature icons that are on screen when scrolling stops, so they don't stay blank after a jump
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>
2026-10-21 13:54:17 +00:00
ClaudeandMikael Finstad 3c22d3508b Website: link "lose quality" to Wikipedia's Generation loss
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>
2026-10-21 13:05:21 +00:00
ClaudeandMikael Finstad bca24896d9 Website: show the official sources warning right below the store badges
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>
2026-10-21 11:49:05 +00:00
ClaudeandMikael Finstad de0d89678b Feature media: fixes from review
- 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>
2026-10-21 11:43:39 +00:00