Releases: adibzailan/file_copier
Chore: Unit Tests for Components
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
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 incore/app_logic.py
:- Added
self.last_sync_time
andself.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 triggersync_all_copy_sets
when the countdown reaches zero. - Implemented a cooldown check in the
sync_all_copy_sets
method to prevent rapid, consecutive synchronizations.
- Added
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
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
- Download the latest
FileCopier.exe
file from thedist
folder. - Run the application by double-clicking on
FileCopier.exe
. - Set up your source and destination folders, and specify the desired copy interval.
- 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
andui_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
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
- Download the
FileCopier.exe
file from thedist
folder. - Double-click on
FileCopier.exe
to launch the application. - 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
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
- Download the standalone executable for your platform from the assets below.
- Run the executable to start the File Copier application.
Usage
- Launch the File Copier application.
- Click "Add New Copy Set" to create a new source-destination pair.
- For each copy set:
- Click "SELECT" next to "Source:" to choose the source folder.
- Click "SELECT" next to "Destination:" to choose the destination folder.
- Set the global copy interval using the slider or input box at the bottom.
- Monitor the synchronization status for all copy sets in the status area.
- 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:
- Clone the repository:
git clone https://github.com/adibzailan/file-copier.git
- Install dependencies:
pip install -r requirements.txt
- Run the application:
python ui_main.py
- 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 operationsui/
: Houses the user interface componentsui_main.py
: Entry point of the applicationrequirements.txt
: List of Python dependenciespyinstaller_script.py
: Script for creating standalone executables
Troubleshooting
If you encounter any issues:
- Ensure that you have the correct permissions to read from and write to the source and destination folders.
- Check for any error messages displayed in the application's status area.
- 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
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
- Multiple Copy Sets: Users can now add and manage multiple source-destination folder pairs within a single interface.
- Dynamic Copy Set Management: Easily add new copy sets or remove existing ones as needed.
- Global Synchronization Interval: A single interval setting now applies to all active copy sets.
- 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
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
- Download the standalone executable for your platform from the assets below.
- 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:
-
Clone the repository:
git clone https://github.com/adibzailan/file-copier.git -
Install dependencies:
pip install -r requirements.txt -
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!