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.
[0.8.9] - 2025-12-06ď
Fixedď
Electron Client Stabilityď
Large File Upload Crash Fix: Fixed crashes during large file uploads (multi-GB files)
Added global error handlers (
uncaughtException,unhandledRejection) to prevent app crashesAdded
event.sender.isDestroyed()check before sending IPC progress updatesImplemented stream backpressure handling with pause/resume for file uploads
Properly positioned request error handlers to clean up file streams on errors
App now remains stable when uploading files of any size
Addedď
Electron Client Testingď
Playwright E2E Test Suite: Comprehensive automated tests for the Electron client
Tests login form display, authentication, directory selection, file upload, and logout
Invalid credentials error handling test
Crash detection during uploads
Support for large file uploads with progress monitoring
Uses
DEV_TEST_USERandDEV_TEST_PASSWORDfrom.envfileRun with:
npm run testornpm run test:headed
Changedď
Test Configuration: Added Playwright dependencies and test scripts to
package.json@playwright/test,dotenv,@types/dotenvadded to devDependenciesNew npm scripts:
test,test:headed,test:debug,test:report
Refactoredď
Server Code Organization: Extracted routes and templates for better maintainability
Created
routers/module with separate files forapi_keys,files,pages,users,adminMoved HTML templates to
templates.pymoduleReduced
main.pysize by ~1100 lines
[0.5.1] - 2025-01-06ď
Fixedď
Configuration Priority: Fixed critical bug where
ppserver.tomlvalues were overriding environment variablesEnvironment variables now correctly take precedence over TOML configuration
Proper priority order: env vars > TOML > defaults
Rewrote
Settings.__init__()to check environment variables firstFixes issues with test environments and containerized deployments
Server Startup: Fixed
UnboundLocalErrorcrash caused by localosimport after usageMoved
import osto module-level imports inmain.py
E2E Test Suite: Fixed and re-enabled
test_e2e_real_server_and_client_with_uploadCorrected storage path assumptions to match actual storage backend structure
Test now passes successfully in isolation
Storage backend uses single-level subdirectory:
storage/XX/SHA256(notstorage/XX/XX/SHA256)
Changedď
Updated configuration loading in
config.pyto properly respect environment variable precedenceCleaned up redundant local imports in
main.py
[0.5.0] - 2025-11-05ď
Addedď
Electron Desktop GUIď
Cross-Platform Desktop Application: New Electron-based GUI client built with TypeScript
Native macOS, Windows, and Linux support
Proper application branding with âPutPlace Clientâ menu name
Custom application menu with standard macOS items
Packaged .app bundle with correct Info.plist metadata
DMG installer for easy distribution
Authentication & Security:
JWT-based authentication (replaced API key authentication)
User login and registration forms
Password visibility toggle with eye icon
Session persistence using localStorage
Secure IPC communication with context isolation
User Interface Features:
Native directory picker dialog
Exclude patterns manager with wildcard support
Real-time progress tracking with statistics
Color-coded log output (success, error, warning, info)
System information display (hostname, IP address)
Settings persistence between sessions
Build & Development Tools:
invoke gui-electron- Launch packaged app (recommended)invoke gui-electron-package- Package app into .app bundle and DMGinvoke gui-electron-build- Build TypeScript sourceinvoke gui-electron-test-install- Semi-automated installation testingAutomated mode (
--automatedflag) for CI/CDAutomatic app quit after testing
Full cleanup of app data and preferences
Documentation:
Updated README with Electron GUI usage
Added installation and testing instructions
Documented new invoke tasks
Changedď
GUI Client: Replaced Kivy GUI with Electron + TypeScript implementation
Better cross-platform support
More native look and feel
Easier to maintain and extend
Modern web technologies (HTML, CSS, TypeScript)
Technicalď
Electron application structure:
src/main.ts- Main process with IPC handlerssrc/preload.ts- Secure IPC bridgesrc/renderer/- UI components (HTML, CSS, TypeScript)
electron-builder configuration for packaging
TypeScript compilation with strict type checking
Automated testing with installation/uninstallation verification
[0.4.2] - 2025-10-30ď
Changedď
License: Changed from MIT to Apache License 2.0
Project Description: Updated to âFile and Metadata storage systemâ
Documentation: Added Apache 2.0 license badge to README
[0.4.1] - 2025-10-30ď
Fixedď
Documentation Code Examples: Corrected all code examples in documentation to use actual API field names
Fixed incorrect field names:
sizeâfile_size,permissionsâfile_mode,ownerâfile_uid,groupâfile_gidFixed timestamp format: ISO 8601 strings â Unix timestamps (float)
Fixed async/await syntax in test examples
Affected files:
docs/development.md,docs/api-reference.md,docs/troubleshooting.md
Test Infrastructure: Fixed parallel test execution race conditions
Switched from global variable modification to FastAPI dependency overrides
Added per-worker database isolation for thread-safe parallel testing
Fixed
test_e2e_duplicate_files_different_hostsintermittent failure
Server Management: Fixed ppserver restart reliability
Added port availability checking with 10-second timeout
Prevents âaddress already in useâ errors during restart
Fixed
test_ppserver_restarttest failure
Changedď
Authentication System: Refactored to use dependency injection
Added
get_auth_db()helper function for database dependencyUpdated
get_current_api_key()andget_optional_api_key()to use proper dependency injectionImproves testability and thread-safety for parallel test execution
[0.4.0] - 2025-01-17ď
Addedď
Web Interface Enhancementsď
File Cloning Detection: Added clone button next to info button for files with identical SHA256 hashes
Shows count of duplicate files in userâs collection
Displays all clones across all users (cross-user clone detection)
Modal with detailed table showing hostname, filepath, size, and status
Special handling for zero-length files (shows â0â disabled button)
Non-zero files always have active clone button for discovering epoch files
Epoch File Managementď
Epoch File Highlighting: First uploaded file with content (epoch file) is visually distinguished
Green background highlighting (#d4edda)
Green left border (4px) and bottom border (2px)
Green âEPOCHâ badge for clear identification
Automatic sorting: epoch file first, then metadata-only files
Cross-user epoch file linking: metadata files can now link to epoch files uploaded by other users
Visual Improvementsď
Zero-Length File Indicators: Special icon (đ) for empty files
Improved Modal Layout:
Increased modal width from 700px to 1200px for better visibility
Added scrolling support for long file lists
Fixed table layout with proper column widths
Word wrapping for long file paths
Responsive design with max-height constraints
Client Improvementsď
Graceful Interrupt Handling: ppclient now handles Ctrl-C cleanly
Finishes processing current file before exiting
Displays partial completion status
Shows count of remaining unprocessed files
Second Ctrl-C forces immediate termination
Proper exit codes for automation/scripting
Changedď
Clone detection now queries all files across all users, not just current userâs files
Clone button is now always active for non-zero-length files (removed disabled state for single files)
Modal content area now uses flexbox layout for better scrolling behavior
Technicalď
Added new API endpoint:
GET /api/clones/{sha256}- Retrieve all files with identical SHA256 across all usersAdded new database method:
get_files_by_sha256()- Query files by SHA256 hash with epoch file sortingAdded signal handling (SIGINT) to ppclient for graceful shutdown
Improved CSS styling for modal dialogs and table layouts
[0.3.0] - Previous Releaseď
Featuresď
File metadata storage with SHA256 hashing
User authentication with JWT tokens
API key management via web interface
Multiple storage backends (local filesystem, AWS S3)
Web-based file browser with tree layout
File details modal with comprehensive metadata
TOML-based configuration
MongoDB database integration
Comprehensive test suite (115+ tests)
Note: This is the first release with a formal changelog. Previous changes are summarized under version 0.3.0.