Skip to content

Releases: adibzailan/file_copier

Chore: Unit Tests for Components

15 Sep 10:27
849e7c5
Compare
Choose a tag to compare

Release v1.2.5

Added

  • Implemented unit tests for each component in the ui\components\ folder using pytest:
    • copy_set.py
    • folder_selection.py
    • footer.py
    • interval_settings.py
    • status_list.py
  • Added conftest.py to set up QApplication for GUI testing

Fixed

  • Resolved import issues in test files
  • Fixed IntervalSettingsWidget to properly handle invalid interval values

Improved

  • Enhanced test coverage for all UI components
  • Ensured all components pass their respective unit tests

Documentation

  • Added comments in test files to explain test cases and setup

Development

  • Configured pytest for running GUI tests
  • Improved project structure for better test organization

Next Steps

  • Adding integration tests for component interactions
  • Review and update main application code to use tested components
  • Plan for next feature additions or improvements

Fix: Excessive synchronization and resultant crashes

12 Sep 08:59
2a8808a
Compare
Choose a tag to compare

Release v1.2.3

New Features

  • Implemented a cooldown mechanism to prevent excessive synchronization and potential crashes.

Improvements

  • Fixed the issue with the timer countdown not starting properly when the application loads.
  • Enhanced the synchronization process to ensure all copy sets are updated correctly.
  • Improved overall stability and performance of the application.

Technical Changes

  • Modified the AppLogic class in core/app_logic.py:
    • Added self.last_sync_time and self.sync_cooldown properties to manage synchronization timing.
    • Updated the load_config method to start the countdown timer immediately after loading the configuration.
    • Revised the update_countdown method to properly trigger sync_all_copy_sets when the countdown reaches zero.
    • Implemented a cooldown check in the sync_all_copy_sets method to prevent rapid, consecutive synchronizations.

User Impact

  • Users will notice improved stability, especially when making rapid changes to multiple copy sets.
  • The countdown timer now starts immediately upon application launch, providing a more accurate representation of time until the next synchronization.
  • Synchronization occurs at more regular intervals, reducing the risk of excessive CPU usage or application crashes.

Future Plans

  • Continue to monitor and optimize performance for large-scale file operations.
  • Explore options for user-configurable cooldown periods.

Fix: Synchronization at intervals

12 Sep 06:56
58597c1
Compare
Choose a tag to compare

Release v1.2.2

What's New

  • Implemented a robust "full rebuild" feature that ensures complete synchronization between source and destination folders.
  • Further improved the reliability of file copying at specified interval timings.
  • Enhanced status messages to provide more detailed information about the synchronization process.

Improvements

  • The "full rebuild" feature now completely refreshes the destination folder during each synchronization cycle:
    • All contents in the destination folder are deleted before copying begins.
    • Every file from the source folder is copied to the destination folder, ensuring an exact mirror.
  • The application now provides more detailed status messages, including information about deleted and copied files during the synchronization process.
  • Improved error handling and reporting for file operations.

Resolved Issues

  • Fixed an issue where some files were not being updated in the destination folder during synchronization.
  • Addressed edge cases in file handling, improving overall reliability of the copying process.

How to Use

  1. Download the latest FileCopier.exe file from the dist folder.
  2. Run the application by double-clicking on FileCopier.exe.
  3. Set up your source and destination folders, and specify the desired copy interval.
  4. The application will perform a full rebuild of the destination folder at each synchronization interval, ensuring an exact copy of the source folder.

Notes for Developers

  • The core logic for the full rebuild feature can be found in the ui_file_copier.py file.
  • Status message handling has been updated in both app_logic.py and ui_main_window.py.
  • When making changes, ensure to test the full synchronization cycle thoroughly, including edge cases with file deletions and additions.
    Thank you for using File Copier!

Fix: PyInstaller

12 Sep 06:32
58597c1
Compare
Choose a tag to compare

Release v1.2.1

What's New

  • Fixed the PyInstaller script to successfully create a standalone executable for the File Copier application.
  • The application can now be distributed as a single .exe file, making it easier for users to run without requiring Python or additional dependencies.

Resolved Issues

  • Addressed the problem with the PyInstaller script that previously prevented the creation of the executable.

How to Use

  1. Download the FileCopier.exe file from the dist folder.
  2. Double-click on FileCopier.exe to launch the application.
  3. The application should run without needing to install Python or any additional libraries.

Notes for Developers

  • If you need to make changes to the application, modify the source code and then run the pyinstaller_script.py to generate a new executable.
  • Ensure all dependencies are correctly specified in the PyInstaller script to include them in the final executable.

Feedback

If you encounter any issues or have suggestions for improvement, please open an issue on the GitHub repository.

