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.
- Image Rendering Support: Optional Sixel and ASCII art rendering capabilities
- Sixel graphics support for compatible terminals (xterm, mlterm, mintty, etc.)
- Automatic fallback to ASCII art using
chafaorjp2a - SVG to PNG conversion support via
rsvg-convert - Improved Sixel detection:
- Multi-stage detection (known terminals, DA1 query, render test)
- Works with xterm (when started with
-ti vt340) - Handles false positives from terminals that don't support Sixel
- Environment variable checking for accurate terminal identification
--no-graphicscommand-line flag to disable image renderingSHELLFORGE_NO_GRAPHICSenvironment variable support- Custom logo support via
SHELLFORGE_LOGO_PATHor standard locations
- New library module:
src/lib/image-renderer.sh - Image rendering integrated into banner display
- Test scripts for image rendering validation
- Demo script showcasing rendering capabilities
- Default ShellForge logo in SVG format
- Documentation for image rendering features
display_banner()now supports optional image display- Environment variable display includes
SHELLFORGE_NO_GRAPHICS - Build system updated to include image-renderer.sh module
- Main script handles
--no-graphicsflag in argument parsing
- Enhanced
listcommand with beautiful TUI elements:- Box-drawing characters for visual structure
- Color-coded backup age indicators
- Machine-specific icons (home icon for current machine)
- Detailed backup statistics per machine
- Global summary section with totals
- Quick command reference
- ShellForge marker file (.shellforge) to identify valid backups
- Backup statistics file (.stats) with file counts and sizes
- Global metadata tracking in BACKUP_DEST/.shellforge-meta
- Human-readable time formatting ("2 hours ago", "3 days ago")
- Human-readable size formatting (KB, MB, GB)
- Enhanced metadata functions:
create_marker_file()- Creates backup identification markeris_shellforge_backup()- Validates ShellForge backupscreate_backup_stats()- Tracks backup statisticsformat_timestamp()- Converts timestamps to human-readable formatformat_bytes()- Converts bytes to human-readable sizesupdate_global_metadata()- Maintains global backup registry
listcommand now only shows ShellForge backups (not all directories)- Backup destination is displayed prominently at the top
- Each machine shows backup count, total size, and latest backup age
- Color coding for backup age: green (recent), yellow (old), red (very old)
- Added file count and size display after successful backup
- Improved visual hierarchy with sections and separators
- Better filtering to exclude non-ShellForge directories
- More informative display with contextual information
- Cleaner and more professional appearance
- Verbose mode shows preview of backed-up files
- Fixed "unbound variable" error on macOS with associative arrays
- Changed STATUS_ICONS initialization to be compatible with strict mode (set -u)
- Updated setup.sh and update.sh to use
/usr/bin/env bashfor better portability - Added bash version check to ensure bash 4.0+ is available
- Fixed "local: can only be used in a function" error in update.sh
- Removed improper use of
localkeyword outside of functions
- Created
src/lib/ui-common.sh- a shared UI library for consistent TUI elements - Beautiful new UI elements including:
- Status icons and colored output
- Progress indicators and animations
- Box drawing for sections and content
- Progress bars and step counters
- Interactive menus and separators
- Completely redesigned
setup.shwith beautiful TUI elements:- Animated build progress
- System information display
- Step-by-step progress tracking
- Visual feedback for all operations
- Fun closing animations
- Completely redesigned
update.shwith enhanced visuals:- Version comparison display
- Git repository status
- Build statistics and timing
- Changelog preview
- Command reference guide
- Refactored display code to use shared UI library
- Build process now includes ui-common.sh for consistent styling
- Consistent visual design across all ShellForge tools
- Better user feedback during installation and updates
- More engaging and professional appearance
- Centralized UI management for easier maintenance
- Fixed SIGPIPE error (exit code 141) in test.sh by temporarily disabling pipefail when using head command
- The help command test now works correctly in the test suite
- Cleaned up redundant test-help-*.sh scripts created during debugging
- Moved debug scripts to tests/archive/ directory
- Updated test.sh to show debug output when help command fails
- Changed test summary to use project-local test-backups directory instead of /tmp
- Help command test now captures and displays exit code for better debugging
- Fixed help command test failure caused by pipefail and df command
- Made get_disk_space() function handle df errors gracefully
- Added proper error handling for date, basename, and shell environment variables
- Help command now works reliably in test environments and restricted shells
- All command substitutions in display.sh now have fallback values
- Fixed all path references in test scripts after moving to tests/ directory
- Updated test.sh to correctly reference project root for shellforge and build script
- Updated test-smart-config.sh with proper path references
- Fixed test-build-fix.sh to change to project root before running
- Fixed demo-help.sh to use project root paths
- Fixed test-dynamic-help.sh to build from project root and use correct paths
- All test scripts now work correctly from their new location in tests/
tests/directory for all test scripts and demosscripts/directory for development utility scripts- README.md for tests directory with testing guidelines
- README.md for scripts directory with utility documentation
- Moved all test*.sh files from root to
tests/directory - Moved all demo*.sh files from root to
tests/directory - Moved fix-permissions.sh to
scripts/directory - Moved make-executable.sh to
scripts/directory - Updated Makefile to reference new test location
- Enhanced fix-permissions.sh to handle all project directories dynamically
- Simplified make-executable.sh for better maintainability
- Repository root is now clean and organized
- All file references updated to match new structure
- Smart config filtering features
- Modular build system
- Enhanced cross-platform compatibility
- Initial modular architecture implementation
- Separated code into core, lib, and modules
- Implemented build system with multiple build modes