Skip to content
CAI
Software that uses CAICheck a score

jsattler/BetterCapture

64.3

Adequate · 1 October 2026

6.3k

lines of production code

Swift

with TypeScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

BetterCapture is a macOS screen and audio recording application that operates as a background menu bar utility with global keyboard shortcuts and URL-based automation. It provides users with granular control over capture settings, including support for multiple video codecs, HDR, camera overlays, and specific audio device selection. The system includes a dedicated landing page for distribution and an automated pipeline for managing in-app software updates.

Features

Automated Sparkle appcast generation for in-app updates

A new Python script in the dist folder now automates the creation and maintenance of the Sparkle appcast.xml file used for in-app updates. This tool handles adding new release entries with signed update information, converts GitHub release notes from Markdown to HTML for display in the update dialog, and manages the appcast by pruning older entries to keep only the most recent 15 releases. It ensures proper XML namespace declarations for Sparkle and Dublin Core metadata, enabling seamless delivery of update notifications to users.

dist · high confidence

Configure public assets for the BetterCapture landing page

Added essential static files to support the new Astro-based landing page at bettercapture.app. This includes a CNAME file for domain verification, a robots.txt file to guide search engine indexing with a sitemap reference, a site.webmanifest defining the app's name, theme colors, and icons for PWA support, and a favicon.svg for browser display.

website/public · high confidence

Introduce RecorderViewModel for screen and audio capture coordination

Added RecorderViewModel to manage the core recording lifecycle, including state tracking (idle, recording, stopping), duration formatting, and integration with services for audio, camera, preview, and permissions. The view model supports multiple content selection modes (picker or area selection), handles permission requests on launch, and coordinates with the capture engine and asset writer to start and stop recordings. It also exposes properties for selected content filters, source rectangles for area selections, and presenter overlay status, providing a centralized interface for recording control within the application.

BetterCapture/ViewModel · high confidence

Introduce structured model layer for capture settings and content selection

This change establishes the foundational data models for the BetterCapture application, introducing specific types to manage recording configuration and content selection logic. It defines \VideoCodec\, \ContainerFormat\, and \VideoQuality\ enums to enforce codec-specific constraints such as HDR support, alpha channel handling, and MP4 compatibility. Additionally, it adds \CapturableWindow\, \CaptureFilterStyle\, and \ContentSelectionMode\ to handle how users select and classify screen content (display, application, or window), while \SettingsStore\ and \ContentVisibility\ provide the persistence layer for user preferences like bitrate, frame rate, and UI visibility toggles.

BetterCapture/Model · high confidence

Introduces new recording service architecture with HDR, camera, and audio device support

This update adds the core service layer for screen and audio recording, introducing \AssetWriter\ to handle media encoding with support for H.264, HEVC, and ProRes codecs, including HDR presets for HEVC and ProRes. It adds \CameraSession\ and \CameraDeviceService\ to manage camera inputs and enable macOS Presenter Overlay, while \AudioDeviceService\ allows users to select specific microphone devices. The \CaptureEngine\ now integrates with ScreenCaptureKit to handle content filtering, display disconnection checks, and dedicated system audio streams for window/application captures.

BetterCapture/Service · high confidence

Launch of Astro-based landing page with SEO and privacy policy

The website now features a new landing page built with Astro, including structured data (JSON-LD) for search engines, meta tags for SEO, and client-side hydration for interactive sections like the hero and features. A dedicated privacy policy page has also been added, clarifying that the application collects no user data and operates entirely locally.

website/src/pages · high confidence

New Astro-based landing page for BetterCapture

The website has been rebuilt using Astro, replacing the previous implementation with a new static site generator setup. This change introduces a light-themed design for BetterCapture (a macOS screen recorder), integrating Svelte components for interactivity and Tailwind CSS for styling. The new structure includes a Dockerfile for containerized deployment on port 4321, a sitemap integration, and a configuration targeting the bettercapture.app domain. Users will see a redesigned landing page with a hero section, feature highlights, a roadmap, and installation instructions, all rendered via the new Astro/Svelte stack.

website · high confidence

New landing page components for the BetterCapture website

The website now features a redesigned landing page built with Astro and Svelte components. This update introduces a Hero section with a 3D screenshot animation and Homebrew installation command, a Features section displaying key capabilities like native macOS integration and privacy, a Call-to-Action section for downloads, and a Footer with sponsor links and legal resources. The layout includes a responsive Navbar and BaseLayout handling SEO meta tags and structured data.

website/src/components · high confidence

New menu bar interface with area selection and live preview

