-
v0.2.4 Stable
released this
2025-10-15 12:22:21 +02:00 | 66 commits to main since this releaseChangelog
All notable changes to this project will be documented in this file.
[0.2.5] - Unreleased
Added
-
Backup command (
librius backup)- Creates plain
.sqlitebackups in thebackups/directory - Optional
--compressflag for compressed backups.zipformat on Windows.tar.gzformat on macOS and Linux
- Localized help and messages via i18n (English and Italian)
- Timestamp-based file naming for safe sequential backups
- Creates plain
-
Export command (
librius export)- Added support for exporting library data in multiple formats:
--csv(default): plain text export with semicolon delimiter--json: structured JSON array output--xlsx: formatted Excel file using umya-spreadsheet
- Localized CLI help and status messages (English/Italian)
- Automatic export directory and timestamped filenames
- Uses
dirscrate for cross-platform export path handling
- Added support for exporting library data in multiple formats:
-
Import command (
librius import)- Supports importing book data from external sources
- Available formats:
--csv(default): semicolon-delimited CSV--json: JSON array of objects
- Unified parsing via
serdeand sharedBookRecordstruct - Duplicate detection through unique index on
isbn - Uses
INSERT OR IGNOREfor idempotent imports (no duplication) - Verbose mode logs skipped records (e.g., “Skipped duplicate ISBN: …”)
- Non-blocking import completion logging
Database
- Added migration
PATCH_004_ISBN_INDEX:- Creates unique index on
books.isbnto prevent duplicates - Automatically applied during startup migrations
- Creates unique index on
Technical
- Added dependency:
csv = "1.3"for CSV import with serde - Unified SQL insert logic via
insert_book_record()helper - Improved transaction safety and i18n message consistency
[0.2.4] - 2025-10-15
Added
- Full internationalization (i18n) for CLI help, subcommands, and arguments.
- Embedded JSON language files (
en.json,it.json) — no external dependencies required. - Dynamic language selection via
--lang <code>or thelanguagekey inlibrius.conf(YAML).
Fixed
- Resolved duplicated
--helpand--versionflag conflicts in Clap. - Restored proper
--helppropagation for subcommands (list,config). - Ensured fallback to English if an unknown language code is provided.
Changed
- Pre-language bootstrap messages (e.g., “Load configuration...”) remain in English for clarity.
- Improved initialization order: configuration and DB migrations now run after language setup.
Notes
- Default language remains English unless overridden by
--langor thelanguagefield inlibrius.conf(YAML). - This version finalizes the transition to a fully localized CLI core.
[v0.2.3] - 2025-10-14
Added
- Multilanguage support (i18n):
- Added
i18nmodule withload_language()andtr()functions. - Introduced translation files under
src/i18n/locales/(en.json,it.json). - Added
src/i18n/locales/README.mdwith key naming conventions. - CLI option
--lang(or-l) allows overriding the language from configuration. - Config file can define a
language:field for persistent preference. - Added
tr_with()utility for runtime placeholder substitution (e.g.,{path},{title}).
- Added
- Fallback system: if a translation key is missing or the language file is unavailable, English (
en.json) is used
automatically. - Python helper script (
scripts/extract_translations.py):- Scans Rust source files for user-facing strings.
- Updates
en.jsonwith any missing entries without overwriting existing ones.
Changed
- All user-facing messages (
print_info,print_ok,print_err,println!, etc.) are now translatable. - Main startup sequence (
main.rs) loads the selected language before configuration and database initialization.
Improved
- Added helper in
config.rsto read language preference directly fromlibrius.conf. - Enhanced verbosity filtering to respect localized messages.
- Clearer structure for future locale additions (fr, es, de, ...).
[v0.2.2] - 2025-10-14
Added
- Structured database migration system
- Introduced
MigrationResultenum replacing the previous boolean return value. run_migrations()now returns explicit results (Applied([...])orNone).- Each applied patch is now logged in the database with detailed information.
- Introduced
- Patch safety improvements
PATCH_002now checks for the existence of columns (language,pages,genre,summary) before adding them.- Prevents duplicate column errors on repeated runs.
- Enhanced migration logging
- Migrations now record results under
DB_MIGRATION_OK,DB_MIGRATION_FAIL, andMIGRATIONS_COMPLETEDevents in
thelogtable. - Clear distinction between actual migrations and up-to-date states.
- Migrations now record results under
Changed
- Refactored
run_migrations()logic for clarity and maintainability. - Updated database initialization flow (
start_db()) to react dynamically to migration results. - Improved internal output messages for migrations and startup consistency.
Fixed
- Ensured safe re-execution of migration patches on existing databases.
- Removed redundant success messages when no migrations were needed.
- Unified patch logging behavior across all modules.
[v0.2.1] - 2025-10-13
Added
- Database migrations: introduced
db/migrate.rswith incremental patch system and automatic execution at startup. - Configuration migrations: added
config/migrate.rsto automatically upgrade YAML configuration files. - Logging system: new
utils::write_log()function records database and migration events into thelogtable. - Verbose mode: added global
--verboseflag for diagnostic and debug output.- Normal mode: silent operation, only command results shown.
- Verbose mode: shows configuration loading, database opening, and migration messages.
db::start_db(): unified entry point that handles opening, creating, and migrating the database automatically.- Timestamp utility: new
utils::now_str()returns ISO 8601 formatted timestamps (%+).
Changed
- Initialization messages are now hidden in normal mode.
main.rssimplified: initialization logic moved intodb::start_db().print_info()andprint_ok()now depend on verbose mode.
Fixed
- Prevented redundant database initialization messages on repeated launches.
- Ensured migrations and configuration updates are idempotent and silent if up-to-date.
[v0.2.0] - 2025-10-13
- feat(cli): add
configcommand with--print,--init,--edit, and--editoroptions - fix(windows): correctly handle editors with spaces in their path using
Path::new(&editor_to_use) - refactor(cli): move command and subcommand definitions into dedicated
cli.rsmodule - feat(utils): introduce
utils.rsmodule with standard CLI icons and colored output helpers - docs(readme): update structure and configuration examples
- style: minor formatting and consistency improvements across CLI output
[v0.1.1] - 2025-10-12
- feat(models): add location fields to
Bookandbookstable schema (room, shelf, row, position)
[v0.1.0] - 2025-10-12
- docs: add crate, module and item-level documentation for docs.rs
- feat(models): update
Bookstruct to matchbookstable schema (editor, language, pages, genre, summary, added_at) - feat(models): change
added_attype tochrono::DateTime<Utc>and enablechronoserdefeature incargo.toml - feat(cli): make
listhandler returnResultand handle errors inmain - feat(list): parse
added_atfrom DB (RFC3339 / SQLite formats) and displayadded_atin the list asYYYY-MM-DD - feat(crate): add
src/lib.rsto expose crate API and improve docs generation on docs.rs - docs: add docs.rs badge and local documentation instructions to
README.md - style: run
rustfmtand fix Clippy warnings (code style and minor refactors)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-