36 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
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
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
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
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 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 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 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
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 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 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 5f67a73a82 Website: draw a feature icon again when its card comes back on screen, and when it's tapped
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:34:05 +00:00
ClaudeandMikael Finstad 61c3dd7d3b Website: the feature icon script as is:inline, so Vite doesn't compile it and look for the app's tsconfig (failed the build without the app's dependencies)
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 10:43:35 +00:00
ClaudeandMikael Finstad 62429fa257 Website: on touch screens, draw the feature icons with a small IntersectionObserver script instead of a scroll-driven animation
Scroll-driven CSS animations don't work on iOS yet, so the icons didn't animate there. Each icon now draws once when its card
reaches the middle of the screen. Without JavaScript the icons are just shown.

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 10:40:17 +00:00
ClaudeandMikael Finstad 22ba934fe3 Website: darken the button colour so white text has enough contrast
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 10:37:01 +00:00
ClaudeandMikael Finstad e8db0e0f43 Website: fix the reviews overflowing sideways on phones (Safari), and make the icon drawing visible
- The quote grid isn't multi-column on phones: collapsed, the cards that didn't fit went into extra columns to the side, which
  Safari didn't lay out again when opened
- Every line of the feature icons has pathLength 1 (icons as data from lucide), so each line draws over the whole animation:
  with the fixed 100-long dash, most lines were drawn in the first tenth of it. No dash pattern when not animating.
- The opened "Show all" button stays, as "Show less", so focus isn't left on a hidden element
- The feature card hover lift only with a mouse, so it doesn't stick on phones
- Review fixes: per-file track shift wording, AGENTS.md (language count, feature post rules), the Cloudflare GITHUB_TOKEN build
  variable in website/README.md

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 10:31:42 +00:00
ClaudeandMikael Finstad 3bd9fdfcf1 Update the features list to what the app can do now
Add missing features (export modes, segment tools, markers, FFmpeg-assisted playback, codec tag, output file names and more), correct the import/export formats, crop, decimate and undo, and add use cases. Update the highlights in the README and on the homepage, and correct the README's FFmpeg-assisted playback 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-21 10:15:39 +00:00
ClaudeandMikael Finstad 35bd760f8c Website: feature card icons draw themselves on hover, and on phones when scrolled into view
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 10:02:04 +00:00
ClaudeandMikael Finstad 163eaef275 Website: a colour per feature card, icon tiles and a hover lift
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 09:55:41 +00:00
ClaudeandMikael Finstad 65126ddeea Features and use cases: one full list in docs/features.md, highlights in the README and on the homepage
- New page https://losslesscut.app/docs/features (in the docs sidebar): all features grouped (cutting, segments, merging, tracks, metadata, formats and export, workflow) and the example use cases, reworded and updated (e.g. yt-dlp instead of youtube-dl, no more Twitter limit).
- README and homepage: the same 9 highlights, with a link to the full list. The homepage shows 5 common use cases, and its note about cutting at keyframes no longer says it's not for exact cutting (there's Smart cut).
- README: fix the broken "use cases" link.

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 09:53:18 +00:00
ClaudeandMikael Finstad 20c4a7bffa Website: collapse the reviews and usage scenarios on phones too, with one <Collapsible> component
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 09:44:43 +00:00
ClaudeandMikael Finstad 5c952f21d6 Website: collapse the features on phones, with "Show all features"
CSS only (a <details> and :has()); browsers without :has() and wider screens show all features.

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 09:40:08 +00:00
ClaudeandMikael Finstad 0d5e13372e Website: keep the store badges' border at the rounded corners
The Microsoft and Snap badges are square images with a thin border, rounded by clipping, which cut off the border at the corners. Draw it on the rounded shape instead, like Apple's badge.

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 09:38:29 +00:00
ClaudeandMikael Finstad 835758965c Website redesign: review fixes
- Star count: use GITHUB_TOKEN when set (CI passes it) against the API's rate limit, fall back to the last known count, and fetch it once per build/dev server.
- Demo clip: controls, so the looping video can be paused. Hero image/video: width and height, and fetch the image early.
- Space between store badges when they wrap, balanced tagline lines, sections as <section>, decorative quote marks hidden from screen readers, a typo in a feature text.

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 07:39:46 +00:00
ClaudeandMikael Finstad 85d876c7fe Website: homepage redesign preview (hero, feature and quote cards)
- Hero: the screenshot next to the title on the background photo, Download/Documentation buttons, the store badges, and GitHub stars (fetched at build time), open source and platforms.
- An optional short screen recording (src/assets/home/demo.webm/.mp4) replaces the hero screenshot when added.
- Testimonials as cards in columns, features as a grid of cards with icons (lucide-react, rendered to SVG at build time).

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 07:29:57 +00:00
ClaudeandMikael Finstad bc9674d84b Review fixes: link names, comments, nightly and expressions links
- The issue chooser's link is to Troubleshooting, name it so.
- Bug form: the nightly builds link pointed to a README anchor that no longer exists.
- Type comments (and the generated docs/generated/types.md) link to the docs on losslesscut.app.

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 06:42:45 +00:00
ClaudeandMikael Finstad 6eee59eb0a Website: no workers.dev address, only losslesscut.app
Without workers_dev: false, each deploy turns it back on. Preview URLs for branches and pull requests stay on.

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 06:06:06 +00:00
ClaudeandMikael Finstad 1bdb314130 Website: drop the obsolete shrink-to-fit=no from the homepage viewport
It was only for Safari on iOS 9.

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 06:03:04 +00:00
ClaudeandMikael Finstad b1076a0258 Build losslesscut.app from this repo with Astro + Starlight, with the docs as pages
The losslesscut.app website moves into website/ (previously its own repo, deployed to S3/CloudFront) and is built with Astro + Starlight, deployed with Cloudflare Workers Builds (production from master, a preview URL per branch and pull request). See website/README.md.

- docs/*.md become pages under /docs. They stay plain markdown for GitHub: a content loader generates the front matter, remark plugins rewrite links, and the build fails on links to missing pages or headings.
- The app's links go through https://losslesscut.app/go/<name> redirects (src/common/websiteUrls.ts), so targets can move without an app update. The build checks that each target page and #anchor exists. This covers the help pages, discussions, bug reports, feature requests, thanks, Discord, the privacy policy, licenses.txt and the update check (/go/latest-release, a fetch replacing @octokit/core).
- licenses.txt is generated and attached to each GitHub release by the release workflow.
- New privacy policy at /privacy-policy.
- The homepage is a React component rendered to static HTML, with a header, Download/Documentation buttons and social icons. Its images and icons are served from the site (camera metadata stripped), without Google Fonts.
- Official links are in src/common/links.ts (app) and website/src/links.ts (website).
- The error report dialog's Discord link opened GitHub.
- Docs: fix broken links. Release notes: list each changelog line once.

Changelog: Help links open the documentation on losslesscut.app
Changelog: The Discord link in the error report dialog now opens Discord instead of GitHub

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 04:34:50 +00:00