Skip to content

Releases: umpire274/rBackup

v0.7.0

23 Feb 08:53

Choose a tag to compare

📋 Changelog

📖 Back to README

All notable changes to the rbackup project will be documented in this file.

[0.7.0] - 2026-02-23

✨ Added

  • -d, --delta flag for delta-only copy mode.
  • Byte-based progress bar (replaces file-count progress).
  • Advanced --show-skipped option with explicit precedence over --delta.

🔄 Changed

  • Default copy now shows both copied and skipped items.
  • In --delta mode, only copied items are shown by default.
  • Progress bar now reflects:
    • Total bytes processed (full scan mode)
    • Total bytes to copy (delta mode)
  • Logging behavior refactored with clear precedence rules:
    • --delta sets implicit show-skipped=never
    • --show-skipped explicitly overrides --delta

🛠 Refactored

  • Two-phase copy architecture (plan → execute).
  • Logging context now implements Default.
  • ShowSkipped now derives Default with #[default] variant (clippy-clean).

🧪 Fixed

  • Doctest updated for new copy_incremental signature.
  • Resolved LogContext missing field errors in tests.
  • Removed duplicate delta field in CLI definition.

[0.6.1] - 2025-10-27

Added

  • Introduced new application icon (assets/rbackup.ico) for Windows builds.
    • The icon is now automatically embedded into the executable using the winresource build dependency.
    • Provides a consistent visual identity in Windows Explorer and the taskbar.

Changed

  • Build process updated to include the new embedded icon during cargo build --release.

Notes

  • The .ico file resides under the assets/ directory together with other project resources.
  • No functional or CLI changes — this release is a visual enhancement only.

Documentation

  • Added a new section in README.md titled “Maintainers: Manual Release Trigger”,
    describing how to manually rebuild or recreate a release from GitHub Actions.
    Includes CLI usage (gh workflow run) and bilingual inline comments for maintainers.

[v0.6.0] - 2025-10-11

🚀 Highlights

  • Added a dedicated Copilot onboarding file (.github/copilot-instructions.md) to speed up automated code agents and
    reduce PR churn.
  • Further enhanced --exclude behavior and documentation (see README) with clearer examples, zsh/bsh quoting tips and
    use-cases.
  • Improved translations workflow and added scripts/translations_tool features: template generation, apply with backup
    and consistency checks.
  • CI/workflows improvements and permissions fixes; ensured rustfmt and clippy are run in the lint job and release
    workflow extracts version from Cargo.toml.

🧾 Logging & UX

  • Ensured skipped files are reported both to console (UI) and to the log file when --log is used. Log lines include
    the exclude pattern that caused a skip when applicable.
  • UI output serialisation to avoid progress-bar overwrite; introduced a single-threaded UI writer and a scroll buffer
    for per-file messages.

🔧 Fixes & Maintenance

  • Bumped crate version to 0.6.0 and cleaned up release packaging scripts.
  • Minor refactors for robustness around logger/mutex handling and improved tests coverage (moved tests into tests/).

📝 Documentation

  • Added comprehensive English API documentation across src/ (docstrings and translated comments), converting existing
    Italian comments to English.
  • Added usage examples / small usage cases for common functions (e.g. copy_incremental, build_exclude_matcher).
  • Created assets/TRANSLATIONS.md describing translation keys, placeholder usage, and how to add new languages.
  • Added a translations consistency test: tests/translations_consistency.rs to ensure all language entries share the
    same set of keys.
  • Added concrete use-case examples to README.md (CLI copy/config examples and translations tool workflow).
  • No functional changes: documentation and tests only.
  • Validation: ran cargo check and cargo test locally; all tests passed.

[v0.5.1] - 2025-10-01

🔧 Change

  • Updated the end-of-copy message to include the total number of files processed (copied + skipped) in addition to the
    separate counts for copied and skipped files. This helps quickly see the overall scope of the operation.

[v0.5.0] - 2025-10-01

This release closes GitHub issue #3 — fixes and improvements described below.

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.4.0] - 2025-10-01

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.3.1] - 2025-09-12

🚀 Improvements

  • Cleaning the screen in case the copy message took more than one row in output
  • Changed the output message when copying to correct punctuation

