Ctrl+Z undoes, Ctrl+Y and Ctrl+Shift+Z redo, caught in the capture phase so a focused entry or spin never undoes only its own text; both are in the header-bar menu too. The history keeps whole snapshots of the project (currentProject() plus the immutable source list itself, so stepping back never decodes again), compared by their JSON. requestRender() notes every edit, and a step is committed once the controls have been still for half a second. New and Open start the history over once the project's images are in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
216 lines
9.8 KiB
Markdown
216 lines
9.8 KiB
Markdown
# Changelog
|
||
|
||
Every release of Effector, newest first. The version lives in one place, the
|
||
`project()` line of `CMakeLists.txt`, and each release is a `vX.Y.Z` tag on the
|
||
commit that made it. The interface shows this file under Changelog in its menu.
|
||
|
||
## [0.8.1] - 2026-09-26
|
||
|
||
### Added
|
||
- The Font of a text stage (and of a text style) is picked from the fonts
|
||
installed on this machine with a font chooser, rather than typed by name.
|
||
The command line still takes any family, as `--font-family "DejaVu Serif"`.
|
||
- Undo and redo: Ctrl+Z steps back through the edits to the project (the
|
||
chain, params, styles, canvas, video settings, seed and images), and Ctrl+Y
|
||
or Ctrl+Shift+Z steps forward again; both are in the menu as well. A burst
|
||
of edits, like a spin held down or a word typed, is one step.
|
||
|
||
## [0.8.0] - 2026-09-26
|
||
|
||
### Added
|
||
- Tile swap, a video effect: tiles cut from the photographs are laid over the
|
||
canvas as Tiles lays them, and each one is swapped for another cut at a
|
||
moment of its own, so the mosaic keeps changing piece by piece. On the
|
||
command line it is `-e tileswap` with `--tileswap-rate`,
|
||
`--tileswap-layout` and the rest.
|
||
- Echo tunnel, a video effect: the picture nested inside itself as Feedback
|
||
nests it, flying into the echoes (or backing out of them) without end, a
|
||
new echo fading in at the far end as the nearest melts into the picture.
|
||
On the command line it is `-e tunnel` with `--tunnel-speed`,
|
||
`--tunnel-scale`, `--tunnel-direction` and the rest.
|
||
- Warp flow, a video effect: the picture pushed or swirled through a field
|
||
of noise as Warp does, with the field drifting so the picture ripples like
|
||
heat haze or water. On the command line it is `-e flow` with
|
||
`--flow-strength`, `--flow-travel`, `--flow-speed` and the rest.
|
||
- Sort sweep, a video effect: runs of pixels sorted as Pixel sort sorts
|
||
them, only within a window of brightness that sweeps from dark to bright
|
||
and back, so the streaks spread over one part of the picture after
|
||
another. On the command line it is `-e sweep` with `--sweep-from`,
|
||
`--sweep-to`, `--sweep-width`, `--sweep-speed` and the rest.
|
||
- Film gate, a video effect: film running through a projector, with grain
|
||
drawn anew on every frame as Film grain draws it, the picture swaying in
|
||
the gate, flicker, dust and scratches. On the command line it is
|
||
`-e filmgate` with `--gate-grain`, `--gate-weave`, `--gate-flicker`,
|
||
`--gate-dust` and `--gate-scratches`.
|
||
- Datamosh, a video effect: blocks of the picture break as Corrupt breaks
|
||
them, each for a stretch of the clip before it heals, and a displaced
|
||
block's picture smears along while it shows. On the command line it is
|
||
`-e datamosh` with `--mosh-rate`, `--mosh-hold`, `--mosh-drift`,
|
||
`--mosh-speed` and the rest.
|
||
- Strip roll, a video effect: the canvas cut into strips of the photographs
|
||
as Scanlines cuts it, and the picture in every strip rolling up or down
|
||
through its image, or sliding sideways, while the strips stay put. On the
|
||
command line it is `-e striproll` with `--roll-speed`, `--roll-axis`,
|
||
`--roll-direction` and the rest.
|
||
- Focus pull, a video effect: a lens being focused, either the whole
|
||
picture blurring as Blur blurs it and coming back sharp, or a band of
|
||
sharpness moving down the picture and back up. On the command line it is
|
||
`-e focuspull` with `--focus-mode`, `--focus-radius`, `--focus-band` and
|
||
`--focus-speed`.
|
||
- A Quality choice under Video on Setup: Small file, Standard or High, for
|
||
how the saved video is encoded. It is kept in the project, and on the
|
||
command line it is `--video-quality small|standard|high`. Standard writes
|
||
videos exactly as before.
|
||
|
||
### Changed
|
||
- Loading images shows its first pass too: the progress window counts the
|
||
files as their sizes are checked ("Checking sizes: 3 of 40") before it
|
||
counts the decodes, the headers are read in parallel, and Cancel works
|
||
during that pass as well. The command line shows a `sizing` line likewise.
|
||
- The video preview plays sooner: it renders every third frame first and
|
||
plays that draft, each frame held for three, then fills in the frames
|
||
between while it plays. The finished preview and the saved video are
|
||
unchanged.
|
||
- Save opens in the project's folder, and after the first save it offers the
|
||
last saved file's name with a number counted on (`city.png`, then
|
||
`city-1.png`, `city-2.png`), skipping names already taken.
|
||
- The Add effect menu gives the video effects more room before their list
|
||
scrolls, now that there are more of them.
|
||
|
||
## [0.7.0] - 2026-09-26
|
||
|
||
### Added
|
||
- Effects are image effects or video effects. The Add effect menu lists them
|
||
in two sections, each under its own heading, and offers video effects only
|
||
in a video project. In the chain a video stage has a film icon, and in a
|
||
still it is dimmed and skipped, like a stage that is switched off.
|
||
- VHS tracking, the first video effect: the colour planes sway and shake, and
|
||
a tracking bar rolls down the picture. On the command line it is
|
||
`-e tracking` with `--tracking-wobble`, `--tracking-jitter`, `--tracking-bar`
|
||
and the rest.
|
||
- `--help` lists the video effects under a heading of their own, and
|
||
`--list-effects` marks them. A video effect given for a still is skipped
|
||
with a warning.
|
||
|
||
### Changed
|
||
- Channel split is an image effect again. Its motion (Wobble, Jitter, Tracking
|
||
bar) has moved to VHS tracking, so a 0.6 video project that moved its channel
|
||
split needs a VHS tracking stage after it. Stills are unchanged.
|
||
|
||
## [0.6.1] - 2026-09-26
|
||
|
||
### Fixed
|
||
- Opening a project whose images would not fit in memory no longer gets
|
||
Effector killed by the system. The images are measured before any is read,
|
||
and a batch that would not fit is refused with a message saying how much it
|
||
needs; the images stay in the project, so saving it keeps them.
|
||
- A canvas too large to render in the free memory is refused the same way,
|
||
in the interface and on the command line, instead of taking the machine's
|
||
memory down with it.
|
||
|
||
## [0.6.0] - 2026-09-26
|
||
|
||
### Added
|
||
- Video projects: switch Video on under Setup and give the clip a length and a
|
||
frame rate, or pick a preset that sets the canvas too: Instagram story,
|
||
Instagram reel, Instagram feed video, TikTok / YouTube Short, Square loop and
|
||
Full HD clip. The preview renders the clip and loops it, with play/pause and
|
||
a scale to look at any one frame.
|
||
- Save As… writes a video project as `.mp4`, `.mov`, `.mkv`, `.webm` or `.gif`
|
||
through `ffmpeg`, with a progress window that can cancel it.
|
||
- Channel split moves in a video: its channels sway, shake from frame to frame
|
||
and a tracking bar rolls down the picture, like an old tape on a tube. The
|
||
new Wobble, Jitter and Tracking bar settings show only in a video, and a
|
||
still renders exactly as before.
|
||
- `--duration`, `--fps` and `--video-preset` render a video from the command
|
||
line.
|
||
- A Vertical Full HD canvas format, 1080 × 1920.
|
||
|
||
## [0.5.3] - 2026-09-26
|
||
|
||
### Added
|
||
- Effector has its own icon, an E split into its colour channels, in the app
|
||
menu, the dock and About Effector; a one-colour version goes with it for
|
||
panels.
|
||
|
||
## [0.5.2] - 2026-09-26
|
||
|
||
### Changed
|
||
- Effector is free software under the GNU General Public License, version 3
|
||
or later; the `LICENSE` file holds the text, and About Effector says so.
|
||
|
||
## [0.5.1] - 2026-09-26
|
||
|
||
### Added
|
||
- An Arch Linux `PKGBUILD` in `packaging/arch`: `makepkg -si` there builds and
|
||
installs the tagged release with pacman.
|
||
- A desktop entry, so an installed Effector shows up in the app menu.
|
||
|
||
## [0.5.0] - 2026-09-26
|
||
|
||
### Added
|
||
- A version number: `effector --version` prints it, and About Effector in the
|
||
menu shows it.
|
||
- This changelog, readable from the interface under Changelog in the menu.
|
||
- Open Recent in the project menu, listing the projects opened or saved here.
|
||
- An optional shadow or glow under the image overlay, with an offset, size,
|
||
spread, colour and opacity.
|
||
- Reordering the chain by dragging a row.
|
||
|
||
### Fixed
|
||
- The params' scrollbar no longer covers the spin buttons.
|
||
|
||
## [0.4.0] - 2026-09-23
|
||
|
||
### Added
|
||
- Eight chaotic effects: slit shift, channel split, pixel sort, corruption,
|
||
shatter, warp, bit crush and feedback. None needs sources, so any of them can
|
||
lead a chain.
|
||
- The sidebar split into Chain and Setup tabs.
|
||
- A rotation for the text effect's placement.
|
||
- Text stages labelled in the chain list with their words.
|
||
|
||
### Changed
|
||
- The preview stays centred however long the status line gets.
|
||
- The status line stays short, with the full chain and setup in its tooltip.
|
||
- The chain/params split fits the chain's rows until it is dragged; a
|
||
double-click on the handle fits it again.
|
||
- The mouse wheel scrolls past spin buttons that do not have the focus.
|
||
|
||
## [0.3.0] - 2026-09-19
|
||
|
||
### Added
|
||
- Named styles: several text stages can share one font and colour, and editing
|
||
the style moves every stage that follows it.
|
||
- Switching a chain stage off without taking it apart, in the interface and
|
||
with `--disable NAME` on the command line.
|
||
|
||
### Changed
|
||
- The interface opens on an empty chain, and shows the sources only when the
|
||
chain uses them.
|
||
|
||
## [0.2.0] - 2026-09-18
|
||
|
||
### Added
|
||
- Effect chains: stages cascade, each handed the previous one's output, built in
|
||
the sidebar or with repeated `-e`.
|
||
- Blur, film grain, black and white, image overlay, text and tiles effects.
|
||
- Projects saved and opened as plain JSON.
|
||
- Standard web and print canvas formats (`--format`, `--dpi`).
|
||
- Effects declare whether they need source images, so a chain led by blur
|
||
renders with none loaded.
|
||
|
||
### Changed
|
||
- The chain comes first in the sidebar.
|
||
|
||
### Fixed
|
||
- The canvas size is checked before it is narrowed to an int.
|
||
- Projects are written and read in the C locale, and keep the seed whole.
|
||
|
||
## [0.1.0] - 2026-09-18
|
||
|
||
### Added
|
||
- The C++20 port of the Python prototype: a GTK 4 interface and a headless
|
||
command line over pluggable effects, starting with scanlines.
|
||
- Source images load in the background, with a progress window and Cancel.
|