Skip to content

Latest commit

 

History

History
179 lines (156 loc) · 35.3 KB

ROADMAP.md

File metadata and controls

179 lines (156 loc) · 35.3 KB

Roadmap

Planned features for OpenScreenShot. Everything here stays true to the extension's core promise: 100% local, no servers, no accounts, no new data collection. The CLI and MCP server run locally by default and use OpenScreenShot Cloud only when you ask. Roadmap items are not commitments or dated promises — votes, feedback, and pull requests are all welcome (see CONTRIBUTING.md), and open an issue to champion an idea.

Status legend: 🧭 exploring · 📋 planned · 🚧 in progress · ✅ shipped

Suggested next priorities

Explore local OCR and combining screenshots first. These are product hypotheses to validate with user feedback, not release commitments. For recording, prioritize removing sections from the middle of a take.

Keep Express mode simple. Surface additional choices where they are useful—in capture options, editor tools, or history—without adding steps to the default capture flow. New screenshot workflows should support Chrome and Firefox; recording capabilities remain browser-dependent.

Capture

Feature Status Notes
Delayed capture (3s / 5s / 10s timer) ✅ shipped Landed in v0.6.1: persistent Off / 3s / 5s / 10s row in the popup; the badge counts down; region shows its overlay after the delay.
Capture straight to clipboard or download (skip editor) ✅ shipped Landed in v1.1.0: an "After capture" row in the popup picks Editor, Clipboard, or Download. The setting is read when the capture finishes, so one row covers the popup buttons, the keyboard commands, and the context menu. The clipboard write is injected into the page rather than using an offscreen document, because a service worker has no navigator.clipboard; the download runs in the worker. Quick save writes PNG, and the badge is the only feedback since no tab opens.
Right-click context menu capture ✅ shipped Landed in v0.6.1: full page / visible / region from the page context menu, via the warning-free contextMenus permission; clicks grant activeTab and honor the delay setting; errors flash ! on the badge.
Repeat last region ✅ shipped Landed in v0.6.1: re-capture the previous selection rect. The rect persists in local storage; entry points are a popup footer link and a context menu item, shown once a rect exists.
Region loupe + DOM element snapping 🧭 exploring Pixel-precise crosshair magnifier; snap selection edges to element boundaries.
Capture an element ✅ shipped Landed in v2.2.0: hover or use the keyboard to select visible cards, charts, tables, or images, adjust the bounds through parent/child elements, then capture to the editor, clipboard, or download. Clipped elements offer a full-page fallback.
Split very long pages into several images ✅ shipped Landed in v2.4.0: a full-page capture taller than one canvas (32,000 device pixels) saves as up to six equal images instead of failing. Download adds a _partNofM suffix; editor and clipboard open each part in its own editor tab.
Batch capture: list of URLs → one multi-page PDF 🧭 exploring Combines existing scroll-and-stitch with existing PDF export.

Editor