🔧 Code Cleanup

  • Deleted delay between one copy and the next one
  • Deleted unused create imports

[v0.3.0] - 2025-09-10

🚀 Features

  • Added absolute path to name of copying file
  • Added message Skipped. or Copied. at the end of each file name

🐛 Bug Fixes

  • Fixed bug that prevented skipping of already existing files in destination directory
  • Fixed the process of copy/skip file graphically

🔧 Code Cleanup

  • Deleted parameter -g (no longer necessary)

📦 Miscellaneous

  • Modified format of starting and ending backup messages
  • Commented out unused functions

[0.2.8] – 2025-07-23

✅ Fixed

  • Fixes Issue #1: "This program must be run as administrator" – now
    the application runs on Windows without requiring elevated privileges.
  • Code cleanup: removed Windows-specific elevation code (elevator.rs was removed).
  • CI fixes: corrected GitHub Actions workflow for all platforms.
  • Macro derive fix: added missing use clap::Parser; and corrected all #[arg(...)] and #[command(...)]
    attributes.

###...

Read more

v0.6.1

29 Oct 11:43

Choose a tag to compare

📋 Changelog

📖 Back to README

All notable changes to the rbackup project will be documented in this file.

[0.6.1] - 2025-10-27

Added

  • Introduced new application icon (assets/rbackup.ico) for Windows builds.
    • The icon is now automatically embedded into the executable using the winresource build dependency.
    • Provides a consistent visual identity in Windows Explorer and the taskbar.

Changed

  • Build process updated to include the new embedded icon during cargo build --release.

Notes

  • The .ico file resides under the assets/ directory together with other project resources.
  • No functional or CLI changes — this release is a visual enhancement only.

Documentation

  • Added a new section in README.md titled “Maintainers: Manual Release Trigger”,
    describing how to manually rebuild or recreate a release from GitHub Actions.
    Includes CLI usage (gh workflow run) and bilingual inline comments for maintainers.

[v0.6.0] - 2025-10-11

🚀 Highlights

  • Added a dedicated Copilot onboarding file (.github/copilot-instructions.md) to speed up automated code agents and
    reduce PR churn.
  • Further enhanced --exclude behavior and documentation (see README) with clearer examples, zsh/bsh quoting tips and
    use-cases.
  • Improved translations workflow and added scripts/translations_tool features: template generation, apply with backup
    and consistency checks.
  • CI/workflows improvements and permissions fixes; ensured rustfmt and clippy are run in the lint job and release
    workflow extracts version from Cargo.toml.

🧾 Logging & UX

  • Ensured skipped files are reported both to console (UI) and to the log file when --log is used. Log lines include
    the exclude pattern that caused a skip when applicable.
  • UI output serialisation to avoid progress-bar overwrite; introduced a single-threaded UI writer and a scroll buffer
    for per-file messages.

🔧 Fixes & Maintenance

  • Bumped crate version to 0.6.0 and cleaned up release packaging scripts.
  • Minor refactors for robustness around logger/mutex handling and improved tests coverage (moved tests into tests/).

📝 Documentation

  • Added comprehensive English API documentation across src/ (docstrings and translated comments), converting existing
    Italian comments to English.
  • Added usage examples / small usage cases for common functions (e.g. copy_incremental, build_exclude_matcher).
  • Created assets/TRANSLATIONS.md describing translation keys, placeholder usage, and how to add new languages.
  • Added a translations consistency test: tests/translations_consistency.rs to ensure all language entries share the
    same set of keys.
  • Added concrete use-case examples to README.md (CLI copy/config examples and translations tool workflow).
  • No functional changes: documentation and tests only.
  • Validation: ran cargo check and cargo test locally; all tests passed.

[v0.5.1] - 2025-10-01

🔧 Change

  • Updated the end-of-copy message to include the total number of files processed (copied + skipped) in addition to the
    separate counts for copied and skipped files. This helps quickly see the overall scope of the operation.

[v0.5.0] - 2025-10-01

This release closes GitHub issue #3 — fixes and improvements described below.

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.4.0] - 2025-10-01

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.3.1] - 2025-09-12

🚀 Improvements

  • Cleaning the screen in case the copy message took more than one row in output
  • Changed the output message when copying to correct punctuation

