- 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>
- 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>
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>
- 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>
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>
- 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>
- 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>
- 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>
- 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>
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>