Feature Status Notes
Straight line tool ✅ shipped Landed in v0.5.0 as the L tool: the arrow shape without a head, sharing its two endpoint handles.
Solid and mosaic redaction ✅ shipped Landed in v0.6.0 as a mode on the blur annotation: soft blur, coarse mosaic, or an opaque fill that survives recompression.
Spotlight tool ✅ shipped Landed in v0.6.0 as the O tool: rect, rounded rect, or ellipse cut-outs that merge into one dim layer.
Shift constraints while drawing ✅ shipped Landed in v0.5.0: square rectangles and blur regions, and lines and arrows snapped to 45°.
Resize every annotation type ✅ shipped Landed in v0.6.0: pen and highlighter scale freely on their bbox; text and step badges scale uniformly from corner handles.
Number keys 1–8 set the color ✅ shipped Landed in v0.5.0 across the whole palette, matching the letter keys on the toolbar.
Double-click a text layer to re-edit it ✅ shipped Landed in v0.5.0 on the select tool. Reopens the existing text overlay on a committed annotation.
Beautify mode: padding, rounded corners, shadow, gradient ✅ shipped Landed in v0.7.0: a topbar panel with padding, corner, and shadow sliders plus six gradient presets, transparent, and a custom solid. The frame previews live and travels into every export, the clipboard, and PDF. The screenshot's top-left stays image (0,0), so every tool and the crop path were left untouched.
Eyedropper color picker ✅ shipped Landed in v1.1.0 as the I tool. It samples the rendered canvas, so a colour inside a spotlight's dim or on the beautify gradient picks as it looks, and it hands the previous tool back after one pick. A swatch-sized button on the colour row opens Chrome's screen-wide picker for everything outside the capture.
Resize / scale at export (50%, fixed width, …) ✅ shipped Landed in v0.7.0: 25/50/100/200% or an exact pixel width, hidden for PDF. Resamples the composed canvas through repeated halvings, and refuses sizes past Chrome's canvas limits instead of writing an empty file.
Drag & drop / paste any image into the editor ✅ shipped Landed in v1.1.0: drop an image on the stage or paste one anywhere outside a text field. An import takes the same seat a capture takes, so every tool, export path, and the beautify frame keep working, and the topbar reads Imported. It replaces the canvas, so it asks first whenever there are annotations to lose.
Cut tool: remove horizontal bands from a long capture ✅ shipped Landed in v1.5.0: mark one or more horizontal bands on a full-page capture and remove them with a live preview. Bands are stored as a list and applied at compose time, so cuts stay non-destructive and undo like every other edit.
Named Beautify presets ✅ shipped Landed in v1.5.0: one-click looks that set padding, corner radius, shadow, and background together, over the existing Beautify sliders. Picking a look and then adjusting a slider marks the look as adjusted rather than silently reverting it.
Adjustable crop handles, with undo ✅ shipped Landed in v1.5.0: eight resize handles on the crop rectangle, and applying a crop no longer clears the undo/redo stack.
Multi-select, duplicate, and arrow-key nudge ✅ shipped Landed in v1.5.0: shift-click to select more than one annotation, Alt+D to duplicate the selection, and arrow keys to nudge it (1px, 10px with a modifier). A multi-selection resizes from one shared bounding box.
Per-layer blur strength control ✅ shipped Landed in v1.5.0: a slider on the blur tool's style bar instead of a fixed strength, so soft blur can go lighter or heavier per layer.
Full keyboard operation and screen reader support ✅ shipped Landed in v1.5.0: a focusable canvas with keyboard layer cycling, placement, move, resize, and crop; live-region announcements for every mutation; roving tabindex on both toolbars; visible focus rings and 24×24 minimum target sizes; forced-colors and prefers-contrast support; and the editor's UI strings moved behind chrome.i18n.
Redesigned editor chrome ✅ shipped Landed in v1.5.0: a style bar that no longer reflows the canvas on every tool swap, a coral-themed range slider and canvas stage that adapt to light and dark, a consistent pressed state across every control, a grouped tool rail, and real loading and error states on export.
Rounded, oval, and triangle shapes, with a solid fill ✅ shipped Landed in v2.2.0: the Rectangle tool became Shape, with a picker for rectangle, rounded, oval, and triangle. Shift keeps width and height equal. Fill: None / Solid works on every shape.
Arrow tip styles and curved arrows ✅ shipped Landed in v2.2.0: filled, open, both-ends, and dot tips, and a middle handle that bends the shaft into a curve.
Reorder the tool rail ✅ shipped Landed in v2.2.0: drag rail tools to a new slot or in from More tools; Alt+Up/Down moves the focused tool. The order persists, and More tools offers a reset.
Stroke widths scaled to the capture ✅ shipped Landed in v2.2.0: presets multiply by the capture width over 2560, and a fourth 24px preset doubles the old maximum.

Screenshot workflows

Feature Status Notes
Readable long-page exports 🧭 exploring Splitting a page taller than one image landed in v2.4.0 (see Capture). Still to explore: an overview with selected detail crops, or sections sized for reading rather than the canvas limit.
Suggested redactions 🧭 exploring Locally highlight possible sensitive text, such as emails and phone numbers, for the user to review and confirm as solid redactions. Detection can miss information; never imply automatic privacy guarantees.
Combine screenshots 🧭 exploring Arrange existing captures vertically, side by side, or in a multi-page PDF with captions. Start with saved captures before adding automated batch capture.
Before-and-after comparison 🧭 exploring Choose two captures from history and compare them with a slider or highlighted differences. Useful for page changes, design reviews, and bug reports.
Optional source caption 🧭 exploring Add page title, URL, capture time, and viewport size to an export. Preview and remove sensitive URL parameters before sharing. Provides context, not proof of authenticity.
Create a visual guide 🧭 exploring Collect captures as steps, add short captions and numbered annotations, and export a clean document locally without an account.

