Skip to content

Releases: SysAdminDoc/SwiftShot

SwiftShot v2.8.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 03 Jul 16:14

Audit-backlog drain: all 14 verified-but-deferred findings from the v2.7.0 deep audit are now fixed end-to-end, with regression tests (54 -> 75).

Editor — correctness

  • Rotate View no longer breaks mouse-to-image mapping; a shared view transform drives painting and coordinate mapping, and overlays follow it.
  • Semi-transparent brush/pen/shape strokes composite over the layer instead of punching a translucency hole.
  • Align panel aligns a layer's content bounding box (was a no-op that still cost an undo); already-aligned content records no undo.
  • Off-canvas expansion grows LayerGroups and the selection mask.
  • Clone stamp near an edge no longer paints transparent-black holes.
  • Quick Mask can be cancelled with Esc (restores the prior selection).
  • JPEG save asks quality once and mattes transparency onto white.

Editor — theming & performance

  • The editor honours the light theme.
  • Soft brush, healing and retouch are vectorized; content-aware fill shows a busy cursor.
  • Panel refreshes are coalesced; marching-ants idle when hidden.
  • Magnetic lasso previews the snapped edge between clicks.

Capture

  • Mouse-pointer capture renders the real cursor shape (I-beam/hand/resize) via DrawIconEx.
  • Scrolling capture fixes negative multi-monitor coordinates and over-trimming of repeating content.

Settings

  • The Frame tab (border/shadow/rounded) is wired to a post-capture step; the Obfuscate action honours the configured strength and mode.

Install: SwiftShot-Setup.exe (installer) or SwiftShot-Portable.exe (single file, no install).

SwiftShot v2.7.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 03 Jul 15:32

Deep audit release: ~50 verified fixes across correctness, data safety, UX, theming, accessibility and performance. Test suite grew from 34 to 54 tests.

Highlights

Capture

  • Freehand region capture masks to the drawn shape (it silently produced the bounding rectangle before), including timed captures
  • Per-monitor capture is correct under 125%/mixed DPI scaling
  • Timed-capture countdown is a small click-to-cancel badge that never steals focus (the old full-screen overlay blocked all interaction, defeating the feature)
  • GIF output format works; failed saves surface a tray warning; camera sound plays at capture completion

Hotkeys

  • Rebinding takes effect immediately - no restart
  • Digits, arrows, Tab, Insert, Delete, Home/End, PageUp/Down now actually fire when recorded (previously silently dead)
  • Duplicate shortcut assignments are rejected

Editor

  • Unsaved changes prompt on close; unhandled errors no longer terminate the app (crash log in %APPDATA%\SwiftShot)
  • Removed undeclared scipy dependency that crashed warp / magnetic lasso / Bevel & Emboss on first use in packaged builds
  • Undo preserves layer masks, effects and groups; Ctrl+S no longer overwrites a stale project after switching documents
  • Free Transform / Perspective dragging works; Quick Mask paints the mask, not the image; Motion Blur works at all sizes; vibrance ~1000x faster
  • Settings for default color / line width / font are wired; "Reuse existing editor window" works

Theming & accessibility

  • Capture history, monitor picker, scrolling capture, OCR result and context menus follow the light theme; borders visible on light surfaces
  • History thumbnails and monitor cards are keyboard-accessible; monitor picker accepts 1-9 / A

Reliability

  • Update notifications open the release page when clicked, plus a tray menu entry
  • Event-driven clipboard watcher (no polling, no same-size misses, ignores own copies)
  • Config values are type-validated; corrupt configs backed up and logged
  • Uninstaller asks before deleting settings and capture history

Full details in CHANGELOG.md.

Downloads

  • SwiftShot-Portable.exe - single file, no install
  • SwiftShot-Setup.exe - installer with Start Menu shortcut and uninstaller

v2.6.5

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 23 Feb 19:09

SwiftShot Editor Upgrade

Version License Platform Python