🔧 Code Cleanup

  • Deleted delay between one copy and the next one
  • Deleted unused create imports

[v0.3.0] - 2025-09-10

🚀 Features

  • Added absolute path to name of copying file
  • Added message Skipped. or Copied. at the end of each file name

🐛 Bug Fixes

  • Fixed bug that prevented skipping of already existing files in destination directory
  • Fixed the process of copy/skip file graphically

🔧 Code Cleanup

  • Deleted parameter -g (no longer necessary)

📦 Miscellaneous

  • Modified format of starting and ending backup messages
  • Commented out unused functions

[0.2.8] – 2025-07-23

✅ Fixed

  • Fixes Issue #1: "This program must be run as administrator" – now
    the application runs on Windows without requiring elevated privileges.
  • Code cleanup: removed Windows-specific elevation code (elevator.rs was removed).
  • CI fixes: corrected GitHub Actions workflow for all platforms.
  • Macro derive fix: added missing use clap::Parser; and corrected all #[arg(...)] and #[command(...)]
    attributes.

Notes

  • No functional changes for macOS and Linux users.
  • Verified correct CLI behavior with combined --graph, --log, and --timestamp options.

[0.2.7] – 2025-06-26

✨ Changed

  • Improved the CLI test progress bar (--test_ui) with better layout and live file display during test runs.
  • Centralized translation system now applied across all user-facing messages via translations.json.

Notes

  • The --test_ui flag is still intended for internal testing only.
  • No functional changes for end users in normal usage.

[0.2.6] - 2025-06-24

Added

  • Introduced the -T / --test_ui parameter (hidden from help) to preview progress bar behavior in CLI.

Changed

  • Refactored code for improved structure and readability.
  • Adjusted formatting and logic to satisfy cargo clippy and CI build checks across:
    • macOS (Intel & Apple Silicon)
    • Ubuntu Linux
    • Windows (MSVC)

Notes

  • This version introduces no functional changes for end users.
  • Th...
Read more

v0.6.0

11 Oct 21:04

Choose a tag to compare

📋 Changelog

📖 Back to README

All notable changes to the rbackup project will be documented in this file.


[v0.6.0] - 2025-10-11

🚀 Highlights

  • Added a dedicated Copilot onboarding file (.github/copilot-instructions.md) to speed up automated code agents and reduce PR churn.
  • Further enhanced --exclude behavior and documentation (see README) with clearer examples, zsh/bsh quoting tips and use-cases.
  • Improved translations workflow and added scripts/translations_tool features: template generation, apply with backup and consistency checks.
  • CI/workflows improvements and permissions fixes; ensured rustfmt and clippy are run in the lint job and release workflow extracts version from Cargo.toml.

🧾 Logging & UX

  • Ensured skipped files are reported both to console (UI) and to the log file when --log is used. Log lines include the exclude pattern that caused a skip when applicable.
  • UI output serialisation to avoid progress-bar overwrite; introduced a single-threaded UI writer and a scroll buffer for per-file messages.

🔧 Fixes & Maintenance

  • Bumped crate version to 0.6.0 and cleaned up release packaging scripts.
  • Minor refactors for robustness around logger/mutex handling and improved tests coverage (moved tests into tests/).

📝 Documentation

  • Added comprehensive English API documentation across src/ (docstrings and translated comments), converting existing Italian comments to English.
  • Added usage examples / small usage cases for common functions (e.g. copy_incremental, build_exclude_matcher).
  • Created assets/TRANSLATIONS.md describing translation keys, placeholder usage, and how to add new languages.
  • Added a translations consistency test: tests/translations_consistency.rs to ensure all language entries share the same set of keys.
  • Added concrete use-case examples to README.md (CLI copy/config examples and translations tool workflow).
  • No functional changes: documentation and tests only.
  • Validation: ran cargo check and cargo test locally; all tests passed.

[v0.5.1] - 2025-10-01

🔧 Change

  • Updated the end-of-copy message to include the total number of files processed (copied + skipped) in addition to the separate counts for copied and skipped files. This helps quickly see the overall scope of the operation.

[v0.5.0] - 2025-10-01

This release closes GitHub issue #3 — fixes and improvements described below.

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.4.0] - 2025-10-01

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.3.1] - 2025-09-12