BetterCapture now features a redesigned menu bar interface that includes a new area selection overlay for choosing specific screen regions, a live preview thumbnail with play/stop controls, and a floating recording overlay panel. The menu bar view also provides direct access to video, audio, and presenter overlay settings, along with buttons to open the output folder and the main settings window.

BetterCapture/View · high confidence

Behavioural changes

BetterCapture launches as a menu bar app with global shortcuts and URL automation

The app now runs as a background menu bar extra rather than a standard windowed app, allowing it to own the recording state and handle external events immediately at launch. Users can now trigger recording actions via global keyboard shortcuts and the \bettercapture://\ URL scheme (including \toggle\, \toggle-copy\, and \open-recordings\), enabling automation from external tools. The interface also includes a stable menu bar timer that avoids layout jumps and requests necessary camera and microphone permissions on launch.

BetterCapture · high confidence

Project configuration updated with Sparkle, KeyboardShortcuts, and test plan

The Xcode project configuration now integrates the Sparkle framework for in-app updates and the KeyboardShortcuts library, adding them to the main target's framework dependencies. Additionally, the project has removed the UI testing target, introduced a dedicated test plan file (BetterCapture.xctestplan), and updated the scheme to reference this new test plan.

BetterCapture.xcodeproj · high confidence

Removed local Xcode scheme configuration

The local Xcode scheme management file (xcschememanagement.plist) for the developer account has been removed from the repository. This change eliminates user-specific build scheme settings, ensuring that the project no longer tracks individual developer environment configurations in version control.

BetterCapture.xcodeproj/xcuserdata · high confidence

Test coverage

Added unit tests for BetterCapture core components; Removal of UI test suite.

Dependencies

Updated website dependencies and resolved Swift package versions

The website's package.json now specifies Astro 7.2.9, Svelte 5.57.0, TypeScript 7.0.2, and Tailwind CSS 4.3.3, with a corresponding pnpm-lock.yaml to ensure consistent installs. Additionally, the Swift Package Manager resolved file pins KeyboardShortcuts to version 3.0.1 and Sparkle to version 2.9.6.

(dependencies) · high confidence

Housekeeping

Initial project scaffolding and documentation

This change establishes the foundational structure for the BetterCapture project by adding essential configuration and documentation files. It introduces a \.gitignore\ to exclude user-specific and build artifacts, a \.swiftlint.yml\ to enforce code style rules, and an \AGENTS.md\ providing detailed instructions for AI coding assistants. Additionally, it includes \CONTRIBUTING.md\ for community guidelines, a \LICENSE\ file under the MIT license, and a \README.md\ that outlines features, installation methods (Homebrew and direct download), and automation capabilities via the \bettercapture://\ URL scheme.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 64 → 64 (+0.4)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 99 → 99 (-0.6)
  • Architecture 96 → 98 (+2.2)
  • Maturity 72 → 72 (+0.0)
  • Readiness 52 → 50 (-1.6)
  • Security 65 → 71 (+5.8)
  • Accessibility 82 → 82 (+0.0)

Resolved (6)

  • Documentation: written for insiders (docs/decisions/0001-keyboard-shortcuts-implementation.md)
  • Hotspot: BetterCapture/Service/AssetWriter.swift (BetterCapture/Service/AssetWriter.swift)
  • Outdated (npm): @astrojs/node
  • Outdated (npm): @astrojs/sitemap
  • Outdated (npm): astro
  • Outdated (npm): zod

New (11)

  • Documentation: no project overview (docs/README.md)
  • Duplicated block (12–14 lines × 2) (BetterCapture/View/MenuBarSettingsView.swift)
  • Duplicated block (13 lines × 6) (BetterCapture/View/MenuBarSettingsView.swift)
  • Duplicated block (14 lines × 2) (BetterCapture/View/MenuBarSettingsView.swift)
  • Duplicated block (15 lines × 2) (BetterCapture/View/PreviewThumbnailView.swift)
  • Duplicated block (22 lines × 4) (BetterCapture/View/MenuBarSettingsView.swift)
  • Duplicated block (29 lines × 2) (BetterCapture/View/MenuBarSettingsView.swift)
  • Duplicated block (9 lines × 2) (BetterCapture/View/SettingsView.swift)
  • Outdated: keyboardshortcuts
  • Outdated: sparkle
  • Repeated repair: BetterCapture/BetterCaptureApp.swift (BetterCapture/BetterCaptureApp.swift)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

jsattler/BetterCapture was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ab852b44c4dd09c8e2ae69e7858a1b67e1cd17af — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.