Repository navigation
This is the first tagged source release since v1.0.0. It includes the changes developed under the unreleased 1.1.0 version number.
Added
- One-time
npm.cmd run setup:userregistration for the user-levelcutloccommand without an EXE or desktop package. cutloc open,cutloc status --json,cutloc doctor --json,cutloc stop, andcutloc restartruntime workflows.- Automatic shared-server startup on an available loopback port for live CLI commands.
- A single runtime contract for installation metadata, instance discovery, user storage, logs, and temporary files.
- Dedicated
keyframes list/set/remove/clearCLI commands and a machine-readable keyframe contract for AI agents.
Changed
- Text shadows now scale with the same canvas factor as text and strokes, keeping preview and exported typography visually proportional.
- Completed exports now open a dedicated result screen with file details, a primary download action, repeat export, and a path back to the export settings.
- Windows media discovery and probing helpers now run without flashing console windows during import or export preparation.
- Export renderer pages now start in parallel and use Chromium's optimized lossless frame capture path; draft and standard H.264 profiles favor faster presets while preserving their quality targets.
- Export resolution labels now use unambiguous 720p HD, 1080p Full HD, 1440p QHD, and 2160p UHD names with exact pixel dimensions. Output FPS no longer changes the project timeline FPS, and custom video bitrate is entered in Mbps with a profile-aware recommendation.
- Export progress now distinguishes compositor startup, rendered frame count, and final encoding/muxing.
- Windows projects, settings, proxies, backups, and exports now default to
%LOCALAPPDATA%\CutLoc\datainstead of the source checkout. - Live preview now consumes the shared frame-quantized render plan used by the export contract for layer order, source time, transforms, transitions, crop/fit geometry, adjustment filters, and audio gain. Duplicate animation math was removed from the React compositor, fractional FPS is available in the canvas, and playback publishes at most one UI update per authored frame.
agent guidedocuments repo-independent discovery and automatic startup.- Existing checkout-local data is copied after empty runtime scaffolding and safely merged when both locations contain data; destination conflicts and the legacy source remain intact.
- The editor's Animation tab now uses a compact three-step motion workflow. Once a property is enabled, changing it at another playhead position automatically creates or updates the keyframe.
Fixed
- Project writes now require an explicit revision, locked-track media deletion is rejected, and explicit unlocks retain their clips.
- Clip, track, and style duplication regenerate nested keyframe IDs; invalid keyframe values and ambiguous track ordering are rejected by the shared schema.
- Export ranges outside the timeline are rejected instead of truncated, fractional broadcast frame rates are supported, and export jobs can be cancelled from the browser.
- FFmpeg export publication is atomic, layer order follows
track.order, hidden video tracks retain their audio unless muted, and the final mix is normalized to 48 kHz stereo with peak limiting. - Derived media rebuilds use unique temporary files, detect in-place source changes, publish as one rollback-safe transaction, and relink removes superseded derivatives.
- Export preflight now compiles and probes the actual FFmpeg graph, while corrupt project reads return a server error instead of being reported as missing.
- Media removal uses the server lifecycle instead of deleting only local UI state; modal focus containment and timeline keyboard access have also been completed.
- Legacy runtime activity responses fail closed when preview work cannot be observed, preventing an unverified non-forced shutdown.
- Dirty browser edits are mirrored to a validated per-project local draft and recovered after reload; conflicting server changes require an explicit recovery choice.
- Job history is stored atomically across server restarts, and work interrupted by a restart is surfaced as failed instead of disappearing.
- Managed startup now honors checkout
.envstorage overrides instead of forcing the defaultDATA_DIR. - Runtime status and doctor use the effective project directory, and doctor verifies FFmpeg text rendering.
- Health discovery rejects loopback services that do not identify the CutLoc product and API protocol.
- Background server output is retained in
logs\server.log, and version changes restart stale managed instances. - Installed commands ignore unrelated generic
HOST/PORTvariables, offline agent guidance no longer advertises a guessed API address, and doctor reports endpoint identity failures as structured checks. - Persisted installation, instance, and lock records are structurally validated before use; incomplete or unsafe metadata is ignored instead of crashing or redirecting the CLI.
- Runtime protocol v2 exposes active work state. Automatic upgrades and stop/restart no longer interrupt media jobs, while closing an active editor session requires an explicit
--force. - Active preview renders are protected from stop/restart, and browser progress streams are closed cleanly so an open editor cannot leave shutdown hanging.
- User setup writes the command shim atomically and recognizes equivalent expanded or environment-variable-based PATH entries, preventing partial commands and duplicate registration.
- CLI export checks now report adjacent frame ranges precisely, while batch media imports validate files before uploading and roll back earlier uploads on failure.
- Project deletion and export publication preserve their lifecycle boundaries under concurrent work; timeline splitting rejects fragments shorter than one frame, and media byte-range requests are validated strictly.
- CI installs Chromium before server export tests that use the browser compositor.
- CLI doctor now selects a local FFmpeg build with text-rendering support when the bundled build lacks
drawtext, matching the server's export path.
Known limitations
- v1.2.0 remains a source distribution and still requires Node.js 24.x, npm 11.x, and an initial checkout/install/setup step.
- There is no EXE, installer, desktop shell, or automatic updater.
- Hardware video encoding, hosted collaboration, and lossless cutting are not included.
Upgrade notes
- Existing
schemaVersion: 1projects need no migration. Runnpm.cmd ci,npm.cmd run build, andnpm.cmd run setup:userfrom the updated checkout to register the 1.2.0 runtime.