🚀 Improvements

  • Cleaning the screen in case the copy message took more than one row in output
  • Changed the output message when copying to correct punctuation

🔧 Code Cleanup

  • Deleted delay between one copy and the next one
  • Deleted unused create imports

[v0.3.0] - 2025-09-10

🚀 Features

  • Added absolute path to name of copying file
  • Added message Skipped. or Copied. at the end of each file name

🐛 Bug Fixes

  • Fixed bug that prevented skipping of already existing files in destination directory
  • Fixed the process of copy/skip file graphically

🔧 Code Cleanup

  • Deleted parameter -g (no longer necessary)

📦 Miscellaneous

  • Modified format of starting and ending backup messages
  • Commented out unused functions

[0.2.8] – 2025-07-23

✅ Fixed

  • Fixes Issue #1: "This program must be run as administrator" – now
    the application runs on Windows without requiring elevated privileges.
  • Code cleanup: removed Windows-specific elevation code (elevator.rs was removed).
  • CI fixes: corrected GitHub Actions workflow for all platforms.
  • Macro derive fix: added missing use clap::Parser; and corrected all #[arg(...)] and #[command(...)]
    attributes.

Notes

  • No functional changes for macOS and Linux users.
  • Verified correct CLI behavior with combined --graph, --log, and --timestamp options.

[0.2.7] – 2025-06-26

✨ Changed

  • Improved the CLI test progress bar (--test_ui) with better layout and live file display during test runs.
  • Centralized translation system now applied across all user-facing messages via translations.json.

Notes

  • The --test_ui flag is still intended for internal testing only.
  • No functional changes for end users in normal usage.

[0.2.6] - 2025-06-24

Added

  • Introduced the -T / --test_ui parameter (hidden from help) to preview progress bar behavior in CLI.

Changed

  • Refactored code for improved structure and readability.
  • Adjusted formatting and logic to satisfy cargo clippy and CI build checks across:
    • macOS (Intel & Apple Silicon)
    • Ubuntu Linux
    • Windows (MSVC)

Notes

  • This version introduces no functional changes for end users.
  • The --test_ui option is intended solely for internal development and will not appear in standard help.

[0.2.5] – 2025-06-18

✨ Added

  • Multilanguage support: English and Italian (--lang)
  • Progress bar: --graph option to display progress visually
  • Logging: --log <file> option to write output to a log file
  • Quiet mode: --quiet to suppress all console messages
  • Timestamping: --timestamp to prefix messages with date and time
  • Final stats: number of files copied and skipped
  • Error handling: log permission denied or locked file errors
  • Localized messages via translations.json
  • Cross-platform support: Windows, macOS, Linux

🛠️ Improvements

  • Code split into main.rs and utils.rs
  • Uses clap, indicatif, rayon, walkdir, crossterm
  • Embeds translations.json at compile time
  • Windows: The el...
Read more

v0.5.1

01 Oct 11:18

Choose a tag to compare

📋 Changelog

📖 Back to README

All notable changes to the rbackup project will be documented in this file.


[v0.5.1] - 2025-10-01

🔧 Change

  • Updated the end-of-copy message to include the total number of files processed (copied + skipped) in addition to the separate counts for copied and skipped files. This helps quickly see the overall scope of the operation.

[v0.5.0] - 2025-10-01

This release closes GitHub issue #3 — fixes and improvements described below.

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.4.0] - 2025-10-01

🚀 New features

  • Added enhanced exclude support for copy:
    • --exclude <PATTERN> accepts glob patterns applied by default to the path relative to the source directory.
    • --absolute-exclude option to match patterns against absolute source paths.
    • --ignore-case option for case-insensitive exclude matching.
    • Exclude matching now also tests the file basename (filename only), solving cases like $RECYCLE.BIN, Thumbs.db,
      etc.
  • Added --dry-run behavior improvements: dry-run now simulates copies and reports counts without touching the
    destination.

🧾 Logging & UX

  • Files that are skipped (either excluded by a pattern or because destination is newer) are now logged both to stdout
    and to the log file specified with --log.
  • Logs include the exclude pattern that caused the skip (when applicable), making it easier to diagnose why files were
    skipped.
  • Timestamps in logs are configurable and the LogContext carries the timestamp format.

