mirror of
https://github.com/forkless/NotAlterra.git
synced 2026-08-16 08:36:37 +02:00
3.2 KiB
3.2 KiB
Changelog
All notable changes to NotAlterra are documented in this file.
[v0.1.0] — 2026-05-31
Added
- Cross-platform terminal UI (ratatui + crossterm) with keyboard-driven menus, pickers, popups, and status bar
- GVAS save-file binary parser: extracts SlotName, DisplayName, bIsMultiplayerSave, GameMode, LevelName, BuildNumber, and more
- Save-folder discovery with Windows fast-path (
%LOCALAPPDATA%) and Linux Proton/Steam Deck paths - .bak to .sav recovery with filename-derived slot grouping,
.sav.oldrollback, and size sanity checks - Full backup / restore (only
savegame_*files) with pre-restore snapshots and verification - UE5 Config (.ini) management — backup, restore, and guarded delete
- Save inspector with full GVAS metadata displayed in a color-coded popup
- Slot grouping in the recovery picker — first entry per slot gets a numbered label, subsequent entries blank
- Online / Local detection via
bIsMultiplayerSaveBoolProperty - Mode-change warning (Online ↔ Local) and name-change warning on recovery
- Game-running guard — exits or warns if Subnautica 2 is active
- Transaction log (
transaction.log) withMANUAL_BAK,AUTO_BAK,RESTORE,RECOVER,CONFIG_BAK,CONFIG_RESTORE,CONFIG_DEL, andLICENSEactions - Disclaimer popup with Accept / Decline buttons — Esc returns to menu without revoking
- OK dialogs for backup results, no-backup warnings, and ini action outcomes
- Confirmation popups with
[ Yes ]/[ No ]buttons and detailed metadata comparison - No-backup guard — warns if
NotAlterra_Backupsis empty before destructive actions - Empty directory cleanup — failed backup directories are removed
- Auto-size popups — GVAS inspector and OK dialogs scale to fit content
- Terminal resize — main loop and all sub-loops respond to terminal size changes
- Arrow-key debounce —
KeyReleaseevents are filtered; no double-stepping - Elapsed timer during save-folder scan with background threading
- Release build script (
build.sh) producingnotalterra-v{version}-linux-amd64.tar.gzandnotalterra-v{version}-windows-amd64.zip --version/-vCLI flag- MIT License and README with build, usage, and unpack instructions
Changed
- Ported from Windows PowerShell (
pleasework.ps1) and Python (extract_save_name.py) to Rust - Slot grouping uses filename-derived slot (
savegame_N) instead of internal GVASSlotName .bakcopy target uses canonicalsavegame_N.sav, not versionedsavegame_N_M.sav- Full backups now only copy
savegame_*files — no other SaveGames fluff - Version number reads from
Cargo.tomlat compile time
Fixed
- Arrow-key navigation no longer overshoots —
KeyEventKind::Releaseevents filtered - GVAS metadata popup renders all 11 fields (was clipped to 2 because of
Paragraph::new(Span)) - Header path now shows tail of path (e.g.
…\Subnautica2\Saved\SaveGames) instead of truncated prefix - Confirmation popup always appears — hard
require_backupblock replaced with soft warning
Security
- Game-running detection at launch and before each destructive operation
.inidelete guarded by requiring at least oneini_backup_*directory