Recording

Feature Status Notes
Screen recorder with auto zoom (record tab, zoom at clicks, webcam bubble, WebM export) ✅ shipped Landed in v1.2.0: tabCapture is an optional permission, requested once at first record, so there's no update warning. An offscreen document runs the capture engine and writes crash-safe 1 s chunks to IndexedDB. The editor (src/recorder/) plays the take on a timeline with automatic zoom at cursor clicks, manual zoom blocks, and per-segment trim, then re-renders the export through a canvas, mixing in mic and tab audio, click ripples, and an optional webcam bubble.
Auto-hiding control bar and a synthetic cursor overlay ✅ shipped Landed in v1.3.0: the recording control bar hides itself ~3s after the pointer leaves it, so it stays out of the video; moving the cursor to the bottom center of the page brings it back, and it always shows while paused or hovered. A "Show cursor" toggle in the editor's settings rail (on by default) draws a smooth synthetic pointer from the recorded cursor path, in both the preview and the WebM export, since tabCapture never records the OS cursor.
Two-click recording setup ✅ shipped Landed in v1.5.0: tabCapture is requested inline from the Record button on its first click, so a first recording takes two clicks instead of the old six-to-eight-click walkthrough. The setup page stays for the blocked-permission recovery case only.
Recorder undo, and a simplified rail ✅ shipped Landed in v1.5.0: undo/redo for the recording editor, in place of the one-way "Regenerate auto zoom" link that used to wipe every hand-placed zoom block with no confirm. The rail collapses Beautify behind one popover, merges "Show cursor" and "Click ripple", and moves "Add zoom" onto the timeline.
Recordings, reachable from the popup ✅ shipped Landed in v1.5.0: a Recordings link beside "Reopen last" in the popup footer opens the recorder's session list, which previously had no entry point anywhere. Each row shows the date, duration, file size, source, and which tracks (mic, tab audio, webcam) it holds.
Controls in their own tab: camera preview, part-of-tab recording, nothing in the video ✅ shipped Landed in v2.3.0: Record opens a control tab beside the page with a live camera view and a still of the page to draw the recorded area on. Start switches to the page; the timer and Stop stay in the control tab, so no control is ever captured. The whole tab is still recorded and the editor crops to the area.
MP4 export ✅ shipped Landed in v2.2.0: MediaRecorder writes H.264 + AAC MP4, now the default, with WebM beside it. Browsers without MP4 recording keep WebM.
Follow-cursor zoom mode 📋 planned A zoom that pans to track the cursor instead of sitting on fixed auto/manual blocks.
Platform size presets (YouTube, Shorts, square, …) 🧭 exploring Export at a target aspect ratio instead of the recorded tab's own.
Split-and-delete inside a segment 🧭 exploring Cut a segment in two on the timeline and drop the piece you don't want, rather than trimming from an end only.

Power features

Feature Status Notes
Crash-safe editor snapshot ✅ shipped Landed in v1.1.0: a debounced write of the annotation list and the beautify frame, plus a flush when the tab is hidden, keyed to the capture the coordinates were drawn on. A cropped image gets its own key so annotations never restore against the wrong picture. Restoring is always a click — a stale draft can never silently replace what you meant to start fresh.
Local OCR: copy text out of a screenshot 🧭 exploring Select an area and copy recognized text using local OCR. Evaluate engine and language-data size, accuracy, and startup cost; load only when needed. No screenshot data leaves the device.
Capture history shelf ✅ shipped Landed in v1.5.0: the last twelve captures instead of one, reopenable from the editor.
Searchable local history 🧭 exploring Search by page title or domain, rename captures, and pin important items to retain them in history. Explore searching extracted text once local OCR is available.
Pin a capture in a floating window ✅ shipped Landed in v1.5.0, via Document Picture-in-Picture — the only always-on-top surface Chrome offers. The pin closes with the tab that opened it.
Extra filename tokens ({domain}, …) ✅ shipped {domain} landed in v0.4.0. More tokens extend the same template engine.
Redact option for the MCP capture_screenshot tool ✅ shipped Landed in v2.5.0: redact on the MCP tool and --redact, --redact-pattern, --redact-rect on the CLI cover CSS selectors, built-in text patterns (email, phone, secret), and pixel rectangles with black boxes in the page before the screenshot. The capture fails with no image if a selector matches nothing or a target moves during the capture. Patterns can miss text; never imply automatic privacy guarantees.

