Releases: Cod-e-Codes/marchat
v0.9.0-beta.4
v0.9.0-beta.4
Released: 8 Nov 2025
Commit: 2f92970
Major Changes:
- Fixed Total Messages metric in the web admin dashboard
- Restored plugin command support for non-admin users in encrypted sessions
- Updated github.com/charmbracelet/x/term to 0.2.2
Admin Experience:
- Web admin metrics now display accurate Total Messages counts
- Release notes and contributor acknowledgments refreshed for the new beta
Client Improvements:
- Plugin commands now work for non-admin users in encrypted sessions while preserving server-side permission checks
Documentation Updates:
- README, installers, and build scripts now reference v0.9.0-beta.4 assets
- Release documentation refreshed for the new version
Technical Changes:
- Adjusted command handling so server messages bypass encryption regardless of client admin flag
- Updated build-release pipeline and install scripts with the new version string
Assets:
- marchat-v0.9.0-beta.4-linux-amd64.zip
- marchat-v0.9.0-beta.4-darwin-amd64.zip
- marchat-v0.9.0-beta.4-windows-amd64.zip
- marchat-v0.9.0-beta.4-android-arm64.zip
Full Changelog: v0.9.0-beta.3...v0.9.0-beta.4
Breaking Changes:
- None
Migration Guide:
- No configuration changes required
- Ensure plugin commands are tested in encrypted sessions to confirm permission behavior
v0.9.0-beta.3
v0.9.0-beta.3
Released: 22 Oct 2025
Commit: fdc79bd
Major Changes:
- Added vim-style :q quit command for safer application exit
- Fixed theme system bugs for better user experience
- Updated ESC key behavior to prevent accidental quits
New Features:
Client Improvements:
- :q Command: Added vim-style quit command for explicit application exit
- ESC Key Behavior: ESC now only closes menus/dialogs, no longer quits application
- Safer Navigation: Prevents accidental application exits while preserving menu functionality
Theme System Fixes:
- Case-Insensitive Themes:
:theme Nordnow works even when JSON key is"nord" - Theme Persistence: Custom themes now persist across logins by updating profiles.json
- UI Redraw: Message viewport and user list now update immediately when themes change
- Profile Integration: Theme changes are properly saved to the current profile
Documentation Updates:
- README.md: Updated with :q command documentation and corrected ESC behavior
- Download Links: Updated all installation links to v0.9.0-beta.3
- Version References: Updated build scripts and installers to new version
Technical Changes:
- Added
GetCustomThemeByName()function for case-insensitive theme lookup - Enhanced model struct with profile name tracking
- Improved theme change handlers with proper viewport redraw
- Updated Ctrl+T and :theme command handlers for better theme management
Assets:
- marchat-v0.9.0-beta.3-linux-amd64.zip
- marchat-v0.9.0-beta.3-darwin-amd64.zip
- marchat-v0.9.0-beta.3-windows-amd64.zip
- marchat-v0.9.0-beta.3-android-arm64.zip
Full Changelog: v0.9.0-beta.2...v0.9.0-beta.3
Breaking Changes:
- ESC key no longer quits the application - use :q command instead
Migration Guide:
- No configuration changes required
- Existing themes and profiles will work unchanged
- Important: Use
:qcommand to quit the application (ESC only closes menus) - ESC key behavior change prevents accidental exits but requires using :q to quit
v0.9.0-beta.2
v0.9.0-beta.2
Released: 20 Oct 2025
Commit: 6151641
Major Changes:
- SQLite WAL mode implementation for improved database performance and concurrency
- Enhanced documentation with comprehensive architecture improvements
- Updated dependencies for security and performance
- Plugin system improvements for non-admin users
New Features:
Database Performance Enhancements:
- WAL Mode: Enabled SQLite Write-Ahead Logging for improved concurrency
- Performance Optimizations: Added
synchronous=NORMAL,cache_size=10000,temp_store=MEMORY - Better Concurrency: Multiple clients can read while one writes without blocking
- Crash Recovery: Improved database recovery with WAL files
- Verification Logging: Database startup now logs actual journal mode for confirmation
- Cross-Platform: WAL mode works on all supported platforms (Linux, macOS, Windows, Android)
Documentation Improvements:
- ARCHITECTURE.md: Enhanced with WAL mode documentation and performance tuning details
- Data Flow Diagrams: Improved clarity and accuracy of system architecture diagrams
- Alternative Frontends: Added comprehensive section for web, desktop, and mobile client development
- Database Schema: Updated with WAL mode benefits and performance optimizations
- ROADMAP.md: Marked WAL mode as completed in Phase 4
Dependency Updates:
- golang.org/x/crypto: Updated to v0.43.0 for latest security improvements
- modernc.org/sqlite: Updated to v1.39.1 for better performance and bug fixes
Plugin System Fixes:
- Non-Admin Plugin Commands: Fixed issue where non-admin users couldn't run plugins with
AdminOnly=false - Command Execution: Improved plugin command routing and permission handling
Configuration Improvements:
- Environment Variables: Corrected
MARCHAT_BAN_HISTORY_GAPSvariable name inenv.example - Documentation: Fixed configuration examples and variable references
Code Quality:
- Formatting: Applied
go fmtacross entire codebase for consistent formatting - Linting: Resolved all linter warnings and improved code consistency
Technical Changes:
- Modified
server/db.goto enable WAL mode with verification - Added performance pragmas for optimal SQLite configuration
- Enhanced error handling and logging for database operations
- Updated build and install scripts for v0.9.0-beta.2
- Improved release notes accuracy based on actual commit history
Documentation:
- ARCHITECTURE.md: Added WAL mode to database optimization section
- ROADMAP.md: Marked Phase 4 WAL mode as completed
- README.md: Updated with accurate release notes and feature highlights
- Enhanced database performance documentation
Assets:
- marchat-v0.9.0-beta.2-linux-amd64.zip
- marchat-v0.9.0-beta.2-darwin-amd64.zip
- marchat-v0.9.0-beta.2-windows-amd64.zip
- marchat-v0.9.0-beta.2-android-arm64.zip
Full Changelog: v0.9.0-beta.1...v0.9.0-beta.2
Breaking Changes: None
Migration Guide:
- WAL mode is automatically enabled on database startup - no configuration required
- Existing databases will be upgraded to WAL mode seamlessly
- All existing functionality remains unchanged
- Performance improvements are automatic and transparent
Performance Benefits:
- Concurrent Reads: Multiple clients can read messages simultaneously without blocking writes
- Faster Writes: Message insertion no longer blocks concurrent read operations
- Reduced Contention: Perfect for chat applications with multiple active users
- Better Crash Recovery: WAL files provide improved database integrity
- Optimized Caching: Increased cache size and memory-based temporary storage
Platform Compatibility:
- All Platforms: WAL mode works on Linux, macOS, Windows, and Android
- File System: Creates
.db-waland.db-shmfiles alongside main database - Backup Safe: Existing backup procedures work correctly with WAL mode
- Docker Compatible: No issues with mounted volumes or containerized deployments
v0.9.0-beta.1
v0.9.0-beta.1
Released: 12 Oct 2025
Commit: 51d396f
Major Changes:
- Enhanced notification system with desktop notifications and smart features
- Custom theme support via JSON configuration files
- Expanded plugin ecosystem with weather and githooks plugins
New Features:
Enhanced Notification System:
- Multiple Notification Modes: None, Bell, Desktop, Both
- Desktop Notifications: Cross-platform support using
notify-send(Linux),osascript(macOS), PowerShell (Windows) - Quiet Hours: Disable notifications during specified hours (
:quiet 22 8) - Focus Mode: Temporarily mute notifications (
:focus 1h,:focus 2h30m) - Mention-Only Mode: Get notified only for @mentions (
:bell-mention) - Smart Features: Rate limiting (500ms bell, 2s desktop), message truncation (100 chars), async execution
- New Commands:
:notify-mode <mode>,:notify-desktop,:notify-status,:quiet <start> <end>,:quiet-off,:focus [duration],:focus-off - Hotkey: Alt+N to toggle desktop notifications
- Thread-safe: Mutex-protected notification manager with atomic config updates
Custom Theme System:
- JSON Theme Support: Define custom color schemes in
themes.json - Built-in Themes: system, patriot, retro, modern
- Example Themes: cyberpunk, forest, dracula, solarized-dark, nord included in
themes.example.json - 23 Color Properties: Full customization of all UI elements (user, time, message, banner, borders, backgrounds, etc.)
- Theme Commands:
:theme <name>to switch,:themesto list all available themes - Auto-loading: Themes load from current directory,
~/.config/marchat/,%APPDATA%\marchat\, or~/Library/Application Support/marchat/ - Persistence: Theme selection saved to config and restored on restart
Plugin Ecosystem:
- weather (v1.0.0): Weather information and forecasts using wttr.in (
:weather [location],:forecast [location]) - githooks (v1.0.0): Git repository management (
:git-status,:git-log,:git-branch,:git-diff,:git-watchadmin-only) - echo (v2.0.1): Updated in registry (existing plugin)
Bug Fixes:
- Fixed
:cleardbcommand detection -:clearno longer incorrectly matches:cleardb - Fixed ineffectual assignment in
:bell-mentioncommand (linter error) - Fixed test environment isolation issues
- Improved
:themescommand output (now displays as system message instead of banner)
Technical Changes:
- Added
notification_manager.gowith NotificationManager implementation - Added
theme_loader.gofor custom theme loading from JSON - Enhanced notification config structure with mode, desktop settings, quiet hours, and focus mode
- Platform detection for desktop notification support on startup
- Test environment improvements with proper cleanup and isolation
Documentation:
- NOTIFICATIONS.md: Complete guide to notification system features and configuration
- THEMES.md: Comprehensive custom theme creation guide with examples
- Updated README with new features, commands, and plugin listings
- Enhanced command reference with notification and theme commands
Assets:
- marchat-v0.9.0-beta.1-linux-amd64.zip
- marchat-v0.9.0-beta.1-darwin-amd64.zip
- marchat-v0.9.0-beta.1-windows-amd64.zip
- marchat-v0.9.0-beta.1-android-arm64.zip
Full Changelog: v0.8.0-beta.11...v0.9.0-beta.1
Breaking Changes: None
Migration Guide:
- All notification settings are opt-in - default behavior unchanged (bell mode)
- Custom themes are optional - built-in themes continue to work
- New config fields added automatically with sensible defaults
- Existing configs are fully compatible and will be migrated seamlessly
Platform Requirements for Desktop Notifications:
- Linux: Requires
notify-sendcommand (provided by libnotify package:libnotify-binon Ubuntu/Debian,libnotifyon Fedora/Arch) - macOS: No additional requirements (uses built-in
osascript) - Windows: No additional requirements (uses built-in PowerShell)
v0.8.0-beta.9
v0.8.0-beta.9
Released: 10 Oct 2025
Commit: 636ffe2
Critical Security Release
This release fixes critical security vulnerabilities in the plugin system.
Security Fixes:
- Fixed path traversal vulnerability in plugin name handling
- Fixed command injection vulnerability via malicious plugin names
- Added input validation for all plugin operations
- Resolved 18 CodeQL security alerts (1 Critical, 17 High severity)
Technical Changes:
- Added
validatePluginName()function in plugin manager and host - Plugin names restricted to lowercase letters, numbers, hyphens, underscores
- Maximum length 64 characters
- Blocks
..sequences and path separators - Validation applied to: InstallPlugin, UninstallPlugin, EnablePlugin, DisablePlugin, StartPlugin, StopPlugin, LoadPlugin, GetPlugin, GetPluginManifest, ExecuteCommand
Fixed Alerts:
- #5: Command built from user-controlled sources (Critical)
- #6-#22: Uncontrolled data used in path expression (High)
Breaking Changes:
Plugin names must conform to validation rules. Existing plugins with non-conforming names will fail to load.
Assets:
- marchat-v0.8.0-beta.9-linux-amd64.zip
- marchat-v0.8.0-beta.9-darwin-amd64.zip
- marchat-v0.8.0-beta.9-windows-amd64.zip
- marchat-v0.8.0-beta.9-android-arm64.zip
Full Changelog: v0.8.0-beta.8...v0.8.0-beta.9
v0.8.0-beta.8
v0.8.0-beta.8
Released: 10 Oct 2025
Commit: 51dc87e
Major Changes:
- Added Alt+key hotkeys for plugin management (admin-only)
- Implemented proper debug log file management with config directory compliance
- Added automatic log rotation to prevent infinite file growth
- Fully implemented plugin management in both terminal and web admin panels
- Fixed plugin host deadlock issues and TUI log bleeding
- Enhanced plugin display with table component and proper selection handling
New Features:
- Plugin Hotkeys (Admin Only): Fast keyboard shortcuts for plugin operations
Alt+P: List installed pluginsAlt+S: Show available plugins in storeAlt+R: Refresh plugin storeAlt+I: Install plugin (prompts for name)Alt+U: Uninstall plugin (prompts for name)Alt+E: Enable plugin (prompts for name)Alt+D: Disable plugin (prompts for name)- Hotkeys send admin commands that bypass E2E encryption
- Debug Log Management: Separate client and server debug logs
- Client:
marchat-client-debug.log - Server:
marchat-debug.log - Both respect
MARCHAT_CONFIG_DIRenvironment variable
- Client:
- Log Rotation: Automatic rotation at 10MB threshold
- Keeps one backup file (
.old) - Prevents disk space exhaustion
- Keeps one backup file (
- Full Plugin Management: Complete functionality in admin panels
- Enable/disable plugins
- Install/uninstall from registry
- Refresh plugin store
- Works in both terminal (TUI) and web interfaces
- Plugin Table UI: Professional table display for plugins
- Name, Status, Version columns
- Arrow indicator for selected plugin
- Keyboard navigation (↑/↓)
- Shows available, installed, active, and disabled states
- Plugin Logging: Operations now visible in admin panel logs at INFO level
Bug Fixes:
- Fixed
:storecommand returning "not yet implemented" - now lists available plugins - Fixed debug logs creating files in project root instead of config directory
- Fixed log rotation not checking error returns (errcheck lint)
- Fixed plugin enable/disable deadlock in plugin host
- Fixed debug log statements bleeding into client TUI
- Fixed admin panel plugin tab not displaying available plugins from store
- Fixed plugin operations showing "not yet implemented" messages
- Fixed plugin table column ordering and alignment issues
- Fixed plugin selection not working reliably in terminal admin panel
- Fixed hotkey conflicts (Ctrl+Shift not working on Windows, switched to Alt+)
Technical Changes:
- Added plugin management hotkeys to client keymap with Alt+ combinations
- Implemented
executePluginCommand()to send admin commands bypassing E2E encryption - Added
pendingPluginActionstate for prompting plugin names - Modified
handleStore()to list available plugins from registry with install status - Added
getClientConfigDir()function to determine proper config directory - Modified
LogToFile()to include rotation logic with 10MB threshold - Added
debugFileglobal variable for structured log output - Implemented
enablePlugin(),disablePlugin(),installPlugin(),uninstallPlugin()in admin panels - Added
refreshPluginStore()functionality to both admin interfaces - Replaced
log.Printfwith structured logging inplugin/host/host.go - Changed plugin command logging from DEBUG to INFO level in
server/client.go - Added
pluginTablecomponent usingcharmbracelet/bubbles/table - Modified
loadPlugins()to fetch from store and show all plugin states - Fixed mutex handling in
EnablePlugin()andDisablePlugin()to prevent deadlocks - Added "Refresh Store" button to web admin panel
- Updated README with comprehensive plugin hotkey documentation
Improvements:
- Plugin management is now fast and efficient with keyboard shortcuts
- Hotkeys work even in E2E encrypted sessions (use admin command type)
- Debug logs now properly organized in config directory alongside other config files
- Log files won't grow infinitely - automatic cleanup at 10MB
- Admin panels provide full plugin lifecycle management
- Plugin display is clean, organized, and easy to navigate
- No more TUI corruption from debug logs
- Plugin operations are properly logged and visible to admins
- Better separation between client and server logging
:storecommand now shows which plugins are available, installed, or enabled
Assets:
- marchat-v0.8.0-beta.8-linux-amd64.zip
- marchat-v0.8.0-beta.8-darwin-amd64.zip
- marchat-v0.8.0-beta.8-windows-amd64.zip
- marchat-v0.8.0-beta.8-android-arm64.zip
Full Changelog: v0.8.0-beta.7...v0.8.0-beta.8
Breaking Changes: None - fully backward compatible
Migration Guide:
- Debug logs will automatically move to config directory on next run
- Set
MARCHAT_CONFIG_DIRenvironment variable to customize location - Old
marchat-debug.logfiles in project root can be safely deleted - Plugin management now fully functional - use hotkeys or text commands
- Admin users can now use Alt+key combinations for quick plugin operations
Improvements from v0.8.0-beta.7:
- Added 7 new plugin management hotkeys for faster workflows
- Plugin hotkeys work in encrypted sessions (bypass E2E for admin commands)
- Debug logging is now production-ready with proper file management
- Admin panels transformed from placeholder to fully functional plugin management
- Plugin operations are seamless and properly logged
- TUI remains clean without log bleeding
- Better disk space management with automatic log rotation
:storecommand is now fully functional and shows plugin availability
v0.8.0-beta.11
v0.8.0-beta.11
Released: 10 Oct 2025
Commit: 11a9d36
Major Changes:
- Fixed admin/plugin commands to work in E2E encrypted sessions
- Added hotkey alternatives for common commands
- Implemented username validation and allowlist support
- Improved plugin disable performance (5s to 1s)
New Features:
- Encryption Status Indicator: Footer now shows 🔒 E2E Encrypted or 🔓 Unencrypted
- Hotkey Alternatives: Alt+F (send file), Alt+C (code snippet), Alt+T (time format), Ctrl+T (cycle themes), Ctrl+L (clear chat)
- Command Encryption Fix: All admin/plugin text commands now sent as AdminCommandType to bypass encryption
- Username Validation: Usernames limited to 32 chars, alphanumeric +
_-., prevents injection attacks - Username Allowlist: Optional
MARCHAT_ALLOWED_USERSenv var for restricting server access - Dynamic Plugin Commands: Plugin-provided commands (e.g.,
:echo) automatically work in encrypted sessions
Bug Fixes:
- Fixed admin commands being encrypted and unreadable by server
- Fixed inconsistent command handling between text and hotkeys
- Fixed plugin commands not working in encrypted sessions
Technical Changes:
- Added
validateUsername()in server/client.go and server/handlers.go - Refactored command detection to use client-side allowlist instead of server-side blocklist
- Changed plugin disable timeout from 5 seconds to 1 second
- Added encryption status to UI footer and help text
- Updated help documentation with clear command organization
Improvements:
- Faster plugin disable operations
- Better UX in encrypted sessions with clear status indication
- More secure username handling across all commands
- Cleaner help documentation with logical grouping
Assets:
- marchat-v0.8.0-beta.11-linux-amd64.zip
- marchat-v0.8.0-beta.11-darwin-amd64.zip
- marchat-v0.8.0-beta.11-windows-amd64.zip
- marchat-v0.8.0-beta.11-android-arm64.zip
Full Changelog: v0.8.0-beta.10...v0.8.0-beta.11
Breaking Changes: None
Migration Guide:
- Username allowlist is optional - existing deployments work unchanged
- New username validation rules may reject previously valid usernames with special characters
- Existing configs and data are fully compatible
v0.8.0-beta.10
v0.8.0-beta.10
Released: 10 Oct 2025
Commit: 6d29a3b
Major Changes:
- Implemented plugin state persistence across server restarts
- Added automatic plugin discovery and loading on startup
- Fixed plugin uninstall file handle issues on Windows
- Fixed deadlock during plugin initialization failures
- Updated Docker image to Alpine 3.22
New Features:
- Plugin Persistence: Installed plugins automatically load on server startup
- State Management: Plugin enabled/disabled status saved to plugin_state.json
- Auto-Discovery: Server scans plugin directory and loads all installed plugins
- Unload Mechanism: Added UnloadPlugin() to properly release file handles
Bug Fixes:
- Fixed plugins requiring reinstall after server restart
- Fixed disabled plugins starting as enabled after restart
- Fixed "Access is denied" error when uninstalling plugins on Windows
- Fixed deadlock when plugin initialization fails during startup
- Fixed test timeout in TestUninstallPlugin
Technical Changes:
- Added PluginState struct with enabled status map
- Implemented loadPluginState() and savePluginState() methods
- Added discoverInstalledPlugins() to scan and load plugins on startup
- Modified EnablePlugin/DisablePlugin to persist state after changes
- Added UnloadPlugin() method to release plugin from host registry
- Changed StartPlugin cleanup to handle errors inline instead of calling StopPlugin
- Updated Dockerfile base image from Alpine 3.21 to Alpine 3.22
Improvements:
- Plugins persist across server restarts without reinstallation
- Plugin state (enabled/disabled) remembered between sessions
- Cleaner uninstall process without file locking issues
- More reliable plugin initialization with proper error handling
- Better handling of plugin lifecycle during auto-discovery
Assets:
- marchat-v0.8.0-beta.10-linux-amd64.zip
- marchat-v0.8.0-beta.10-darwin-amd64.zip
- marchat-v0.8.0-beta.10-windows-amd64.zip
- marchat-v0.8.0-beta.10-android-arm64.zip
Full Changelog: v0.8.0-beta.9...v0.8.0-beta.10
Breaking Changes: None
Migration Guide:
- Existing plugins will be auto-discovered on next server startup
- Plugin state file will be created automatically
- No manual migration required
v0.8.0-beta.7
v0.8.0-beta.7
Released: 09 Oct 2025
Commit: 804d89c
Major Changes:
- Implemented real-time log capture system for both admin panels (TUI and web)
- Admin panels now display live server logs from in-memory buffer (200 entries)
- Added OS-specific log export functionality with proper directory handling
- Fixed connection and disconnect metrics tracking to show accurate totals
- Converted critical server and hub events to structured logging
New Features:
- Live Log Display: Admin panels show real server logs that update as events occur
- Log Buffer: Circular buffer captures last 200 structured log entries in memory
- OS-Specific Export: Logs export to platform-appropriate directories:
- Windows:
%APPDATA%\marchat\logs - macOS:
~/Library/Application Support/marchat/logs - Linux:
~/.config/marchat/logs - Android/Termux:
$PREFIX/var/log/marchat
- Windows:
- Metrics Tracking: Hub now tracks total connections and disconnections with thread-safe counters
Bug Fixes:
- Fixed "Total Connections: 0" and "Total Disconnects: 0" in metrics panel
- Log export now creates actual files instead of returning placeholder success messages
- Admin panel logs no longer show static mock data
- Web admin panel logs populate from real server events
Technical Changes:
- Added
LogBufferstruct with thread-safe operations for log capture - Implemented
GetEntries()andGetRecentEntries()methods for log retrieval - Added
totalConnectionsandtotalDisconnectsfields to Hub struct with mutex protection - Created
GetTotalConnections()andGetTotalDisconnects()getter methods on Hub - Modified
logger.log()to capture entries in global buffer before output - Updated
updateMetrics()in both admin interfaces to read from Hub counters - Converted hub registration/unregistration to use
HubLogger.Info() - Converted admin ban/unban/kick operations to use
AdminLogger.Info() - Added startup logging with
ServerLogger.Info()andHubLogger.Info() - Replaced mock log generation with real buffer queries in both admin panels
Improvements:
- Both admin panels now show authentic, growing log histories
- Log entries include structured data (username, IP, component, etc.)
- Export functionality saves timestamped log files for debugging
- Metrics accurately reflect server activity since startup
- Better observability into server operations through structured logging
Assets:
- marchat-v0.8.0-beta.7-linux-amd64.zip
- marchat-v0.8.0-beta.7-darwin-amd64.zip
- marchat-v0.8.0-beta.7-windows-amd64.zip
- marchat-v0.8.0-beta.7-android-arm64.zip
Full Changelog: v0.8.0-beta.6...v0.8.0-beta.7
Breaking Changes: None - fully backward compatible
Migration Guide:
- No migration required - all existing configurations work unchanged
- Admin panels will now show real logs automatically
- Log exports will create files in OS-specific directories
- Metrics will accurately reflect connection counts from server startup
Improvements from v0.8.0-beta.6:
- Admin panels transformed from mock data to real-time server monitoring
- Export logs feature now functional with actual file output
- Metrics panel provides accurate connection statistics
- Better debugging capability with structured log capture
v0.8.0-beta.6
v0.8.0-beta.6
Released: 09 Oct 2025
Commit: 7d83df0
Major Changes:
- Fixed critical profile selection bug where profile modifications changed sort order
- Profile selection now returns actual profile object instead of unreliable index
- Enhanced profile identification using Name+ServerURL+Username composite matching
- Resolved profile selection mismatches during rename/delete operations
Bug Fixes:
- Profile selection UI now stores and returns the actual
ConnectionProfileobject - Fixed issue where
LastUsedtimestamp updates changed profile sort order mid-selection - Profile rename/delete operations no longer cause wrong profile to be selected
- Eliminated index-based selection errors when profiles are modified during UI interaction
Technical Changes:
- Added
selectedProfile *ConnectionProfilefield toProfileSelectionModelstruct - Updated
RunEnhancedProfileSelection()to return(*ConnectionProfile, error)instead of(int, error) - Updated
RunEnhancedProfileSelectionWithNew()to return(*ConnectionProfile, bool, error)instead of(int, bool, error) - Modified profile selection in
config.goto match profiles by Name+ServerURL+Username after reload - Updated
client/main.goto use profile object matching instead of index-based selection - Enhanced profile storage to capture selection before any modifications occur
Improvements:
- Reliable profile selection regardless of sort order changes
- Better handling of concurrent profile modifications during selection
- Improved user experience with profile management features (view/rename/delete)
- More robust profile identification across reload operations
- Preserved
build-release.ps1in version control to prevent loss
Assets:
- marchat-v0.8.0-beta.6-linux-amd64.zip
- marchat-v0.8.0-beta.6-darwin-amd64.zip
- marchat-v0.8.0-beta.6-windows-amd64.zip
- marchat-v0.8.0-beta.6-android-arm64.zip
Full Changelog: v0.8.0-beta.5...v0.8.0-beta.6
Breaking Changes: None - fully backward compatible
Migration Guide:
- No migration required - existing profiles and configurations continue to work unchanged
- Profile selection is now more reliable when using management features (rename/delete)
- All profile operations maintain correct selection state
Resolves Issues:
- Critical bug where modifying profiles during selection caused wrong profile to be used
- Profile selection index mismatch after sort order changes from timestamp updates