A Photoshop-inspired desktop image editor built with PyQt5 and Pillow. Single-file, dark-themed, auto-installs all dependencies on first run. 7,800+ lines covering tools, filters, adjustments, AI features, layer effects, and non-destructive editing — no installer or configuration required.


Quick Start

git clone https://github.com/SysAdminDoc/SwiftShot.git
cd SwiftShot
python editor.py

Windows: double-click launch.bat
First run: dependencies install automatically (PyQt5, Pillow, numpy, scipy)


Screenshots

Dark theme · Photoshop-style layout · Rulers · Histogram · Navigator · Layer effects stack


Tools

Selection Tools (M)

Tool Description
Rectangular Marquee Standard rect selection with feather + AA
Elliptical Marquee Ellipse selection with anti-aliasing
Lasso Freehand polygon selection
Magnetic Lasso Edge-snapping lasso using Sobel edge detection — click to place anchors, Enter/Ctrl+Click to close
Magic Wand Tolerance-based flood fill selection
Select by Color Global color selection across entire image

Architecture

editor.py  (~7,800 lines, single-file)
│
├── Bootstrap            auto-installs all dependencies on first run
├── Color system         Photoshop dark palette (C class)
├── QSS stylesheet       ~300 lines, pixel-perfect dark theme
├── SVG icon dict        32+ tool icons via QSvgRenderer
│
├── Data model
│   ├── Layer            RGBA image + mask + effects + blend mode
│   └── LayerGroup       composite of child layers (live image property)
│
├── Widgets
│   ├── CanvasWidget         drawing, selection, transform, overlays, guides
│   ├── LayerPanel           layer stack, fx button, group/mask controls
│   ├── ChannelsPanel        R/G/B/A thumbnails + visibility toggles
│   ├── PathsPanel           saved paths — stroke, fill, to selection
│   ├── FxDialog             non-destructive layer effects editor
│   ├── OptionsBar           context-sensitive tool options bar
│   ├── PropertiesPanel      tool settings (brush hardness, pen flow…)
│   ├── ColorPanel           HSV sliders + hex + swatches
│   ├── HistogramWidget      live channel histogram
│   ├── NavigatorPanel       thumbnail + viewport + zoom
│   ├── HistoryPanel         undo stack display
│   ├── AlignPanel           canvas alignment
│   ├── RulerWidget          pixel rulers
│   └── CommandPaletteDialog Ctrl+K fuzzy command search
│
└── ImageEditor (QMainWindow)
    ├── 35+ tools            brush, clone, magnetic lasso, red eye…
    ├── 14 adjustments       curves, levels, vibrance, color balance…
    ├── 18 filters           oil paint, halftone, tilt shift, CA…
    ├── 7 layer effects      drop shadow, glow, bevel, overlays, stroke
    ├── AI tools             rembg, upscale, depth, detect, inpaint
    └── File I/O             open, save, export, .swiftshot project

Known Limitations

  • Compositing recomputes the full layer stack on every paint event — performance degrades with many layers or large (4K+) images
  • Text is rasterized on placement; double-click to re-edit is not yet supported
  • PSD import/export is not implemented
  • Layer effects are not batch-copyable between layers
  • Paths panel does not persist to .swiftshot format yet
  • No ICC color profile support

FAQ

First launch is slow?
It's installing dependencies. Subsequent launches are instant.

AI background removal says "Installing rembg..."?
rembg and its ONNX runtime are being installed (~500MB total with the u2net model). This happens once and is cached locally.

Content-Aware Fill looks patchy on large selections?
The patch-match implementation samples 20 random candidates per pixel. It works well for small regions and textured backgrounds. For large solid areas, try selecting a smaller region or using the Clone Stamp.

Can I build on macOS or Linux?
Yes — pyinstaller editor.py --onefile --windowed works on all platforms. The .ps1 build scripts are Windows-specific.

What is a .swiftshot file?
A renamed zip archive. You can open it with any zip tool to access the individual layer PNGs and meta.json project file.


License

MIT — see LICENSE


Contributing

Issues and pull requests welcome at github.com/SysAdminDoc/SwiftShot

# SwiftShot Editor

Version
License
Platform
Python

A Photoshop-inspired desktop image editor built with PyQt5 and Pillow. Single-file, dark-themed, auto-installs all dependencies on first run. 7,800+ lines covering tools, filters, adjustments, AI features, layer effects, and non-destructive editing — no installer or configuration required.


Quick Start

git clone https://github.com/SysAdminDoc/SwiftShot.git
cd SwiftShot
python editor.py

Windows: double-click launch.bat
First run: dependencies install automatically (PyQt5, Pillow, numpy, scipy)


Screenshots

Dark theme · Photoshop-style layout · Rulers · Histogram · Navigator · Layer effects stack


Tools

Selection Tools (M)

Tool Description
Rectangular Marquee Standard rect selection with feather + AA
Elliptical Marquee Ellipse selection with anti-aliasing
Lasso Freehand polygon selection
Magnetic Lasso Edge-snapping lasso using Sobel edge detection — click to place anchors, Enter/Ctrl+Click to close
Magic Wand Tolerance-based flood fill selection
Select by Color Global color selection across entire image

All selection tools share four combination modes — New / Add / Subtract / Intersect — accessible via the options bar or Edit → Modify Selection. Per-tool feather (0–200px) and anti-aliasing are available in the options bar.

Quick Mask mode (Q) — enter to paint selections as a red rubylith overlay using any brush; exit to convert the mask back to a selection.

Paint Tools (B)

Brush · Pencil · Spray/Airbrush — all support size, opacity, hardness, and an Off-Canvas Painting option that automatically expands the canvas when strokes go past the image edge.

Retouching (S)

Clone Stamp · Healing Brush · Red Eye Removal — click a red-eye region to desaturate and darken it automatically.

Other Tools

Tool Key Description
Move V Move active layer
Crop C Interactive crop with overlay + ratio lock
Measure C flyout Distance and angle ruler
Eraser E Alpha-channel erase
Dodge / Burn / Sponge / Smudge Non-destructive tonal tools
Pen P Smooth strokes with flow + smoothing
Gradient G Linear and radial gradients
Fill Bucket G flyout Flood fill with tolerance
Pattern Fill G flyout Checkerboard, stripes, dots, grid
Shapes R Rect · Ellipse · Line · Arrow · Triangle · Polygon · Star
Text T Click-to-place with font/size picker
Eyedropper I Pick color from canvas
Sticky Note N Click-to-place annotation
Pan H Middle-click or Alt+drag anywhere
Zoom H flyout Zoom in / out

Layers

  • Unlimited layers with drag-and-drop reorder
  • 10 blend modes: Normal, Multiply, Screen, Overlay, Darken, Lighten, Difference, Color Dodge, Color Burn, Hard Light
  • Per-layer opacity and lock/visibility toggles
  • Layer Masks — white/black mask, paint to reveal/hide, apply or delete, rubylith preview while painting
  • Layer Groups — select 2+ layers, press G (or Ctrl+G) to group; double-click a group to expand/collapse; Ctrl+Shift+G to ungroup
  • Multi-select — Ctrl+Click / Shift+Click multiple layers for bulk operations and grouping
  • Layer drag-and-drop reorder within the list

Layer Effects (non-destructive)

Click the fx button in the layer panel to open the effects stack. Effects are applied live during compositing and saved with the project.

Effect Controls
Drop Shadow Distance, blur, angle, opacity, color
Outer Glow Blur, spread, opacity, color
Inner Glow Blur, opacity, color
Bevel & Emboss Depth, size, angle, highlight color, shadow color
Color Overlay Opacity, color
Gradient Overlay Two color stops, angle, opacity
Stroke Size, position (inside/outside/center), opacity, color

Multiple effects can be stacked on the same layer. Each effect has an enable/disable toggle. Canceling the dialog restores the original stack.


Panels

| Panel | Descrip...

Read more

v1.1.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 07 Feb 09:51
Add files via upload