🔧 Refactor & robustness

  • Config::load_or_default() added to provide a safe fallback when the configuration file is missing or malformed.
  • create_logger() now returns a Result<Option<Logger>> instead of panicking on errors; logging file creation
    failures is handled gracefully.
  • copy_incremental() now streams WalkDir results (no longer builds an in-memory Vec of all files), reducing memory
    usage for large trees.
  • Centralized and simplified CLI parsing via a shared cli module (src/cli.rs) so the binary and tests reuse the same
    definitions.
  • Split test code out of src/ into tests/ integration tests and added tests for is_newer, exclude handling, and
    dry-run behavior.
  • Improved handling of mutex poisoning when writing to the log file; flusher calls added to ensure buffered logs are
    persisted.

✅ Fixes

  • Fixed cases where some exclude patterns (basename patterns like $RECYCLE.BIN) were not matched.
  • Fixed logging so skipped files are included in the log file output.

🧪 Tests

  • Added integration tests under tests/ to exercise exclude matching, is_newer logic and dry-run semantics.

[v0.3.1] - 2025-09-12

🚀 Improvements

  • Cleaning the screen in case the copy message took more than one row in output
  • Changed the output message when copying to correct punctuation

🔧 Code Cleanup

  • Deleted delay between one copy and the next one
  • Deleted unused create imports

[v0.3.0] - 2025-09-10

🚀 Features

  • Added absolute path to name of copying file
  • Added message Skipped. or Copied. at the end of each file name

🐛 Bug Fixes

  • Fixed bug that prevented skipping of already existing files in destination directory
  • Fixed the process of copy/skip file graphically

🔧 Code Cleanup

  • Deleted parameter -g (no longer necessary)

📦 Miscellaneous

  • Modified format of starting and ending backup messages
  • Commented out unused functions

[0.2.8] – 2025-07-23

✅ Fixed

  • Fixes Issue #1: "This program must be run as administrator" – now
    the application runs on Windows without requiring elevated privileges.
  • Code cleanup: removed Windows-specific elevation code (elevator.rs was removed).
  • CI fixes: corrected GitHub Actions workflow for all platforms.
  • Macro derive fix: added missing use clap::Parser; and corrected all #[arg(...)] and #[command(...)]
    attributes.

Notes

  • No functional changes for macOS and Linux users.
  • Verified correct CLI behavior with combined --graph, --log, and --timestamp options.

[0.2.7] – 2025-06-26

✨ Changed

  • Improved the CLI test progress bar (--test_ui) with better layout and live file display during test runs.
  • Centralized translation system now applied across all user-facing messages via translations.json.

Notes

  • The --test_ui flag is still intended for internal testing only.
  • No functional changes for end users in normal usage.

[0.2.6] - 2025-06-24

Added

  • Introduced the -T / --test_ui parameter (hidden from help) to preview progress bar behavior in CLI.

Changed

  • Refactored code for improved structure and readability.
  • Adjusted formatting and logic to satisfy cargo clippy and CI build checks across:
    • macOS (Intel & Apple Silicon)
    • Ubuntu Linux
    • Windows (MSVC)

Notes

  • This version introduces no functional changes for end users.
  • The --test_ui option is intended solely for internal development and will not appear in standard help.

[0.2.5] – 2025-06-18

✨ Added

  • Multilanguage support: English and Italian (--lang)
  • Progress bar: --graph option to display progress visually
  • Logging: --log <file> option to write output to a log file
  • Quiet mode: --quiet to suppress all console messages
  • Timestamping: --timestamp to prefix messages with date and time
  • Final stats: number of files copied and skipped
  • Error handling: log permission denied or locked file errors
  • Localized messages via translations.json
  • Cross-platform support: Windows, macOS, Linux

🛠️ Improvements

  • Code split into main.rs and utils.rs
  • Uses clap, indicatif, rayon, walkdir, crossterm
  • Embeds translations.json at compile time
  • Windows: The elevation to Administrator privileges is now managed dynamically at runtime using the
    windows
    crate, instead of relying on embedded manifest files.
  • The request for elevation now occurs only when required, after argument validation and outside
    help/version/test-only modes.

