Skip to content
joswayskiPublic

About

Screenshots and screen recordings

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

Captures

Captures is a cross-platform screen capture utility built for quick captures and a lightweight workflow.

Warning

Experimental and under active development. See platform status below.

A quick look

Captures region recording over an aerial satellite view of the Ever Given in the Suez Canal, with a highlighted box and the full Record menu showing Start recording
Capture what you need. A region, a window, or the full display. Screenshot and record from the same menu.
Captures screenshot editor with the Suez Canal, a Choke point label, a tiger on the left bank, and an Evergreen ship hanging off the right edge with an Expand canvas button
Built-in editor. Add text, arrows, and shapes right after you capture.
Captures mini preview cards naturally layered into a compact stack over a photo
Keep captures handy. Collapse recent captures into a compact corner pile until you need them.
Captures video editor trimming a total solar eclipse to a few seconds of totality, with crop handles and save controls
Polish recordings. Preview, trim, crop, and export video with quality and audio controls.
Captures Preferences showing the appearance, accent color, and capture settings
Fully customizable. Light or dark appearance, accent colors, shortcuts, and capture defaults.

Download Captures Preview

These links download the Tauri Preview 2026.10.1104, pinned while the native rewrite continues separately. This remains an experimental Preview, not a new stable release.

Platform Download
macOS 13+ (Apple silicon) Captures-macOS-Apple-Silicon.dmg
Windows 11 (x64) Captures-Windows-x64-setup.exe
Ubuntu / Debian (x64) Captures-Linux-x64.deb
Other Linux (x64 AppImage) Captures-Linux-x64.AppImage

The website, installer links and public updater channel stay on this Tauri build. New native builds do not replace them automatically. Desktop changes merged to main automatically build and publish experimental native AppKit/wgpu archives after release checks pass. Installing those archives remains opt-in until behavior, appearance and platform parity are accepted.

Installed copies check captur.es at launch and about every five minutes. Preferences and the tray also offer Check for Updates. Downloads from GitHub are signature-verified before installation; screenshot draft-save failure cancels restart. If Captures will not open or cannot install an update, use the installer links above. For an AppImage, replace your existing AppImage (normally ~/.local/bin/Captures.AppImage) and make it executable (chmod +x) rather than running a second copy from Downloads. Dated builds, including experimental native builds, remain in the build archive.

New desktop Preview release notes use AI-written highlights, with commit-based notes as a fallback. Generation runs in the release workflow using source changes, not your captures or app data; the desktop app does not contact Anthropic.

If you installed a native Preview, the updater will not automatically downgrade it. Quit Captures and manually replace the installed app to return to Tauri. Native migration preserved the original Tauri profile; native-only captures and edits remain in the separate native profile and are not imported back automatically. Do not delete either profile. See native update recovery for retained backups and limitations.

After a Tauri in-app update, Captures restores open screenshot previews, screenshot and recording editors, the screenshot mini-preview stack and Preferences visibility. Screenshot edits are retained as drafts. Recording editors do not restore unsaved trim/crop/export settings; active recordings block updates. This applies to updates started by a Tauri version with restoration support, not a native cutover or manual reinstall.

On macOS, update and launch notices follow the menu-bar icon as it moves. If the icon is hidden behind a MacBook’s camera notch, the notice appears below the safe menu-bar area without a pointing arrow. When the tray icon's position is unavailable, including on Linux, the launch notice uses a compact, unpointed card.

Features

  • Capture regions, windows, or full displays. Window mode treats the menu bar, taskbar, and desktop backdrop as a full-display capture instead of a window.
  • Draw a region from an empty screen (no pre-sized outline); lock to common aspect ratios, or hold Shift for a square
  • Press Enter in the capture menu to confirm a screenshot or recording once a target is ready
  • Optional auto-start after selecting a region, window, or full display (Preferences). Draw a region, click a window, or click the desktop in Full screen mode to start; with auto-start off, confirm with Enter or the capture button
  • Optional freeze while choosing a region or window, so hover states, tooltips, menus, and motion stay put (on by default; turn off in Preferences to select from the live desktop)
  • On macOS, frozen display previews and region/display screenshots convert the display color profile to sRGB; colors outside the sRGB gamut remain limited by the current capture pipeline.
  • Optional cursor in screenshots (on by default; freeze screen does not include the pointer by itself)
  • Windows captures use the system cursor image. With screenshot cursor capture enabled, the frozen selector also shows the captured cursor at its original position
  • Optional countdown before screenshots and recordings
  • Region recordings keep the selected area highlighted on screen while recording
  • Record as H.264 MP4, with desktop audio and microphone. Save or export as MP4 or GIF; WebM export is not supported
  • Pause, resume, restart, and mute while recording
  • On macOS and Windows, recording controls stay out of screenshots and recordings by default (Preferences). On Linux, use Hide controls during a recording to keep the bar off-screen
  • Cursor and click highlights in recordings (where supported)
  • Built-in screenshot editor — closed shapes start filled, with an optional stroke; text, shapes, images, and drawings can rotate from a shared handle (hold Shift to use a configurable snap increment); text and drawings with optional drop shadows (color, opacity, blur, and offset; the whole label, including a background plate), crop (drag from outside the canvas to reach an edge; hold Shift to lock aspect), layers that hang off the canvas stay clipped until you expand, erase to transparent; unsaved edits restore when you reopen
  • Current Tauri source also accepts image pixels or image files from the clipboard with Cmd/Ctrl+V in the screenshot editor, alongside Add images and file drops. Pasted images become editable layers below the selected image (or canvas), with one Undo per paste. Text fields keep normal paste. Layer copy/paste keeps an editable snapshot within that editor and claims the clipboard, so copying an image elsewhere takes precedence on the next paste; Copy image still copies the full canvas for other apps. This is not in the pinned Preview yet. Image overlays in the video/GIF editor are not supported
  • Open PNG, JPEG, WebP, GIF, MP4, and WebM files with Captures from Finder, File Explorer, or your file manager. Captures appears in Open With and does not become the default app for those types. Installed macOS, Windows, and Debian packages register this; an AppImage needs a desktop entry with %U. Save can overwrite the file you opened
  • Trim, crop, resize, and adjust audio in recordings, with an estimated saved size and an in-editor before/after compression comparison (Hide on the overlay, or switch back to Preserve quality)
  • Default screenshot save format PNG, JPEG, or WebP (Capture History stays lossless PNG until you save); export with Tiny through Highest quality presets and an in-editor before/after comparison while Export settings are open. Hide the comparison or close Export settings to edit without the slider; save quality stays Compress or Maximum until you change it
  • Mini previews for quick copy, save, and drag into other apps. Minimize the stack into a corner pile when it covers the desktop; click the pile to expand it, drag the pile to move it out of the way, and a new capture shows the pile again if capture hid it. Choose a default screen corner in Preferences (bottom left unless you change it). Near the top of the screen the pile fans and opens downward, with Show less on that edge; near the bottom it fans and opens up. On the right, Show less sits on the right of the stack so it stays on the screen edge. With two or more expanded previews, Clear all dismisses the stack; saved files and Capture History stay
  • Screenshots during an active recording
  • 30-day capture history, filtered by screenshots, video, or GIF. Drag a capture's thumbnail directly into an editor or any app that accepts its file type, without restoring a mini preview. Dragging copies the saved file when available, otherwise the original retained capture; History stays intact
  • Light, dark, or system appearance across every Captures window
  • Customizable shortcuts and accent colors. Find a setting in Preferences with Cmd+F on macOS or Ctrl+F on Windows and Linux
  • Capture shortcuts work from Preferences, except while assigning a shortcut. Preferences → General offers Start Captures on login on macOS, Windows, and Linux, starting in the background when you sign in. Current source enables it by default for new installs; saved Off choices stay off. The pinned Tauri Preview still defaults to off
  • Capture UI and capture actions stay disabled while the desktop session is locked or inactive
  • Optional in-app feedback (never includes your captures)
  • After an unexpected quit, Preview may send a crash diagnostic (app version, OS, and a redacted panic or OS crash summary) through the same feedback channel; it never includes captures or home-directory paths. An in-app update restart, normal logoff, or shutdown is not a crash.

