Releases: junebug12851/pokered-save-editor-2
Pokered Save Editor v0.14.2-alpha
Pokered Save Editor v0.14.2-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-22 -- Tests: QSignalSpy signal/slot suite (tst_signals)
New tests/savefile/tst_signals.cpp — the suite's first dedicated signal/slot coverage. The rest of
the suite asserts VALUES; this asserts the notification layer every QML binding depends on: that
mutating a fragment emits exactly the right change signal (correct count, and that bound-clamped no-ops
still honor their always-emit contract), and that the internal connect() wiring actually fires —
verified by spying the DOWNSTREAM signal (PokemonMove ppUpChanged/ppChanged → ppCapChanged). Also
covers PlayerBasics (badgeSet, the targeted randomizers emit exactly one signal, reset() fans out to
every field signal). 9 cases, guiless. Full ctest 68/68 green. (Test-only; no VERSION change. Broader
model dataChanged/layoutChanged emission is covered structurally by the QAbstractItemModelTester pass.)
2026-06-22 -- Fix: new move slots start with 0 PP-Ups (the dead-store, confirmed intended)
Follow-up to the static-analysis pass. The PokemonMove constructor, when filling an empty slot
(move == 0), calls randomize() — which assigns a random 0-3 PP-Ups — and was meant to then reset
that to 0 so a brand-new move starts clean. The original ppUp = 0 assigned the constructor PARAMETER
(which shadows the member), so it was a no-op and new moves silently kept a random PP-Up count. Now writes
this->ppUp = 0. Scoped to move construction only — the deliberate "randomize everything" actions are
unaffected. Confirmed intended with Twilight. Full ctest green. VERSION 0.14.1-alpha → 0.14.2-alpha (PATCH).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.14.1-alpha...v0.14.2-alpha
Pokered Save Editor v0.14.1-alpha
Pokered Save Editor v0.14.1-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-22 -- Static-analysis gate (clang-tidy + cppcheck + qmllint) + 8 analyzer bug fixes
Added the project's missing static-analysis / linting layer. New repo-root .clang-tidy (a curated,
DEFECT-focused check set — clang static analyzer + the high-signal bugprone/performance/unused checks, with
the noisy/style families and three deliberate-project-idiom checks documented-OFF), .cppcheck-suppressions,
scripts/lint.ps1 + scripts/lint.sh (run clang-tidy over build/compile_commands.json, cppcheck if
present, and qmllint — qmllint is informational-only because it can't resolve the project's
C++-registered QML types under the no-qt_add_qml_module design; cppcheck is informational too until a
validation pass), and a lint GitHub Actions workflow. CMAKE_EXPORT_COMPILE_COMMANDS is now forced ON.
clang-tidy runs file-parallel (a serial sweep of ~140 Qt TUs is ~25 min on a 2-core runner) and the
gate is clean (143 TUs, 0 findings).
Running it surfaced real defects, now fixed: PokemonBox::expLevelRangePercent() did integer division
(curExp / expEnd, both var32) before widening to its float return — the fractional percent was always
truncated to 0 until the very top of a level (fixed to float division + a divide-by-zero guard;
regression-guarded by a new mid-window assertion in tst_pokemonbox); an unguarded toType1->ind deref
in PokemonBox::update()'s type2 else-branch (now guarded, matching the type1 path); a dead store in
PokemonMove's ctor (ppUp = 0 assigned the shadowing parameter, a no-op — removed); a signed/unsigned
char compare in PokemonStorageSet; an int-multiply widening in WorldScripts::reset(); plus cheap
const-ref loop fixes (fontpreviewprovider, eventdbentry, scripts, spriteSet) and a missing switch default
in PokedexModel. One latent finding is suppressed + flagged for review: ~ItemMarketEntry() can call
the pure-virtual _whichType() (UB) on the unusual path where whichType() was never cached during the
object's life — a lifetime refactor of that UAF-historied area, deferred to Twilight. Full ctest 67/67
green. See notes/plans/testing.md → "Static analysis / linting". VERSION 0.14.0-alpha → 0.14.1-alpha (PATCH).
2026-06-17 -- Editor: confirm destructive ops, status badge, evo gating, 3-digit level
Informed-consent + glance polish on the Pokémon editor. New reusable
fragments/general/ConfirmPopup.qml (centered alert modal — title, body, Cancel/Confirm — matching the
storage "Boxes Formatted" warn) with ask(title, body, action, label). One shared popup is threaded
(confirmAsk) PokemonDetails → DetailsPages → MovesTab → PokemonMoveSel, so every destructive action
now confirms first: whole-mon Re-Roll, Reset, Max Out, Correct Data, Evolve /
De-Evolve, the move bulk ops (clear-all-but-first, re-roll all, make all valid), and per-move
Delete / Validate. Non-destructive / individual-field actions (Heal, per-move randomize, per-field
re-rolls) are unchanged. The Evolution group is hidden entirely when the species can neither evolve nor
de-evolve, and each arrow stays disabled when that direction isn't possible. The GlancePane sprite now shows
a status-condition badge (sleep / poison / burn / freeze / paralyze) in its upper-right when afflicted
(same decode + assets as the storage grid), and the level field fits 3 digits ("100"). QML-only;
tst_qml_screens + tst_gui_moves + full ctest (67/67) green; screenshot-verified. VERSION 0.13.1-alpha
→ 0.14.0-alpha (MINOR — a notable UX/safety feature set).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.13.1-alpha...v0.14.1-alpha
Pokered Save Editor v0.13.1-alpha
Pokered Save Editor v0.13.1-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- Editor actions: move them into the tab HEADER bar (not the Moves tab)
Follow-up to the previous entry: the mon-wide action groups (Data [Reset | Max Out | Correct Data] and
Evolution [← fish →]) moved OUT of the Moves-tab body and INTO the DetailsPages header (accent) bar,
right of the General / DV-EV / Moves tabs — so they're visible on every tab, which is the right home for
mon-wide actions. Styled light for the accent bar via a new HdrBtn (light icon + light hover wash +
light divider), light-bordered groups; the fish centrepiece is a non-interactive Button icon so it
tints light reliably. QML-only; tst_qml_screens + tst_gui_moves + full ctest (67/67) green;
screenshot-verified. VERSION 0.13.0-alpha → 0.13.1-alpha (PATCH).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.13.0-alpha...v0.13.1-alpha
Pokered Save Editor v0.13.0-alpha
Pokered Save Editor v0.13.0-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- Pokémon editor: wider preview, Moves-tab actions section (replaces the Toolkit button)
Bundle of editor changes (Twilight's spec). The preview pane (GlancePane: sprite + stats) is ~10%
wider — the PokemonDetails split went 62/38 → 58/42. Validate no longer leaves a gap: the per-move
validate now calls a new PokemonBox::correctMoveAt(ind) that runs correctMove() (which can clear a
duplicate/invalid move) and then compacts the list so the later moves slide up — no hole. The old
footer Toolkit menu (Max Out / Correct Data / Reset / Evolve / De-Evolve) is gone; its actions
moved into a new actions section below the move rows in the Moves tab: a Data group [Reset · Max Out ·
Correct Data] (icons down-left-and-up-right-to-center = reset, up-right-and-down-left-from-center =
max out, file-circle-check = correct) and an Evolution control [← fish →] (de-evolve / evolve arrows
flanking the FA fish). The footer is now Re-Roll + Heal (AppFooterBtn3 → AppFooterBtn2). New icons
downloaded + added to app.qrc (FA already credited). New test box_correctMoveAtCompacts; full ctest
(67/67) green; screenshot-verified. VERSION 0.12.5-alpha → 0.13.0-alpha (MINOR — a feature + a screen
restructure).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.12.5-alpha...v0.13.0-alpha
Pokered Save Editor v0.12.5-alpha
Pokered Save Editor v0.12.5-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- Moves tab: aspect-correct (un-squished) action icons, even buttons
The action icons were squished — forced into 18×18 when their FA viewBoxes differ (dice 640×512,
file-circle-check 576×512, trash-alt 448×512). Now each is sized to its own aspect at a common height
(dice 22×18, file 20×18, trash 16×18) so the glyphs aren't compressed (the dice especially reads wider),
and each button carries a uniform Layout.preferredWidth: 36 so the group stays even and lines up with
the top bar. Applied to both the per-row reveal and the top-bar bulk group. QML-only; full ctest
(67/67) green; screenshot-verified. VERSION 0.12.4-alpha → 0.12.5-alpha (PATCH).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.12.4-alpha...v0.12.5-alpha
Pokered Save Editor v0.12.4-alpha
Pokered Save Editor v0.12.4-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- Moves tab: align the reveal tool group with the top bar, drop the panel edge
Small alignment/polish on the row tool reveal: the slid-in tool group's rightMargin now matches the top
bar's (10), so the per-row [validate | random | delete] buttons line up in the same columns as the
top-bar bulk buttons above them (they were ~6px off). Removed the panel's hairline left edge/border
effect — the slid-in panel is now just the plain row-coloured backing hiding the value box. QML-only;
tst_gui_moves + tst_qml_screens + full ctest (67/67) green; revealed state screenshot-verified.
VERSION 0.12.3-alpha → 0.12.4-alpha (PATCH).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.12.3-alpha...v0.12.4-alpha
Pokered Save Editor v0.12.3-alpha
Pokered Save Editor v0.12.3-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- Moves tab: tool-reveal restyle to match the top bar + file-circle-check
Another polish round on the row tool reveal. The slid-in panel no longer uses a solid accent surface
with big stretched (fillWidth) light icons — that read out of place and the leftmost button was wider
than the rest. It now uses the row colour as the backing (it just hides the value box behind it, with
a hairline left edge) and the tools are the exact same bordered icon group as the tab's top bar
(dark icons, even SegBtn widths) so they look native. Validate is now the file-circle-check
FontAwesome-free icon (downloaded + added to app.qrc; FA already credited) on BOTH the per-row reveal
and the top bar. Reordered to a consistent validate · random · destructive across both: the per-row
group is validate / random / delete and the top bar is validate / random / clear-all. QML-only + 1 asset;
tst_gui_moves + tst_qml_screens + full ctest (67/67) green; rest + revealed states
screenshot-verified. VERSION 0.12.2-alpha → 0.12.3-alpha (PATCH).
2026-06-17 -- Moves tab: tool-reveal polish (handle + full-cover accent panel, icon fixes)
Polish on the Moves-tab row tools from review. The hover reveal used to only PARTLY cover the value box
(and covered it from a whole-row hover); now a small chevron handle (angle-left) sits in a reserved
right-edge lane — the value box stays fully visible/editable at rest — and hovering the handle (or the
panel) slides in a SOLID accent-colored tool panel that completely covers the value cluster, with
light (white) icons, reading clearly as a revealed tool collection. Icon fixes for consistency: the
top-bar clear-all-but-first is now a trash (trash-alt, matching the per-row delete) instead of a
broom; make-valid (per-row + top-bar) is now a wand (magic) instead of check-double, which is
already the select-all icon. Still an overlay over a clipped row, so no reflow. QML-only;
tst_gui_moves + tst_qml_screens + full ctest (67/67) green; rest + revealed states
screenshot-verified. VERSION 0.12.1-alpha → 0.12.2-alpha (PATCH).
2026-06-17 -- Moves tab: fix PP/PP-Up desync, hover-reveal row actions, GUI tests
Fixes from in-app review of the Moves tab. The PP / PP-Ups views were desyncing — flipping between
them (or hitting "max") could mix the two fields. Root cause: one shared text box wrote pp or ppUp
depending on the view, and the maximumLength flip on toggle truncated the text into a cross-field
write. Fixed by construction: two independent text boxes (one per view, each bound to and writing
ONLY its own field), swapped by a StackLayout. The row action buttons (randomize / make-valid /
delete) now slide in from the right on hover (an overlay over an opaque row-matched backing — never
reflows the row; the row is clipped so they're hidden at rest), reclaiming the row real-estate the user
wanted. Dropped the min/reset arrow (kept only the →| max). Added a dedicated tst_gui_moves GUI
suite that drives the live editor: toggling the view never mutates data, the PP/PP-Up boxes are
independent + write through, and model changes reflect in the right box — plus a model-level
move_ppAndPpUpIndependent test. Full ctest 67/67 green (the new GUI test included); both views +
the hover reveal screenshot-verified. VERSION 0.12.0-alpha → 0.12.1-alpha (PATCH).
2026-06-17 -- Moves tab: PP / PP-Ups dual view, per-move actions, bulk top bar
Big functional pass on the Moves tab (Twilight's spec). Fixed-width columns (type chip 58px, PP
editor, actions) so move name + type no longer jitter row-to-row. A tab-level PP / PP-Ups segmented
toggle (top bar) flips what every row's editable box edits: current/max PP, or current/max PP-Ups
(max 3, typeable) — one view for the whole tab, so it stays consistent as moves are dragged. Each row's
value box is flanked by the arrow-to-line |← / →| buttons (set to min 0 / max cap), reusing the
DV/EV icons. The ⋮ overflow menu is gone; in its place a per-move connected action group —
randomize this move (dice), make valid (check-double), delete (trash). Delete compacts the
list (no gaps; later moves slide up) via new PokemonBox::deleteMoveAt(). A top bar carries the view
toggle plus three bulk actions: clear-all-but-first (broom → new clearMovesButFirst()), randomize
all (dice), make all valid (check-double). All icons already in the FA set + qrc (no downloads).
New tests box_deleteMoveAndClearButFirst; tst_qml_screens + full ctest (66/66) green, both views
screenshot-verified. VERSION 0.11.0-alpha → 0.12.0-alpha (MINOR — a substantial feature set).
2026-06-17 -- Moves tab: fix empty/blank rows from in-app review (id collision, layout, combo sync)
Follow-up to the Moves-tab redesign — in-app review showed the tab rendering empty, which a
zero-warning screen-load test can't catch (it only checks for QML warnings, not that rows are visible).
Three distinct bugs, found with the headless screenshooter:
- Rows collapsed to zero width — the panel used a plain
Columnwithanchors.left/rightand
delegates bound towidth: rowsCol.width; aColumnsizes its width FROM its children, so that's
circular and collapses to 0. Switched to aColumnLayoutwithLayout.fillWidth(mirrors OverviewTab). monMovealways null in every row —MovesTabandPokemonMoveSelBOTH usedid: top, and inside
the Repeater delegate the inner (PokemonMoveSel)topshadowed the root, sotop.boxDataresolved to
PokemonMoveSel's own nullboxData. Renamed the MovesTab root id tomovesTab.- Combo showed the wrong move name (right type/PP, wrong name) —
brg.moveSelectModelis per-mon and
rebuilt async (PokemonDetails.onCompleted →monFromBoxswitches it to this mon's specific list), so
syncingcurrentIndexinline computed against the wrong model state. Consolidated the sync into a
Qt.callLater-deferredsyncMoveCombo()that runs after the model settles.
Also inlined the row height as a delegate-local constant (readingtop.rowHthrough the root from a
delegate went [undefined] transiently and zero-collapsed the row). Verified by rendering the editor's
Moves tab (Ember / Mega Punch / Flamethrower / Earthquake, correct types + PP).tst_qml_screens,
tst_gui_fidelity, fullctest(66/66) green. QML-only; VERSION unchanged (0.11.0-alpha, unreleased).
2026-06-17 -- Pokémon details "Moves" tab: style-language redesign + drag-to-reorder
Brought the Moves tab up to the General/DV-EV style language and made moves reorderable by drag.
The four type-colored pills became zebra rows in one white grouped panel (scrollbar-lane reserved); each
filled row keeps its type identity via a colored left accent strip + a faint type chip, with the move
combo / PP field / / maxPP / ⋮ overflow menu inline (every prior action preserved — PP-Up submenu,
per-move restore/re-roll/correct, All-Moves bulk ops). A left grip handle (filled rows only — empties
stay parked at the bottom per game move-list compaction) drags a row to reorder: the row content reparents
to the window overlay so the ghost floats free, a dashed insertion caret marks the drop slot (top edge =
before, bottom = after, so the lower half of the last move appends), and the mutation is deferred a tick —
the same mechanics as the Bag list drag. Backed by a new PokemonBox::reorderMove(from, to) (Q_INVOKABLE)
that anchor-splices the filled move slots' (id/pp/ppUp) values among the fixed slot objects — the slot
QObjects keep their identity so QML's movesAt() pointers stay valid, PP rides with its move, and only
the move bytes the reorder touches change (byte-fidelity preserved, confirmed by tst_gui_fidelity).
PokemonMoveSel/MovesTab were made fully null-safe on a transient move (the Repeater delegate reads
through boxData during build/teardown). New regression test box_reorderMove; tst_qml_screens +
tst_gui_fidelity + full ctest (66/66) green. VERSION 0.10.1-alpha → 0.11.0-alpha (MINOR — a whole-tab
redesign + a new feature).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.10.1-alpha...v0.12.3-alpha
Pokered Save Editor v0.10.1-alpha
Pokered Save Editor v0.10.1-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- DV/EV tab polish: arrow-to-line min/max icons, rounded active edges, shiny tweaks
Round of refinements on the new DV/EV tab. The Max/Reset action combo swapped the vertical
double-chevrons for horizontal "arrow-to-line" icons — |← (reset to 0 / minimum) on the left,
→| (max) on the right, dice re-roll between — ordered low→high (two new hand-authored FA-style
SVGs, arrow-left-to-line / arrow-right-to-line, added to app.qrc). Fixed the segmented-control
"Market" flat-edge — an active end segment's accent fill now follows the group's rounded corner
(per-corner topLeftRadius/… on the fill, Qt 6.7+; added a last flag beside first). Future
Shiny moved its label above its row, and now shows only on the DV tab (shininess is derived
from DVs, so it's meaningless under EVs). EV Max/Reset already shared the DV combo, so both kinds get
the new icons identically. QML-only + 2 assets; tst_qml_screens + full ctest green,
screenshot-verified. VERSION 0.10.0-alpha → 0.10.1-alpha (PATCH).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.10.0-alpha...v0.10.1-alpha
Pokered Save Editor v0.10.0-alpha
Pokered Save Editor v0.10.0-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- Pokémon details "DV/EV" tab: brought up to the style language
Redesigned the DV/EV tab to match the General tab's language (one white grouped panel of
zebra-striped rows, connected "combo" controls, no loose buttons or ⋮ menus). The DV/EV toggle is
now a segmented [DV | EV] switch, and the old per-kind overflow menu became a connected
[Max | Re-Roll | Reset] icon combo (double-up / dice / double-down) that retargets to DVs or
EVs by the active mode. Future Shiny dropped its checkbox and ⋮ menu for a segmented
[Shiny | Non-Shiny] control plus a dice re-roll button: the selection is reactive —
bound to boxData.isShiny, so dragging the DV bars into a (non-)shiny combination flips it too;
clicking a segment forces that state, and the dice re-rolls a fresh combination within the current
state. New inline SegSel component (a selectable text segment whose active is a data binding,
not a checkable toggle, so it never drifts from the underlying value). QML-only; tst_qml_screens +
full ctest green, screenshot-verified. VERSION 0.9.1-alpha → 0.10.0-alpha (MINOR — a whole-tab
redesign, like the General tab).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.9.1-alpha...v0.10.0-alpha
Pokered Save Editor v0.9.1-alpha
Pokered Save Editor v0.9.1-alpha — a free, open-source save-file editor for Pokémon Red & Blue (Gen 1), built with Qt 6 (C++/QML).
It lets you open a .sav and edit your team, items, Pokédex, trainer card, PC boxes and more, with bit-for-bit fidelity (it changes only what you change).
⚠️ Pre-release / alpha — under active development, so expect rough edges and occasional changes to how things work. The downloads are unsigned, so Windows SmartScreen (and some Linux setups) will warn on first launch — that's expected for an alpha, not a problem with the file.
What's new in this release
2026-06-17 -- Pokémon details header: narrow the tabs + species picker so it fits
The redesigned (slimmer) panes left the details header overflowing: the General/DV-EV/Moves tabs
stretched edge-to-edge with big gaps, and the species/level/status top bar ran off the narrower right
pane. Gave the TabButtons a content width so they sit snug instead of spread, and narrowed the
species picker (font*14 → font*10; Gen 1 names are ≤10 chars). QML-only. VERSION 0.9.0-alpha →
0.9.1-alpha (PATCH).
How to get it
| Platform | File | What to do |
|---|---|---|
| Windows | *-windows-x64-setup.exe |
Installer — recommended; just run it. |
| Windows | *-windows-x64-portable.zip |
No-install — unzip and run PokeredSaveEditor.exe. |
| Linux | *-x86_64.AppImage |
Portable — chmod +x then run. |
| Linux | *-linux-x64-portable.tar.gz |
Portable tree — extract and run usr/bin/PokeredSaveEditor. |
Also attached: *-docs.zip (generated code docs) and *-screenshots.zip (UI screenshots).
Links
- 📖 Docs & screenshots: https://junebug12851.github.io/pokered-save-editor-2/
- 📝 Full changelog (every commit): https://github.com/junebug12851/pokered-save-editor-2/tree/main/notes/version
- 🐛 Issues / feedback: https://github.com/junebug12851/pokered-save-editor-2/issues
Built automatically from main. The deepest technical layer — the raw commit list — is in What's Changed below.
Full Changelog: v0.9.0-alpha...v0.9.1-alpha