mirror of
https://github.com/MAKS-IT-COM/maksit-lto-backup.git
synced 2026-09-30 00:28:10 +02:00
5.4 KiB
5.4 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.1.0-alpha.2] - 2026-09-06
Still alpha versus 0.1.0-alpha.1. Emulator and build validated; physical Windows/Linux tape, changer, and Linux SMB staging are not hardware-proven yet. Not a production-ready line.
Added
- Desktop packaging as sibling GitHub assets: Windows setup
maksit-lto-backup-{version}.exe(Avalonia UI) andmaksit-lto-backup-{version}.flatpak(Avalonia UI), alongside the portablemaksit-lto-backup-{version}.zip(win-x64 console, Avalonia UI, and Worker). The installer and Flatpak are not packed inside the zip. On Windows the Flatpak bundle is built via WSL Debian. - Faceted LTO cartridge app icon (not the brand M).
Changed
- Avalonia UI is MVVM (
CommunityToolkit.Mvvm): operations, settings, monitor, and service controls live inMainViewModel;MainWindowis a thin view. - Configuration (console, UI, Worker) is written to
%AppData%/MaksIT/LTO Backup/settings.json(WiXinstallFolderName). The shippedconfiguration.jsonnext to the exe is seed-only. - Dark theme uses the MAKS.IT origami blues (
#33A5CF/#006199). - Synced RepoUtils utils: ContainerRegistry JSON catalog (PascalCase Harbor / InCluster keys).
[0.1.0-alpha.1] - 2026-08-21
Alpha preview versus last published 0.0.2 (HEAD was console-only Windows on net8.0). Emulator and build validated; physical Windows/Linux tape, changer, and Linux SMB staging are not hardware-proven yet. Not a production-ready line.
Added
- Avalonia UI (
MaksIT.LTO.Backup.UI): cross-platform operations host (Monitor / Drive / Library / Backup / Settings / Service) on Windows and Linux — SimpleTheme Dark styles aligned with Cluster Console. - Shared library (
MaksIT.LTO.Backup.Shared): configuration model,ConfigurationFileService,BackupOrchestrator,LibraryOrchestrator, scheduling helpers used by console, UI, and Worker. - Worker (
MaksIT.LTO.Backup.Service): scheduled aggregations (ordered job waves) with UScheduler-shaped calendars and overdue catch-up; exclusive lease; automatic drive claim/unload; consolebackup --name/backup --aggregation[--scheduled]. - Service registration: Windows SCM (
sc.exebinPath=/start=spacing) and systemd (Type=notify+AddSystemd(), quotedExecStart/WorkingDirectory, execute bit, unit removal on uninstall). Worker content root is the application base directory so SCM/systemdcwd does not hideconfiguration.json. - Device abstraction:
ITapeDrive/ITapeLibrarywith file-backed emulators (EmulatedTapeDrive,EmulatedTapeLibrary),WindowsTapeDriveadapter, andDeviceMode/Topology(StandaloneDrive|TapeLibrary). - Linux physical backends:
LinuxTapeDrive(/dev/nst*+ MTIOCTOP/SG_IO MAM) andLinuxTapeLibrary(/dev/sg*+ SCSI medium changer). - Windows physical changer:
WindowsTapeLibraryviaIOCTL_CHANGER_*(inventory, initialize, move) — 0.0.2 had drive IOCTLs only. - Shared SCSI/MAM helpers:
MamAttributeCodec,ScsiMediumChanger; neutralTapePosition. - Cross-platform SMB:
RemotePathAccess— WNet on Windows (replaces in-repoNetworkConnection), SMBLibrary staging on Linux (new). - SchemaVersion 2 on-tape layout: BOT index (
MLTI), payload, filemark, descriptor preamble (MLTD), length-prefixed AES-GCM descriptor, double filemark; Overwrite or Append; SHA-256 file hashes (0.0.2 used a simpler CRC32 descriptor layout). - Emulator tests (
MaksIT.LTO.Tests): unit / E2E / scheduling coverage without physical tape; xunit.v3 4.0 + Microsoft Testing Platform (global.jsontest.runner,TestingPlatformDotnetTestSupport) and coverlet.MTP. - RepoUtils under
utils/(community test / release engines). README coverage badges are rewritten by the CoverageBadges plugin (badgeFormat: shields) whenutils\Invoke-TestEngine.batruns. - Maintainer-local agent wiring (
AGENTS.md,.cursor/maksit-skills.json) and this changelog.
Changed
- Target .NET 10 (
net10.0); solution filesrc/MaksIT.LTO.slnx(wasMaksIT.LTO.Backup.sln+ net8.0). - Console host thinned to Shared orchestrators; configuration lives in Shared (
configuration.json). Console, UI, and Worker load it from the application base directory. - Crypto / hashing / logging / Windows SMB move onto MaksIT.Core (+ local
FileHashUtility); in-repoAESGCMUtility,ChecksumUtility/Crc32,FileLogger*, andNetworkConnectionremoved. - Publish path: RepoUtils release packaging instead of
dotnet_build_script.*. Host version comes from rootDirectory.Build.propsonly.
Removed
- Legacy
MaksIT.LTO.Backup.sln, console-localConfiguration/Entities, andsrc/dotnet_build_script.*. - WPF-classic Avalonia light theme (
WpfClassic.axaml); unusedWindowsVersionsconstants; consolesecret.txtcopy that was never in-repo; Community-onlyutils/templates/and obsoleteUpdate-RepoUtilsdocs.
[0.0.2] - 2024-11-03
Added
- Console LTO backup/restore toolkit (local and SMB paths).
- AES-GCM encrypted descriptors, checksum verification, cartridge EEPROM (MAM) read/write.
- Dependency injection, console and file logging.
- Build scripts and contributor docs (
README.md,CONTRIBUTING.md,LICENSE.md).