Thank you for using File Copier!

Feat: UI/UX, performance improvements

12 Sep 06:13
58597c1
Compare
Choose a tag to compare

Release v1.2.0

This release of File Copier brings significant improvements to the user experience, visibility, and overall application performance.

New Features and Improvements

  • Improved UI visibility and contrast
  • Updated status list to ensure text is clearly visible
  • Refined layout for better usability
  • Updated PyInstaller script for improved packaging

Existing Features

  • Support for multiple copy sets (source-destination pairs)
  • Real-time, bidirectional synchronization for each copy set
  • User-friendly GUI with improved visibility and contrast
  • Initial full copy when folders are first selected for each copy set
  • Periodic full synchronization at user-specified intervals (global setting for all copy sets)
  • Real-time monitoring and handling of file changes (create, modify, delete, rename) for each copy set
  • Customizable global synchronization interval
  • Add and remove copy sets dynamically
  • Built with PyQt6 and watchdog for robust performance

Installation

  1. Download the standalone executable for your platform from the assets below.
  2. Run the executable to start the File Copier application.

Usage

  1. Launch the File Copier application.
  2. Click "Add New Copy Set" to create a new source-destination pair.
  3. For each copy set:
    • Click "SELECT" next to "Source:" to choose the source folder.
    • Click "SELECT" next to "Destination:" to choose the destination folder.
  4. Set the global copy interval using the slider or input box at the bottom.
  5. Monitor the synchronization status for all copy sets in the status area.
  6. Add or remove copy sets as needed using the "Add New Copy Set" and "Remove" buttons.

For Developers

If you want to run the application from source or contribute to the project:

  1. Clone the repository:
git clone https://github.com/adibzailan/file-copier.git
  1. Install dependencies:
pip install -r requirements.txt
  1. Run the application:
python ui_main.py
  1. To package the application:
python pyinstaller_script.py

The packaged executable will be in the 'dist' folder.

Project Structure

  • core/: Contains core functionality like app logic and file operations
  • ui/: Houses the user interface components
  • ui_main.py: Entry point of the application
  • requirements.txt: List of Python dependencies
  • pyinstaller_script.py: Script for creating standalone executables

Troubleshooting

If you encounter any issues:

  1. Ensure that you have the correct permissions to read from and write to the source and destination folders.
  2. Check for any error messages displayed in the application's status area.
  3. Make sure you have sufficient disk space in the destination folder for the copying operations.

For more detailed information about the application, its features, and how to use it, please refer to the README.md file in the project repository.

Feat: Multi-Set Synchronization

09 Sep 16:42
61025f5
Compare
Choose a tag to compare

Release v1.1.0

A sprint indeed! Excited to announce the release of File Copier v1.1.0, which introduces support for multiple copy sets, allowing users to synchronize multiple folder pairs simultaneously. This major update significantly enhances the flexibility and usability of the application.

New Features

  1. Multiple Copy Sets: Users can now add and manage multiple source-destination folder pairs within a single interface.
  2. Dynamic Copy Set Management: Easily add new copy sets or remove existing ones as needed.
  3. Global Synchronization Interval: A single interval setting now applies to all active copy sets.
  4. Improved Status Reporting: The status area now shows events for each copy set separately.

Improvements

  • Updated user interface to accommodate multiple copy sets
  • Enhanced core logic to handle multiple file watchers and copiers
  • Improved error handling and robustness

Upgrading

To upgrade to v1.1.0, simply download the new executable from the assets section and replace your existing File Copier application. Your previous settings will not be carried over, as the application starts fresh each time it's launched.

For developers working with the source code, pull the latest changes from the repository and ensure you have the latest dependencies installed:

git pull origin main
pip install -r requirements.txt

Initial Release

09 Sep 11:00
Compare
Choose a tag to compare

Release v1.0.0

Features

  • Real-time, bidirectional synchronization between two folders
  • User-friendly GUI with dark mode
  • Initial full copy when folders are first selected
  • Periodic full synchronization at user-specified intervals
  • Real-time monitoring and handling of file changes (create, modify, delete, rename)
  • Customizable synchronization intervals
  • Built with PyQt6 and watchdog for robust performance

Installation

  1. Download the standalone executable for your platform from the assets below.
  2. Run the executable to start the File Copier application.

For Developers

If you want to run the application from source or contribute to the project:

  1. Clone the repository:
    git clone https://github.com/adibzailan/file-copier.git

  2. Install dependencies:
    pip install -r requirements.txt

  3. Run the application:
    python ui_main.py

Feedback and Contributions

Always welcome feedback and contributions; anything to help me learn! Please open an issue or submit a pull request on GitHub. Enjoy!