Give Effector a version and a changelog, shown from the menu

The version is the project() line of CMakeLists.txt and nowhere else:
CMake writes it, with the text of CHANGELOG.md, into a generated
core/version.hpp, so the number and the release notes the binary shows
are the ones it was built from. effector --version (-V) prints it, and
the header-bar menu gains a section with Changelog, a window laying the
Markdown out as headings and bullets, and About Effector.

The core tests hold the newest changelog entry to the current version,
so a bump cannot go in without its notes. Releases are tagged vX.Y.Z;
this is 0.5.0, and the changelog reconstructs 0.1.0-0.4.0 from the
history.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Si
2026-09-26 10:14:43 +02:00
co-authored by Claude Opus 5.5
parent 431fcf9c58
commit b9f905e04c
12 changed files with 350 additions and 2 deletions
+73
View File
@@ -0,0 +1,73 @@
# 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.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.