Notes

  • This improves portability and avoids UAC prompts when not needed.

[0.1.0] - 2025-06-10

🧱 Initial release

  • Created initial project rBackup for one-way incremental backup
  • Inspired by robocopy and rsync
  • Command line arguments for source and destination
  • First working build for Windows only

🔗 Back to the project: GitHub - umpire274/rbackup

rbackup v0.3.1

12 Sep 08:52

Choose a tag to compare

🚀 Improvements

  • Cleaning the screen in case the copy message took more than one row in output
  • Changed the output message when copying to correct punctuation

🔧 Code Cleanup

  • Deleted delay between one copy and the next one
  • Deleted unused create imports

rbackup v0.3.0

11 Sep 19:13

Choose a tag to compare

✅ Summary

This PR merges the v0.3.0 development branch into master.

✨ New Features

  • Add dynamic progress bar with terminal position detection
  • Show Copied and Skipped file status with absolute paths
  • Ensure progress bar stays pinned to the bottom
  • Auto-scroll file list when terminal is full

🐛 Fixes

  • Fix is_newer() logic for correct incremental copy
  • Fix terminal redraw issues and duplicated output
  • Clean removal of unused -g flag
  • CI fixes: Clippy compliance, cleanup of workflows

🔄 Other

  • Removed requirement for administrator privileges on Windows

rbackup v0.2.8

23 Jul 16:17

Choose a tag to compare

🆕 Version 0.2.8 Highlights

  • ✅ Fixed: The program no longer requires administrator privileges on Windows (previously caused a blocking error on launch).
  • 🧹 Removed all Windows-specific elevation logic (elevator.rs) for improved cross-platform compatibility.
  • 🔧 Fixed missing clap derive macro and updated command-line argument definitions across all platforms.
  • 🛠️ Improved CI compatibility for Windows, Linux, and macOS builds.

This version is focused on improving user experience and compatibility, especially on Windows systems, while preserving CLI behavior across all environments.

rbackup v0.2.7

28 Jun 12:11
8c414c7

Choose a tag to compare

🛠 rbackup 0.2.7 – Internal Improvements

This release introduces internal improvements for development and localization, without functional changes to the end-user experience.


✨ Changes

  • Enhanced the CLI test progress bar via --test_ui, now showing file-by-file details and accurate global progress.
  • Centralized use of translations.json for all localized messages across the app.

This version is functionally identical to 0.2.6 from a user’s perspective. The --test_ui flag remains hidden and is intended only for development.

rbackup v0.2.6

24 Jun 14:59
6f82b78

Choose a tag to compare

🔧 Maintenance Release – v0.2.6

This release introduces a hidden --test_ui flag intended for internal development and testing of the command-line progress interface.

✨ Highlights

  • ➕ Added --test_ui option (hidden from help, for developer use only)
  • 🧹 Codebase refactored and formatted (cargo fmt)
  • ✅ All cargo clippy warnings resolved
  • 🧪 Build successfully tested on:
    • Windows
    • macOS (Intel & Apple Silicon)
    • Ubuntu Linux

Note: No functional changes for end users.

rbackup v0.2.5

18 Jun 22:05

Choose a tag to compare

📦 rbackup v0.2.5

🔄 What's Changed

  • Windows elevation refactored:
    rbackup now requests Administrator privileges at runtime using the windows crate, only when required.
    No more manifest embedding, and no more unnecessary UAC prompts when using --help or --version.

📌 Highlights

  • ✅ Elevation deferred after argument parsing
  • ✅ Portable binary with no .rc or .manifest needed
  • 🔐 Improved privilege management logic

🇮🇹 Novità in breve

  • ✅ Su Windows, la richiesta di privilegi di amministratore avviene ora dopo la verifica dei parametri, ed è gestita a runtime tramite il crate windows
  • 📦 Nessun manifest .rc richiesto: binario più portabile

🔐 Signature & Hash

All release archives are:

  • 🧾 Signed with GPG (.asc files)
  • 📑 Provided with SHA256 checksums

You can verify with:

gpg --verify rbackup-0.2.5-<target>.tar.gz.asc rbackup-0.2.5-<target>.tar.gz
sha256sum -c rbackup-0.2.5-<target>.sha256