Optional cloud accounts — in development

Local screenshots, GIFs, and recordings never require an account. The website shows an unavailable notice at /account; sign-in and account creation are not available. A provider-independent users table is retained in PostgreSQL for future development. Hosted uploads, sharing, and browser or desktop sign-in are not implemented yet.

Wishlist

  • Scrolling capture for content larger than the screen
  • On-device text recognition (OCR)
  • Repeat the previous capture area
  • Pinned captures that stay above other windows
  • Editable click highlights and keystroke overlays after recording
  • Hosted sharing with shareable captur.es/<id> links
  • Faster recording on Windows and Linux

Platform status

Platform Status
macOS 13+ Supported; primary development target
Windows 11 Supported; experimental
Linux X11 Supported; hide recording controls manually when needed
Linux Wayland Experimental; no window targeting, cursor capture, or click highlights. Mini previews cannot poll the pointer, so the stack stays interactive and may cover apps underneath

These statuses describe the downloadable Tauri Preview. Native parity and physical-platform acceptance remain separate; automated or headless tests do not replace them.

Shortcuts

Defaults follow each platform’s built-in screenshot keys. Captures-only actions keep extra shortcuts.

macOS

Default shortcut Action
Cmd+Shift+Space Open New Capture
Cmd+Shift+4 Capture a region
Cmd+Shift+W Capture a window
Cmd+Shift+3 Choose a display for a full-screen screenshot
Cmd+Shift+5 Record a region
Cmd+Shift+Option+W Record a window
Cmd+Shift+Option+3 Choose a display to record full screen
Esc Cancel an active capture, screenshot countdown, or recording countdown

Windows

Default shortcut Action
Ctrl+Shift+Space Open New Capture
Win+Shift+S Capture a region
Alt+PrtScn Capture a window
PrtScn Choose a display for a full-screen screenshot
Win+Alt+R Record a region
Ctrl+Shift+Alt+W Record a window
Ctrl+Shift+Alt+3 Choose a display to record full screen
Esc Cancel an active capture, screenshot countdown, or recording countdown

Linux (GNOME / Ubuntu)

Default shortcut Action
PrtScn Open New Capture
Super+Shift+S Capture a region
Alt+PrtScn Capture a window
Shift+PrtScn Choose a display for a full-screen screenshot
Ctrl+Shift+Alt+R Record a region
Ctrl+Shift+Alt+W Record a window
Ctrl+Shift+Alt+3 Choose a display to record full screen
Esc Cancel an active capture, screenshot countdown, or recording countdown

Global capture shortcuts can be changed in Preferences. In Preferences, Cmd+F on macOS or Ctrl+F on Windows and Linux finds a setting; Enter, F3, or Cmd/Ctrl+G moves to the next match. Installations still on earlier factory defaults (Ctrl+Shift or the shared macOS-style number keys) are updated automatically; custom shortcuts stay as they are.

On macOS, overlapping Screenshot app shortcuts (Cmd+Shift+3 / 4 / 5) are unbound immediately so those keys reach Captures instead of the system overlay; restore them in System Settings → Keyboard → Keyboard Shortcuts → Screenshots if you want both. On GNOME, overlapping screenshot keybindings are cleared when gsettings is available; on KDE, Spectacle’s rectangular-region shortcut is cleared when kwriteconfig is available. On Windows, Print Screen is turned off for Snipping Tool when Captures uses that key, and Win+Shift+S is intercepted so Snipping Tool does not open. If another screenshot tool still opens on the same shortcut, Esc always cancels Captures — even when that other overlay has keyboard focus or the freeze-frame has not finished painting. Captures lives in the menu bar or tray after setup (on Windows, look in the taskbar overflow if the icon is hidden). Open Captures from Start, Search, or the app icon to show Preferences, including Capture History. Capture from a shortcut, the tray New Capture item, or a tray capture action. If a capture starts while Start or Search is still open, Captures waits for those flyouts to close so they are not frozen into the screenshot.

While New Capture is open, the region, window, and display screenshot or recording shortcuts switch that overlay in place. They do not dismiss the menu or bring Preferences and other windows forward. Press the same screenshot shortcut again to freeze the capture menu into the next snapshot. An already-open region or window overlay does the same: the shortcut freezes that overlay instead of tearing it down, so you can capture Captures with Captures.

While selecting a capture region, pick an aspect ratio in the capture menu or hold Shift for a square. In the screenshot editor, zoom with the header slider and +/- controls, pinch or Ctrl/Cmd+scroll, pan with Ctrl/Cmd-drag or middle-click, hold Shift while dragging a corner handle to scale proportionally, and duplicate layers with Ctrl/Cmd+D. Header W×H resizes the canvas. Hover a layer that hangs off an edge to preview the clipped part and expand. Locked layers keep size and position until unlocked; layer width and height stay proportional.

Development

See DEVELOPMENT.md for local setup, validation, and packaging. The Preview pipeline uses native UI with shared Rust engines and platform-specific capture integrations. Tauri/React sources remain for comparison and historical recovery; the Tauri CLI is only an installer bundler for native releases, not an application runtime. Ordinary development workbenches keep separate data and do not join the installed update channel. The detailed development notes below describe implemented slices, not completion of physical acceptance.