Performance & polish

Feature Status Notes
Stitch compositing in a Web Worker (OffscreenCanvas) 🧭 exploring Keeps the UI responsive on very long full-page captures.
Prewarm the editor bundle during capture 🧭 exploring Makes the editor tab open near-instantly after a capture finishes.

Out of scope

Feature Why
Capturing desktop windows or the whole screen Needs the desktopCapture permission, which adds a "capture content of your screen" install warning and a Chrome picker on every shot. OpenScreenShot ships with empty host_permissions, and keeping it that way is worth more than the feature.

Recently shipped

Feature Version
Optional OpenScreenShot Cloud mode for the CLI and MCP v2.5.2
npx -y openscreenshot starts the MCP server v2.5.1
Redaction for CLI and MCP captures v2.5.0
Split very long pages into several images v2.4.0
Clear error for local files without file access v2.4.0
Controls in their own tab, with camera preview v2.3.0
Record part of a tab v2.3.0
Capture a page element v2.2.0
MP4 recording export v2.2.0
Save into a folder inside Downloads v2.2.0
Rounded, oval, and triangle shapes, with a solid fill v2.2.0
Arrow tip styles and curved arrows v2.2.0
Reorder the tool rail v2.2.0
Stroke widths scaled to the capture v2.2.0
Tabbed settings page with visual controls v2.2.0
Optional capture error reports v2.2.0
Full keyboard operation and screen reader support v1.5.0
Cut tool: remove horizontal bands from a long capture v1.5.0
Named Beautify presets v1.5.0
Adjustable crop handles, with undo v1.5.0
Multi-select, duplicate, and arrow-key nudge v1.5.0
Capture history shelf (twelve captures) v1.5.0
Pin a capture in a floating window v1.5.0
Per-layer blur strength control v1.5.0
Two-click recording setup v1.5.0
Recorder undo, and a simplified rail v1.5.0
Recordings, reachable from the popup v1.5.0
Redesigned editor chrome v1.5.0
Auto-hiding control bar and a synthetic cursor overlay v1.3.0
Screen recorder with auto zoom, webcam bubble, WebM export v1.2.0
Quick capture: straight to clipboard or disk v1.1.0
Eyedropper color picker (I), plus a screen-wide pick v1.1.0
Drag & drop or paste any image into the editor v1.1.0
Crash-safe editor drafts, restored on reopen v1.1.0
Beautify mode: padding, rounded corners, shadow, gradient v0.7.0
Resize / scale at export (25/50/100/200% or a width) v0.7.0
Delayed capture (3s / 5s / 10s timer) v0.6.1
Right-click context menu capture v0.6.1
Repeat last region v0.6.1
Solid and mosaic redaction modes on the blur tool v0.6.0
Spotlight tool (O) v0.6.0
Resize handles on every annotation type v0.6.0
Straight line tool (L) v0.5.0
Shift constraints: square rects, 45° lines and arrows v0.5.0
Number keys 1–8 set the annotation color v0.5.0
Double-click a text layer to re-edit it v0.5.0
{domain} filename token v0.4.0
Numbered step badges and the highlighter tool v0.3.0
Shortcut sheet in the editor, with Export bound to ⌘S v0.3.0
One zoom menu, with keyboard zoom controls v0.3.0
Named swatches, a custom colour, and recent colours v0.3.0
Undo, redo, and delete moved to the topbar v0.3.0
Style bar shown only when a control applies v0.3.0
Export dialog can save its settings as the new defaults v0.3.0
Clickable filename tokens with a live preview v0.3.0
Two-click reset to defaults in settings v0.3.0
One stable popup footer, and per-mode shortcut chips v0.3.0
Ko-fi donation links (README, site, popup footer) v0.2.7

Feature ideas updated September 21, 2026. Shipped-feature history reflects releases through v1.5.0.