The native capture workspace connects full-display PNG capture, local screenshot history, copy, export, and deletion to shared Rust engines. Its History uses the shipping card grid, header, filters, Restore to a floating preview and empty states; Delete all asks for a second click, removes all capture types regardless of the selected filter, and keeps exported files and recovery drafts. It uses separate development data. On Wayland, Take screenshot… in native History uses the desktop portal without X11, unmaps Captures' windows before the request, and restores them afterward. Captures return to History, without floating previews or guessed monitor geometry. Edit opens the screenshot editor directly; floating-preview Restore is disabled. Record display… and Record window… open a native countdown, request portal consent, and connect MP4 recording to the normal pause/resume, restart, Stop and Delete controls. Cancelling consent removes the empty take; losing the stream retains partial media for History recovery. Display recordings include the controls; Hide requires a working tray restore path. Window recording requires a ScreenCast portal v3+ advertising window sources; only the chosen window is shared, and every new/resumed segment asks again. Unsupported backends report an error without falling back to display capture. Portal video frames honor per-buffer crop metadata before output rotation and reflection, including same-size orientation changes during a take. Physical rotated-display and mixed-DPI acceptance remain open. While a take runs or is paused, the controls' Screenshot action requests a separate desktop-portal still without stopping the take. Captures' windows and HUD are hidden for the still; cancellation or failure preserves the recording. Screenshot commands honor the configured countdown in a compact, compositor-placed window; focused Escape or closing it cancels before consent. The countdown is excluded from the still, but can appear in an ongoing Wayland display recording, like the HUD. Window screenshot shortcuts and Screenshot Window in the tray request a window-only ScreenCast grant, capture one bounded frame, and close the stream before adding it to History. This requires portal v3+ with window-sharing support; unsupported backends fail without substituting a display. Window capture through the resident native GNOME/KDE UI and physical acceptance remain unverified; see verification limits. Region capture remains unavailable. Portal policy controls consent; window screenshots require the configured cursor mode, while display stills keep backend-controlled cursor inclusion. Separate no-window diagnostics also exercise GIF sessions. Restored window positions are compositor-controlled. Native Wayland global shortcuts use the desktop's GlobalShortcuts portal. The desktop chooses the available actions and keys; Preferences shows its returned bindings with Configure (portal v2+) or explicit Retry after failure. There is no X11 fallback or takeover of system screenshot keys. A granted action does not add an unsupported capture mode. Same-role window remapping needs a compositor with the fresh-configure fix (for Sway, use 1.9+); older Sway 1.7 is not supported. Like the shipping app, the native workbenches open Capture History, Preferences and first-run setup as separate, resizable windows that reflow down to their minimum sizes. Native Preferences saves appearance, custom colors, and capture/media defaults through shared Rust logic in a separate development settings file. Fresh native profiles show the shipping setup screen before capture or opening queued media. macOS offers explicit Screen Recording and optional Microphone access, Settings links, and a permission restart; Windows/X11 show screen capture as ready and do not require upfront screen access. Wayland screenshot permission is handled by the desktop portal at capture time. Private, software-rendered Sway 1.9 checks exercise compositor-delivered native Preferences Find, multiline Text selection/Undo/Redo and modified recording trim keys in both appearances at normal/minimum sizes, preserving source, settings and History artifact bytes. These checks are not physical keyboard, IME or screen-reader acceptance. Finishing setup, or a hidden launch into the menu bar or tray, briefly shows a "Captures is ready to use" notice with the New Capture shortcut on direct hosts; Wayland names the tray without advertising ungranted keys. Without a tray icon's screen position, it uses a compact, left-aligned, unpointed card that grows to fit long shortcuts. On Wayland the compositor places it. Real tray/menu-bar anchors keep the centered pill and triangle. The native workspace now applies automatic copy, output folder, PNG/JPEG/WebP save-format, screenshot countdown, and cursor inclusion preferences. Cursor rendering matches the shipping app: system cursor pixels on macOS, a synthetic arrow on Windows/X11. Escape cancels a pending capture even with another app focused. Both the macOS workspace and Windows/X11 candidate connect region draw/move/resize, aspect constraints, freeze, and auto-start to shared Rust capture logic. The Windows/Linux candidate settles a region at pointer release even if New Capture has switched to another target; returning to Region retains that choice without auto-capturing the other target. Window selection uses the same Rust targeting and pixel-source policy, with window/desktop confirmation, freeze/live selection, countdown and cancellation. Real desktop, mixed-DPI and accessibility acceptance is still open; private-X11 tests check saved region/window pixels and simulated session cancellation. Both native hosts connect screenshot mini previews with Copy, Save/Reveal, Edit and nondestructive Dismiss, respecting the four corner placements and capture-inclusion preference. Multiple captures remain in a stack with expand/collapse, scrolling with Show older/newer edge cues and Clear all; dismissing previews leaves history and exports intact. Expanded cards now use the Tauri layout: full-bleed images and idle dimensions, hover-only corner icons and centered Copy/Save actions, with controls mirrored for right-side placement. Hover blurs and dims the image; cards show byte sizes, clipboard confirmation and editor-presence pills. Delete uses a white icon on the signal-colored hover background. Native previews also lift and grow Close/Delete/Edit (including the editor-presence pill) on hover while keeping their click targets fixed, and animate arrival, dismissal, pile expansion and settling, respecting reduced motion. Clear all retains each screenshot card's current appearance while it streaks out, without forcing idle cards into hover dimming; later captures and retained files stay. After export, Show in Folder selects the saved file in the file manager (on Linux through the desktop's FileManager1 service, or by opening its folder when none answers) instead of saving another copy; a missing export leaves the capture available. Edit opens that screenshot directly without reopening a hidden workspace or changing the selected History item; opening it again preserves its pending edits. Trash moves only the saved export to the OS trash, then dismisses its preview; an unsaved preview is only dismissed. Private History stays intact. Failed Trash keeps the preview available for retry. macOS may request Finder automation permission; physical Finder/Recycle Bin acceptance remains open. Drag a collapsed pile within its capture display; its session position survives expansion and new captures without activating the workspace. Hovering the collapsed front card fans the rear cards outward; pressing and dragging keeps the fan open. macOS follows Reduce Motion; the Windows/Linux candidate reads the desktop animation preference at startup and when the workspace regains focus, and follows change notifications while it runs (Windows setting broadcasts, the Linux Settings portal's change signal). Linux requires a portal exposing the reduced-motion setting; --reduced-motion can force it when that setting is unavailable. Expanded native screenshot previews can offer the original file to another app as a COPY. An accepted external drop dismisses only its source card; cancellation and in-app drops retain it. A self-drop briefly shakes the card unless reduced motion is enabled. Unsaved captures use retained temporary files cleaned on the next startup; saved exports are never removed by drag cleanup. X11 transfers and the isolated Wayland protocol are tested on disposable desktops. Physical macOS, Windows OLE, mixed-DPI and full Wayland capture-host acceptance remain open. Both native History grids also offer direct screenshot, GIF and video file drags through those same COPY adapters, without Restore or preview dismissal. Missing recordings cannot be dragged. AppKit and Windows/Wayland History-drag presentation and physical file-transfer acceptance remain unverified. The pile includes 3D tilt, depth blur, shadows and staggered fan motion. Cross-display movement, automatic top/bottom anchor changes, backdrop blur and remaining control-transition details still need parity work and platform acceptance. Rear cards use fixed-glass depth shading; front and idle expanded images stay unshaded. Live native hosts expose menu-bar/tray New Capture, screenshot, History, Preferences, output-folder and Quit actions, plus configured New Capture and region/window/display screenshot and recording global shortcuts. New Capture opens shared Screenshot and Record controls for Region, Window and Full screen, retaining selections when switching targets with the toolbar. While these controls are open, the configured region/window/display shortcuts and New Capture switch mode and target in the same session; keyboard Full screen does not auto-start capture. As in the shipping app, pressing the shortcut of the screenshot target the controls opened on or a shortcut last selected (New Capture for Region) freezes the controls into a new capture instead. Any capture shortcut or tray item over an open region or window selector does the same, opening its selector or these controls on a snapshot that shows the old one; that selection never counts down. Over a screenshot selector beside a recording, the region and window shortcuts do this too, and Screenshot Display saves the display with the selector in it at once. As in the shipping app, the display screenshot shortcut and tray Screenshot Display open these controls on Full screen with its display picker, and a failed capture shows a "Captures" error dialog instead of a History error. During a running or paused recording the region, window and display screenshot shortcuts and tray items take that screenshot beside the take, as the shipping app does: region and window open their selector on the display under the pointer, display captures that display directly, and each uses the screenshot countdown and leaves out the recording controls unless they are included in captures. The recording keeps running untouched. Only an active focused shortcut recorder in Preferences suppresses those shortcuts on direct hosts. While a screenshot outside a recording is preparing, counting down or capturing, New Capture and Screenshot Display report that a capture is already in progress and the other shortcuts and tray items do nothing. An active recording ignores the recording shortcuts and tray items, and New Capture reports that a capture is already in progress. While recording controls are hidden, or left out of a screenshot beside the take, New Capture brings them back, and the screenshot shortcuts and tray items still take a screenshot. On macOS, Windows and X11, native Preferences can edit all seven capture and recording shortcuts; Wayland uses the desktop chooser described above. Recording keys on direct hosts open the selector without starting a take. Native Windows shortcuts keep their release-triggered behavior; ordering rapid shortcuts against selection input is still an acceptance gap. Linux requires a StatusNotifier tray host; without one, closing the window quits instead of leaving an unreachable background process. Native Record creates H.264 MP4 using the stored recording defaults and supported audio options. Its compact controls support pause/resume, confirmed restart with the stored countdown, microphone mute/unmute, stop/save to development History, and discard. Running mute changes durably complete the current segment before continuing with the same target and options; paused changes do not resume. Restart replaces only the current take and resets its elapsed time. Both native HUDs show live microphone level while visible, running, and unmuted, clearing it when paused, muted, hidden, or changing the take. Physical microphone and device acceptance remain open. Hide removes only the controls, shows a temporary noninteractive notice, and preserves the session, timer, pause and microphone state. New Capture (its shortcut and the menu bar/tray item) and app reactivation restore the controls; Linux disables Hide without a usable tray and restores the controls and workspace if its tray host disappears. Unsigned native development packages can include FFmpeg and FFprobe with their corresponding source and licenses; unpackaged workbenches can use prepared checkout tools, explicit executable paths or system commands. Signed distribution remains open. Started recordings are saved on session loss instead of being discarded; failed finalization retains recovery data. Linux cannot exclude the controls from captured pixels, so Hide is the native workaround on X11. Shared native recovery can identify, assemble, or explicitly discard interrupted takes in isolated development History. Both native workbenches list interrupted recordings separately in History, with cancellable recovery and an inline Discard permanently? confirmation. Unavailable bundles remain read-only for manual inspection; failures allow retry, and cancellation cannot undo a recording already published to History. This is interrupted capture recovery, not persistent recording-editor drafts or an installed-data migration. Region recordings keep a click-through boundary and dimming outside the recorded area during countdown, recording, pause, and hidden controls. The guide leaves the recorded pixels transparent and disappears when the take ends or is cancelled. The recording HUD can open a region screenshot selector without pausing or replacing the accepted take. Escape cancels only that selector or its screenshot countdown; successful screenshots use the normal native History, preview and auto-copy paths. AppKit and Windows can exclude native capture UI. X11 temporarily hides the HUD and guide from the screenshot, but cannot keep the selector out of the ongoing recording. As in the Preview, a take that cannot start keeps the HUD open with the error and offers Retry recording or Delete. A resume that cannot reopen the microphone leaves the take paused so it can still be saved. The Windows/Linux candidate's Edit recording opens a decoded frame preview with source-relative scrubbing, draggable trim handles, numeric trim/crop controls, custom output dimensions and MP4/GIF saving. Crop dimensions start aspect-locked; unlock to change width and height independently. As in shipping, edits take effect as they are made: the edited preview updates once a drag ends or a typed value is committed, and failed updates leave the last accepted frame intact. Both native editors follow the shipping layout (Edit GIF for GIF sources). The save footer starts with the original's name and folder, with Change… and the .mp4/.gif/.webm format; after a successful save, Show in Folder reveals it. WebM is offered as in shipping but, like shipping's bundled media tools, cannot encode it, so saving WebM shows shipping's error. The shared recording editor now also supports same-format replacement of an existing permanent MP4/GIF when History retains identical recovery media. As in shipping, Save with Save as new file off uses the chosen filename and folder under the same History item, without a confirmation. The original path is replaced; a different path must be unused, and the previous saved file stays intact. The new path becomes the editor's original for later saves. Turning the switch on suggests an -edited copy beside it. Replacement is unavailable for recovery-only or reference-only recordings (the switch then stays on), pending edits or a different output format; the backend also rejects missing or divergent recovery files. Success rebases the editor and updates the existing History item. Cancellation stops preparation but cannot undo publication once it begins. Ordinary failure keeps accepted edits; an uncertain result requires closing and reopening. This is not crash-atomic across the saved file and History. Saving with Save as new file on remains non-destructive. Trim handles preview their edge while held, with one active decode and only the latest waiting range and position. Focused handles also accept arrow keys and Page Up/Page Down; modifiers keep the same trim step, unlike Shift on crop handles. During playback, changing a handle stops the old decoder, accepts the latest trim and resumes without ending the gesture. The end grip pauses with Loop off and wraps to the selected start with Loop on. Dragging the trim track continuously seeks on both native hosts, paused or playing. Decoding keeps only the latest waiting position. A playing seek stops the old decoder, then resumes at the latest accepted frame without another Play press; release does not restart it. Pause, focus loss, Close, Quit or failure cancel that resume intent. A failed seek retains the accepted frame and ends the gesture. Numeric seek and other edit/export controls remain gated during playback or decoding. Reset trim restores the full range. Adjust crop shows an uncropped source frame with draggable edges/corners and interior move. Crop handles follow the aspect lock; arrows move one source pixel, or ten with Shift. Crop changes apply when each gesture ends, and Done cropping shows the edited preview. Loading this source frame can be canceled or retried. Both native hosts expose crop-handle values and reachable bounds in source pixels, with assistive increment/decrement actions using the same aspect-constrained geometry. The wgpu host also accepts standard assistive numeric value changes and exposes secondary-window controls through its platform accessibility provider. Corners announce their horizontal edge; top/bottom handles announce their vertical edge. The existing numeric crop fields remain available. Physical screen-reader acceptance is still unverified on all platforms. Both native recording editors provide Fit / 100%, which changes only the displayed scale. At 100%, one decoded image pixel occupies one screen point; larger previews scroll within the preview area. Playback still uses its bounded decoded size, not full-source resolution. The trim track shows retained full-source thumbnails, independent of the edited preview. Thumbnail generation can be canceled or retried without losing edits; it does not change the source recording. Play/Pause offers motion within the accepted trim, with a preview capped at 30 fps and 1280 × 720. Pause retains the last displayed frame; reaching the trim end makes Play restart that range. Other editing and export controls wait for playback to stop. Losing focus or minimizing pauses playback. Loop preview, off by default, repeats the accepted trim until paused. It can be switched on or off during playback and never changes the export. Sound, on by default like the shipping preview and changeable while stopped, plays the accepted MP4 audio mix on the default output device. GIF and mixes with no audible tracks stay silent without opening a device. Device failures are visible; turn Sound off to retry silently. Loop continues from the trim end to the trim start without a gap, keeping the same sound output. Physical audio routing and A/V synchronization acceptance remain open. The preview identifies its accepted format/quality, and saving uses those settings. Save quality offers Preserve quality (MP4 only; choosing GIF switches to Compress), Compress with Tiny, Smaller, Balanced, High or Highest, or Maximum file size. GIF palettes follow the preset: Tiny 64 colors, Smaller 96, Balanced 128, and High/Highest/Preserve 256. Maximum mode keeps that palette while saving at Preserve quality to fit the size cap; MP4 does not use it. As in shipping, Est. size updates automatically shortly after edits settle, without publishing an export; newer edits cancel an estimate in progress. Copied or fully encoded short ranges show exact sizes; sampled longer ranges and audio-only Preserve changes show approximate sizes. WebM and failed estimates show "—". Both native recording editors show nonzero percentage changes versus the original recording beside estimates; pending estimates and Maximum mode hide the delta. Both native recording editors, like shipping, automatically encode a read-only before/after sample at the accepted frame while Compress or Maximum is accepted and playback is paused, drawn as a split with size badges, "% smaller" and Hide (Show before / after restores it). It does not follow paused playback time or publish a file or History entry; staged edits hide it. The screenshot editor shows the same comparison while Compress or Maximum is chosen and Export settings are open. Maximum mode shows the first encoded attempt, not necessarily the final capped save; output cadence may select neighboring frames. Both native recording editors offer Maximum file size for MP4/GIF, using decimal KB/MB/GB with a 100 KB minimum. The size label shows the cap instead of an estimate. Save may reduce resolution, frame rate or audio quality to fit, so its first-attempt preview is not a promise of final output. An unattainable limit fails without publishing a copy. Available system and microphone tracks each have an include checkbox and 0–200% volume, plus Convert to mono. Accepted settings apply to MP4 exports and Sound preview. GIF output shows that GIFs have no audio, without discarding the MP4 settings. Both native recording editors offer 8, 10, 12, 15 (default), 20, 24 or 30 FPS for GIF exports. The frame rate applies with the other edits; switching to MP4 keeps the GIF choice without changing MP4 cadence. Both native recording editors offer GIF Maximum width choices of 320, 480, 640, 800 (default) or 1200 px, applied after crop and output sizing without upscaling. Changing the cap recomputes from that base; switching to MP4 restores base sizing and remembers the GIF choice. Original, 1080p maximum and 720p maximum output presets preserve the current crop's aspect ratio and never upscale. Custom dimensions override the preset. Custom dimensions are independent (no aspect lock); the shared media engine rounds sizes to even pixels. Re-encoded Windows/Linux MP4 fits within 3840 × 2160 (2160 × 3840 for portrait); its preview reflects that cap, while GIF previews retain their requested dimensions. Save new copy reports progress, supports cancellation, never replaces an existing file, and adds a distinct History item. A History failure retains the saved path. Recording edits are not drafts: save or explicitly discard them before closing or quitting. AppKit connects a separate History editor with decoded source-relative frames, numeric trim and source-relative crop, Original/1080p/720p or independent custom output dimensions, MP4/GIF/WebM settings, automatic size estimation and cancellable Save with the same shipping save semantics as Windows/Linux. Available system and microphone tracks have independent 0–200% volume and mute controls plus mono output; audio applies to MP4 while GIF disables the controls without losing their MP4 values. Its graphical trim handles overlay an immutable 12-frame source-relative thumbnail strip and preview the edge live with the same playback, coalescing and failure policy as Windows/Linux. Loading can be canceled or retried without disabling editing. Play/Pause presents bounded accepted-edit motion frames and a source-relative playhead without changing the accepted preview, edits, History or source. Like the shipping preview it plays the accepted MP4 mix with Sound on by default, on the default device; GIF and inaudible mixes stay silent without opening a device. Optional Loop preview repeats the accepted trim gaplessly without changing exports or dirty state. Adjust crop loads one immutable full-source frame at the accepted position, then stages source-pixel crop changes with eight resize handles or interior movement without decoding on each pointer event. Crop changes apply when each gesture ends while the source frame stays shown; Done cropping shows the edited preview. Loading is cancellable and retryable. Fit or 100% applies to the accepted, paused/playback or crop-source frame without decoding again or changing edits, estimates, exports or History; each item defaults to Fit. Windows/X11 provide the same full-source graphical adjustment alongside numeric crop and output sizing. This is not Tauri editor parity; physical audio routing, A/V sync, macOS, Windows and Wayland acceptance remain open. History displays recording posters and metadata; Save file copies the original media to the output folder without re-encoding, and Show in Folder reveals that saved copy. Both native hosts offer counted All, Screenshots, Video and GIF history filters; filtering does not delete captures or exports. After finalization, a temporary Recording ready notice offers Save file, then Show in Folder after saving a permanent copy. Dismissing or letting it expire preserves History and exports; failed saves can be retried. Both native workbenches also render the Preview update notice (release notes, download progress, restart countdown and errors) from a simulated status source. An explicit development launch can connect Preferences and tray Check for Updates to a pinned, signed endpoint. Checks also drive a real native notice with signed release notes, up-to-date results and retryable errors. An explicit scratch-directory option adds Download and verify for temporary package validation, with progress, cancellation and retry. An explicit retained base archive enables authenticated incremental downloads with signed full package fallback; this is development-only, not the Preview updater. Dismissing a pending operation keeps its result hidden until another explicit check or download. Ordinary development check-only launches never fetch packages or enable installation; only the explicitly versioned Preview build enables the installed channel. A separate opt-in development diagnostic checks signed native manifests, verifies downloads and can validate unpacked native packages in temporary storage. It never installs or replaces an app, and no native update channel is enabled. An explicit development helper can replace a stopped development package and test startup with a new empty profile, an explicitly imported isolated copy, or an existing enrolled development profile with a retained pre-update data snapshot. It can also recover a failed package replacement after all app processes stop; package recovery does not restore profile data. It does not update installed copies or reuse their profiles. An opt-in development GUI shutdown record can carry actual Preferences visibility and the verified target digest to that external helper. An explicit supervised development launch also enables Restart and install after verification: the external parent waits for an accepted, drained shutdown, authenticates/reacquires the exact package, snapshots development data and confirms replacement startup. Ordinary Quit does not install. Other app/data writers and launches must remain excluded; this does not update installed copies or establish OS signing/permission identity. Fresh profiles still require setup; automatic installed Settings restoration is not connected. The offline development-profile importer, also available separately, copies explicitly selected shipping settings, retained History and drafts with an original-data snapshot. Shipping data and exports stay unchanged, copied profiles survive failed startup and package recovery, and the development identity requires fresh setup. Installed Previews instead use the one-time copy described above; the development importer does not enroll a profile in that channel. A screenshot History card's Edit opens the AppKit screenshot editor. Its first native editor slice restores and saves isolated drafts, previews shared-Rust crop and canvas-resize operations, and supports Undo, Redo and confirmed draft discard. Its Layers panel connects shared visibility, lock, opacity, movement, image rename, duplicate, delete and adjacent ordering commands while preserving locked barriers; both native hosts also provide Merge down, Merge visible, and Flatten image with undo/redo and saved-draft restoration. Merge down requires adjacent unlocked layers; Merge visible retains hidden layers; Flatten removes hidden layers and bakes the canvas background into one locked image. The original History image and its exports remain unchanged until explicit replacement. Recording completion still presents its notice immediately; opening the recording editor is a separate History action. Real macOS and Windows recording, audio devices, multi-display and hardware acceptance remain open; Wayland display recording is exercised on disposable Sway, not accepted on physical GNOME/KDE desktops. Both native development hosts accept repeatable --open-media PATH arguments only with --live; --open-image remains an alias in the same ordered queue. AppKit also handles macOS file-open requests while running. PNG, JPEG and WebP become local History-backed screenshot editor sessions. GIF, MP4 and WebM open in the recording editor as external references, without copying or changing the source. Unsupported files report an error without stopping later paths. Reopening an already-open source focuses its editor without replacing unsaved edits. Closed sources reload under the same History ID; screenshot sources with a saved draft must first be restored or explicitly discarded from History. AppKit switches its editor between sources only after opening settles and without dropping pending text or unsaved edits; a refused source remains in History. The shared backend validates the actual recording container, editor preview and poster before publication. WebM is an input format, not a WebM export; Preserve-to-MP4 transcodes it rather than copying WebM bytes into an MP4 file. External recording references cannot replace an original; that requires a private recovery copy and a separate permanent save. Save as new file stays locked on. Live development hosts now forward subsequent launches to the process using the same History directory, preserving file order and sender-relative paths; a launch without files restores hidden recording controls or focuses the open setup, editor, History or Preferences window in that order, else opens Preferences. A visible native launch opens Preferences (setup on first run), as the shipping app does. Native Preferences → General offers opt-in Start Captures on login for macOS, Windows and Linux development profiles. It starts that profile hidden; relaunch or the tray/menu bar restores it. This uses a separate user-owned login entry, not Tauri's setting or registration. Disable it before moving/removing the development binary. On Wayland, quiet startup keeps History unmapped when a tray exists; Preferences, Feedback and media open independently. Missing or lost trays expose History so the process remains reachable. Physical compositor/sign-in acceptance remains open; development setup/removal documents the platform entries and conflict recovery. Native capture shortcuts remain available while Preferences is focused, except while a shortcut recorder is active. Updates keep the version and Native development identity visible; signed checks require explicit development configuration, and app installation remains unavailable. Fixture launches remain independent. Optional unsigned development packages provide Open With metadata for these six formats on macOS, Windows and Linux, under a separate Captures Native Development identity. Staging does not install them or change default handlers; local opt-in instructions include removal. Signing, distribution and physical file-manager acceptance remain open; these are not replacement downloads. TIFF is supported by in-editor import, not this external-open path. Nightly native CI also provides isolated exploratory test archives with media tools and a testing guide; see download and platform limits. They are not Preview installers, trusted signed releases or a shipping replacement. Native Preferences (and the tray/menu bar Send Feedback…) opens an optional feedback form in its own window, matching the shipping layout. Sending shares only the message, optional contact, category, and displayed app/system details with captur.es; it never attaches captures or files. Live native profiles retain a local, bounded, home-path-redacted Rust panic or unclean-session notice for review. Copy stays local; adding the summary to the editable message is explicit, and nothing sends until Send. A forced stop alone is not a confirmed crash. Normal Quit/restart and supported OS termination paths clean the current marker; OS exception-report discovery and physical shutdown acceptance remain open. Fixture mode cannot collect diagnostics or send feedback, and failed requests preserve the draft for retry. Shared Rust now defines the screenshot editor's layered document, crop/translation/ orientation geometry, canvas sizing and bounded snapshot history, checked against the shipping TypeScript behavior. A shared renderer now flattens real image layers and editor shapes, including closed annotations, curved lines, tapered arrows and freehand paths with crop geometry, rotation, opacity, blending and enabled shape/path drop shadows, without host I/O. A separate shared text prerequisite shapes and rasterizes single lines from explicit font bytes, including ligatures, combining marks and right-to-left text. Shared paragraph helpers now provide measured wrapping, alignment, auto-width boxes and background-plate geometry. An opt-in document renderer composites filled/outlined text and square/rounded plates from those fonts, with rotation, opacity and blending. Shared text selection, movement and resizing follow the shipping editor's interaction rules. Outlines use scalable monochrome glyph contours; color/bitmap glyphs return an error in outline mode. Text shadows follow the glyphs, or the plate when one is enabled. Editor workers can own explicit fonts and preserve their exact bytes in local draft sidecars, so text edits, undo, export and reopening use the same fonts. Typed commands create plain or preset text and edit content, type, alignment, color and plates transactionally. Both native hosts now connect a basic Text tool. Selected text's properties, including its style and shadow color, opacity, blur and offsets, apply as you edit, as in the shipping editor; typing in one field is one undo step. Before placement, choose a named style and size; boxed styles center on the click. As in the shipping editor, new text takes the drawing Color (annotation red until you change it). These defaults last only for that editor. Both hosts start at Rounded Box when its font is offered, otherwise Standard, then Plain, with an initial size scaled to the original capture (24–72). The bundle includes Nunito and Liberation Sans, Serif and Mono (OFL 1.1); exact font bytes and license notices stay with the draft. As in the shipping editor, every draft offers all four families: an older draft saved with fewer fonts adds a bundled family's files the first time its text uses that family. Like the shipping editor's browser fallback, a character the chosen font lacks (Nunito has no Greek λ, for example) is drawn from another bundled font, then from the fonts installed on the computer, rather than failing; installed fonts are never copied into drafts. Selected-text named styles use those fonts, including Rounded and Rounded Box. Choosing a non-rounded font clears the box's rounded corners; choosing Rounded afterward keeps those corners square until you explicitly choose Rounded Box. In both native editors, explicitly choosing a named style for selected text also makes that style the next new-text choice for this editor. Undo or a failed edit does not undo that future choice; size, color and manual font edits do not carry forward. The Windows/Linux candidate and AppKit host separately connect an on-canvas native multiline text box to the same shared transaction, drawn like Tauri's inline editor in the layer's own bundled face, size, colour, plate and position. Typing previews text without saving or adding undo steps; clicking away or Escape commits one edit, Return inserts a line, and clearing the box discards it. One tool-rail click finishes the latest text and chooses that tool, including while a preview is pending. A failed finish keeps the text editable without switching tools. AppKit rotates the box with the layer; the Windows/Linux box rotates its glyphs, plate, selection highlights and caret. Pointer presses target the rotated text; primary drags select it. Its IME placement bounds follow that rotation; the operating system controls the candidate window. Both draw outlined labels approximately. The Linux on-canvas box accepts middle-click PRIMARY text on X11 and Wayland compositors with data-control support. Reads are limited to 64 KiB and two seconds; changing input or focus cancels delayed pastes. Unavailable PRIMARY never substitutes the ordinary clipboard. Physical macOS, Windows, Wayland, IME and accessibility acceptance remain unverified. This is not Tauri system-font equivalence: the four families use the bundled faces rather than the operating system's, installed fonts only fill in missing characters, and fonts are never imported or downloaded. Worker-owned editor sessions add draft restore/save/discard, transactional crop/ resize/lossless image transforms/undo, single decoded-RGBA image import, and retained pixel frames for native hosts. Typed rectangle/ellipse/triangle/diamond/star, straight-line/arrow and completed freehand-path creation are also available; native hosts still own pointer sampling, drawing gestures and cancellation. Shared annotation-style patches can update existing shape/path colors, closed-shape fill/stroke controls, widths and shadow settings without replacing documents. The shared C boundary accepts one borrowed decoded RGBA buffer into session-owned storage; hosts own file decoding and interaction. Full-canvas photos rotate their canvas; layered overhang stays clipped and fully off-canvas transformed images expand the canvas so they are not lost. Shared interactive crop geometry also matches shipping bounds, aspect presets and Shift locking; physical input acceptance remains separate work. The Windows/Linux candidate opens screenshots from History in a native crop, canvas-size and draft editor with undo/redo. Both native hosts place their scrolling inspector to the right of the canvas and center the image in Fit mode without upscaling small captures. Both use the shipping header and tool rail, and the shipping sidebar: Layers always sits above the current tool's properties. Both editor windows resize down to 760×540, with scrollable inspector controls. A shipping-style export bar spans the bottom of both editors in every section: an Export settings disclosure whose summary reads like PNG · 1920 × 1080 · ≈ 240 KB, the filename with a format suffix menu, Saving to with Change…, Copy image (briefly Copied), a Save as new file switch and Save. Save stays available while Copy runs; repeated clicks queue one Save after Copy finishes, even if Copy fails. Copy stays blocked during Save. Both native workbenches limit screenshot-window close's visible wait to 400 ms while accepted work and draft saving continue in the background. Reopening waits behind that work; normal Quit still drains accepted outputs and reports final draft failures. A blocked worker can delay reopening or Quit. AppKit permission restarts refuse pending editor work. The Crop tool selects directly on the preview with free or preset aspect ratios and Shift ratio locking, then shows the selection's size with Clear and Apply crop. Apply commits the selection; Clear or Escape leaves the document unchanged. Layer rows show a grip, a live preview, the name and kind, and eye, lock and ⋯ actions. Drag a row to reorder it (one undo step) and double-click an image row to rename it. The ⋯ menu holds blend mode, opacity, image transforms, Bring to front and Send to back, Merge down, Merge visible, Flatten image, Duplicate and Delete. Selected images show Width, Height, X and Y fields that apply as you type. Draw adds rectangles, ellipses, triangles, diamonds, stars, straight lines, tapered arrows and freehand Pen strokes in the default annotation color, one undoable layer per gesture. Escape cancels unfinished work; short arrow gestures are discarded and drafts retain completed shapes and strokes. Both hosts use shared polygon geometry for transient previews and committed layers. Pen smooths sampled points and retains click-only dots. Layers → Annotation style edits fill, stroke and shadow color (the shipping eight swatches plus a custom color), width, layer opacity and shadow opacity, blur and offsets. Changes apply as you make them; a burst in one field is one undo step and each toggle is its own. Hidden and locked annotations remain editable. Image layers also expose lossless left/right rotations and horizontal/vertical flips, including when hidden or locked; each action supports undo and draft restore. Add images imports one or more PNG, JPEG, WebP, TIFF, GIF, BMP or SVG files: the first lands below the selected visible image, each later one below the previous, expanding the canvas when needed. Imports respect EXIF orientation, are undoable (one step per file), and keep their own draft pixels so reopening does not require the source file. GIF imports use only the first frame; Open still treats GIFs as recordings. Supported ICC profiles and PNG gamma/chromaticity/CICP metadata convert to sRGB. The shared decoder rejects calibrated or externally linked BMP color descriptions with a conversion message; embedded BMP RGB profiles are supported. Legacy 32-bit BMPs without a declared alpha mask import as opaque. SVG imports rasterize self-contained vectors/text with Captures' bundled fonts (other faces may substitute), with absolute width/height or one absolute dimension and a viewBox aspect ratio, up to 4 MiB and 4,194,304 pixels. Percentage dimensions, viewBox-only sizes and missing dimensions with preserveAspectRatio="none" require conversion to PNG first. Non-nested document-local <use> references are supported within the 32,768-node and 32-level limits, including copied content. SVGs containing images, HTML, external/unresolved references or nested reuse require conversion to PNG first; no external files, network resources or system fonts are loaded. Broader SVG parity remains open. Export settings hold output size, save quality (Preserve, Compress or a maximum file size) and Est. size, which re-encodes automatically a moment after edits or option changes and shows the % change from the original; an encoded-output toggle previews the result on the canvas without saving. As in the shipping app, Save overwrites a screenshot's saved file by default, atomically replacing it and updating the same History item (its date is kept) after re-checking that file and entry. Turning on Save as new file, editing the filename or choosing another folder saves a new file instead, and a format that differs from the original always does; new files never replace an existing file and add a distinct History entry. A capture without a saved file writes its first Save to the output folder. The saved file then becomes what Save overwrites. As in the shipping app, every Save then shows the saved file in its folder, and Show in Folder appears. If History cannot be updated, the saved file's path remains available for recovery. The status line under the filename explains what Save will do and warns when JPEG will fill in transparent areas. The editable document, draft, undo and output preview are retained; Undo affects the editor, not the saved file. Closing can save or keep the previous draft; explicit Discard edits restores the current History image. Failed draft saves keep edits open and cancel normal quit. Private-X11 checks cover both appearances, persisted drafts, real preview pixels and error recovery. AppKit now connects the same crop, canvas-resize and draft operations in its own window. Its Crop tool also uses the shared aspect presets and Shift ratio locking; the selection stays separate from the document until Apply crop, and Clear or Escape drops it. It includes native image-layer controls, lossless rotate/flip actions, and PNG/JPEG/WebP output previews without saving. Both native export settings offer only Tiny, Smaller, Balanced, High and Highest compression presets, starting at Highest, with no numeric quality field. Highest PNG preserves pixels with lossless packing; JPEG/WebP presets are lossy. Both hosts also offer Original, 75%, 50% and Custom output dimensions, with an aspect lock for custom sizes. Preview/save resize only the exported pixels and the published History image; the editable document, draft and full-resolution clipboard are unchanged. Its export bar uses the same shared save model and status copy as the Windows/Linux candidate, and preserves the draft. AppKit also imports still images, one per new image layer, using its color-managed system decoder. It normalizes imported pixels to straight-alpha sRGB RGBA8 and retains them in the draft without depending on the source file. ImageIO-supported sources use their first image; files without a usable color description are rejected rather than silently relabeled. Its Draw view maps Rectangle, Ellipse, Line, Arrow and Pen gestures from the fitted edited preview into shared document coordinates, including reverse and off-canvas gestures. Release creates one undoable layer; Escape, focus loss, close, or leaving Draw cancels transient geometry without editing the document. Arrow outlines and Pen smoothing come from shared Rust; Pen supports click-only dots and round caps. In both native hosts, newly placed shapes keep their move, resize, rotation and curve grips live without switching to Select. The active shape tool moves the body of its own selected shape; dragging empty space starts another shape. Both native editors offer stroke/fill colors, stroke width and opacity before drawing. These choices stay local to the editor; drawing creates one undoable layer. Pre-placement drop-shadow controls include color, opacity, blur and X/Y offsets. While dragging an annotation, both hosts update its pixels and shadow through the shared renderer in the background; Escape restores the unchanged image. An approximate vector guide appears until the first pixel frame is ready. The Windows/Linux native candidate also accepts exact #rrggbb colors from the keyboard in its custom-color chooser; incomplete input keeps the accepted color. Its shared range controls expose bounds and adjustment actions to accessibility APIs. Physical screen-reader acceptance remains open; AppKit keeps its native sliders and system color panel. Its Layers panel also edits annotation fill, stroke, opacity and shadow settings live, as shipping does; shared Rust owns style defaults, rendering, undo folding and draft persistence. Both native hosts keep the Properties title visible while its fields scroll, including at the minimum window size; the title does not cover the controls. Editor errors share the export footer rather than shrinking the inspector; the full explanation remains available when the footer text is truncated. In both native hosts, Layers supports clicking the edited preview to select an unlocked visible layer, or empty space to clear selection. Move, rotate, resize and curve-dot drags show edited pixels while held, with selection guides over them. The background renderer keeps only the newest pending position; a large image can lag behind the pointer. Held previews do not change the document or saved draft; release commits one undoable edit. Escape, focus loss, preview resizing or leaving Layers cancels the drag and restores the unchanged pixels. The selected layer also exposes a rotation grip when it fits inside the image. Drag it to rotate; hold Shift for stops configured under Properties → Shift rotation snap (1–180°, initially 15°). The increment is per-editor UI state, not a document edit or saved preference. Rotation uses the same live-pixel preview, cancellation, undo and draft behavior. Hidden or locked layers have no grip. Eight border grips resize images, shapes and drawings. Shift keeps corner drags proportional; edge grips remain single-axis. Unrotated resizes snap to canvas and visible-layer edges with guide lines; rotated resizes retain the opposite anchor. Resizing previews pixels without growing the canvas; fully outside content can expand the canvas when the edit commits on release. Selected lines and arrows show curve dots: drag a dot to bend the stroke, double-click the path to add a point and double-click a point to remove it. Layers offers a Curve slider for straight or single-bend strokes and Straighten for multi-point ones. Curves survive saves and drafts. Like shipping, Curve and Straighten remain available in Properties on locked or hidden layers; locked layers still reject canvas-dot edits. Curve slider drags update the canvas while held and form one undo step per gesture; only the newest pending drag value waits for the worker. Controls keep keyboard focus while edits run. Keyboard steps apply in order with their own undo steps, and Straighten remains a separate action. A selected layer that hangs past the canvas shows an Expand canvas action; hovering previews the grown canvas and one click grows it as a single undo step. Dropping PNG, JPEG, WebP, TIFF, GIF, BMP or SVG files on the canvas adds image layers where the placement guide shows (Place above/left/right/below, or stacked); each file is one undo step. As in shipping, the snapped edge and the hovered Expand canvas preview breathe with an accent bloom and streaming particles; with reduced motion they hold still and show no particles. Canvas moves now snap painted bounds to canvas and visible-layer edges, including locked layers, with alignment guides. The snap range stays constant on screen; numeric X/Y edits remain exact and do not snap. Clicks and small pointer movements do not trigger snapping or change the document. Both hosts connect view-only zoom and pan: Fit, 100%, zoom steps, Recenter, Cmd/Ctrl-wheel zoom and Cmd/Ctrl-drag or middle-button pan. AppKit also connects native magnification. Zoom stays anchored under the pointer and shares the image's coordinate mapping with editing tools. These controls do not change drafts or undo. Fit does not enlarge small screenshots; manual zoom still can. Cmd/Ctrl +/− zoom in 1.25× steps; Cmd/Ctrl 0 shows 100% (not Fit), including while an editor field has focus. Zoom shortcuts cancel unfinished canvas gestures. Cmd/Ctrl Z undoes and Cmd/Ctrl Shift Z redoes document edits outside text entry and open dialogs. Typing retains its own Undo; commands do not queue while the editor is busy. These are editor-local shortcuts, not global capture shortcuts. Cmd/Ctrl D duplicates the selected layer; Delete/Backspace removes an unlocked selection. Locked and hidden layers can still be duplicated, and typing fields keep their own deletion keys. Arrow keys nudge an unlocked selection by one image pixel, or ten with Shift, without snapping or expanding the canvas. Hidden layers can be nudged too. Focused fields and zoom controls retain their arrow keys. Cmd/Ctrl C retains the selected editable layer and claims the OS clipboard with a private marker, not visible text. Cmd/Ctrl V reuses that snapshot only while the marker still belongs to this editor; repeated layer pastes offset by 24 pixels. External clipboard images or local image files instead import through Add images placement, with owned draft pixels, canvas expansion, last-image selection and undo/redo. Native multi-image paste keeps one undo step per image (Tauri uses one batch step). Text fields retain normal paste; URL/HTML-only images are not fetched. Outside text fields, an empty or text/HTML-only clipboard is ignored; unreadable image data still reports an error without changing the document. X11 file-list paste accepts incremental clipboard transfers within the existing 1 MiB/two-second transfer limits; incomplete or invalid transfers import nothing. On Wayland, clipboard pixels require compositor data-control support; editable layer ownership and local-file paste use the core selection protocol. Copy image remains the separate pixel-copy action. These are opt-in native source features, not a change to the pinned Tauri Preview or video editor. Closing the editor or discarding its draft clears the internal layer clipboard. Right-click a layer for Copy layer, Paste layer, Duplicate, Delete and Merge down. These actions target that row; Merge visible and Flatten image affect the document. Empty list space offers Paste and the document-wide combine actions. Locked layers cannot be deleted or merged down. With canvas focus, V selects layers, C starts Crop, T selects Text, R Rectangle, O Ellipse, L Line, D Diamond, S Star, A Arrow, P Pen, and B the last-used Wand/Erase/Restore mode (initially Wand). Switching tools cancels unfinished gestures without applying them; selecting the same tool again preserves them. Focused native controls retain typing and letter navigation. Both hosts also keep a left tool rail visible beside the canvas, with the shipping labels and hover tips: Select & move, Crop, Text, Shapes, Arrow, Freehand and Eraser. Shapes opens Rectangle, Ellipse, Line, Triangle, Diamond and Star, recalling the last choice. The rail chooses the tool (there are no section tabs); pending work disables it. Drawing selects the new layer and shows its Properties while keeping the drawing tool active. Choosing Crop or a drawing tool clears selection and restores that tool's controls. Like shipping, the header holds the canvas W × H fields, Trim edges and the canvas background, then Undo/Redo (hidden at 1040 points and narrower), the zoom group and Add images. Like shipping, both hosts autosave the edit draft 700 ms after each change and flush it when the editor closes, without a save prompt. Reopening a draft shows the shipping restored-edits notice with Discard, and Recenter appears only while the canvas is panned mostly off screen. The zoom menu offers Fit, 50%, 100% and 200% and displays the current custom zoom. Both hosts also provide a logarithmic 5–800% zoom slider. It tracks the actual Fit scale and preserves the viewport-center image point when dragged. Fit retains each workbench's existing placement. Windows, Wayland and physical AppKit presentation remain unverified. Preview controls, History actions and screenshot-editor tools use shared shipping icon paths on both native hosts, rather than platform-specific approximations. The inspector follows the shipping sections, controls, labels and spacing in the shipping 320 px sidebar column on both hosts. Native mini previews and History use the shipping Tauri action set, without Share controls. Experimental account/upload code and disabled sharing fixtures remain separate from the live app; the account service is unavailable. See the sharing integration slice. Both hosts can copy the full-resolution edited image without saving a file or draft; copy ignores export format and quality settings. The Background color card offers a Solid background toggle, the shipping eight swatches and a custom color; each change applies immediately as one undo step and survives draft restore. It changes the canvas fill, not backgrounds within image layers. Trim edges fits the canvas to visible layer geometry, preserving off-canvas content and moving hidden layers with the document. It does not scan image alpha to remove transparent borders. Trimming supports undo/redo and draft restore. The button is disabled when there is nothing to trim; hovering or focusing it previews the cut: the discarded margins turn red, a dashed outline marks the kept area and the cut edges pulse (static under reduced motion). Both hosts also connect Draw → Wand: click an image to remove similar colors, using a color tolerance and either a contiguous region or all matching pixels. The frontmost visible image is editable even when locked; transparent pixels do not let clicks reach images underneath. While the Wand hovers an image, a colour loupe beside the crosshair magnifies the image pixels and shows the sampled hex. Each edit clears the canvas fill, keeps the original image pixels, and supports undo/redo and draft restore. The original History capture remains unchanged. The Tolerance slider runs from 0 to 120 like Tauri's. Erase and Restore use brush Size and Softness sliders; Restore paints from the retained original image. As in the shipping editor, a ring the brush's size replaces the pointer over an image (dashed for Restore; elsewhere the pointer shows not-allowed) while shared-renderer pixels preview the stroke during dragging. Release commits one undo step; Escape, focus loss or changing tools cancels the preview without editing. Properties shows a stroke or brush preview for drawing tools and Erase/Restore, and Apply crop pulses while a crop is staged. Physical-platform input acceptance remains parity work. Text controls support a style picker, multiline content, font families (listed as Sans serif, Serif, Monospace and Rounded), size, bold/italic and alignment buttons, swatch-row text and background colors, a Text background plate and a Drop shadow toggle; outlined and rounded plates come from the Outlined and Rounded Box styles. Drawing default colors use the same swatch rows. Changes apply as you make them; a typing burst in one field is one undo step. Custom shadows and pinned-font named styles are connected, including style/size choices for new text; new text also takes the drawing defaults' Drop shadow, as in the shipping editor. Font import and physical input/IME/accessibility acceptance remain open. Native Capture History shows its header, filters and grid. Back to Preferences opens or restores Preferences without closing History, including when History is empty. Captures start from the tray, shortcuts and New Capture menu. Wayland additionally offers Take screenshot…, Record display… and Record window… because a tray or global shortcuts may be unavailable. A denied capture opens the native permission recovery: Restart & Retry on macOS, or a Capture permissions dialog that reuses the setup permission cards. Check or refresh without prompting; request macOS screen or optional microphone access explicitly. Done returns to the workspace even after denial or a check failure, without restarting or closing editors. Windows/X11 need no upfront screen grant; microphone status is not reported there. Wayland window screenshots require a window-sharing portal; region capture remains unavailable. Physical permission-revocation/retry acceptance is still open. Post-save source adoption, remaining editor layout/interaction parity, physical setup/login and installed-update acceptance remain open. Shared editor support is prerequisite work, not native editor acceptance. Resident shortcuts and single-instance relaunch are connected, but physical cross-platform acceptance and full feature/design parity remain open. The migration checklist tracks the plan and parity gates; older Tauri Previews remain in the build archive. The wgpu host supports hidden Wayland startup, but physical resource acceptance remains open; see its evaluation limits.

License and trademarks

The source code is licensed under the Apache License 2.0.

The Captures name and logo are governed by the Captures Trademark Policy and are not licensed under the Apache License 2.0.

About

Screenshots and screen recordings

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages