The shortcut/desktop setup was only offered when the user chose the interactive wizard path; the default config path skipped them entirely. Move both setup_shortcut_wizard and setup_desktop_integration_wizard calls out of run_wizard and into ensure_config_exists so they always run after the config file is written, regardless of the setup mode chosen.
6.9 KiB
6.9 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[0.9.1] - 2026-03-01
Fixed
- Shortcut and desktop integration wizards are now offered regardless of whether the user chose the interactive wizard or the default config on first run; previously they were only offered in the wizard path
[0.9.0] - 2026-03-01
Added
- First-run setup choice prompt: when no configuration file exists, tmuxido now asks whether to run the interactive wizard or apply sensible defaults immediately
SetupChoiceenum andparse_setup_choice_inputinuimodule (pure, fully tested)Config::write_default_confighelper for writing defaults without any promptsConfig::run_wizardextracted fromensure_config_existsfor clarity and testabilityrender_setup_choice_promptandrender_default_config_savedrender functions
[0.8.3] - 2026-03-01
Fixed
Cargo.locknow committed alongside version bumps
[0.8.2] - 2026-03-01
Fixed
install.sh: grep pattern fortag_namenow handles the space GitHub includes after the colon in JSON ("tag_name": "x"instead of"tag_name":"x")
[0.8.1] - 2026-03-01
Fixed
install.sh: removed-fflag from GitHub APIcurlcall so HTTP error responses (rate limits, 404s) are printed instead of silently discarded; shows up to 400 bytes of the raw API response when the release tag cannot be parsed
[0.8.0] - 2026-03-01
Added
- Keyboard shortcut setup wizard on first run and via
tmuxido --setup-shortcut - Auto-detects desktop environment from
XDG_CURRENT_DESKTOP/HYPRLAND_INSTANCE_SIGNATURE - Hyprland: appends
binddentry to~/.config/hypr/bindings.conf; prefersomarchy-launch-tuiwhen available, falls back toxdg-terminal-exec - GNOME: registers a custom keybinding via
gsettings - KDE: appends a
[tmuxido]section to~/.config/kglobalshortcutsrc - Conflict detection per DE (Hyprland via
hyprctl binds -j, KDE via config file, GNOME via gsettings); suggests next free combo from a fallback list --setup-desktop-shortcutflag to (re-)install the.desktopentry and icon at any timeshortcutmodule (src/shortcut.rs) with full unit and integration test coverage- Icon and
.desktopfile installed byinstall.shand offered in the first-run wizard
[0.7.1] - 2026-03-01
Fixed
- Interactive setup wizard now asks for a tmux layout when a window has 2 or more panes
- Layout selection shown in post-wizard summary
Changed
- README: Added ASCII art previews for each available tmux layout
[0.7.0] - 2026-03-01
Changed
install.shnow downloads from GitHub Releases- Self-update now queries the GitHub Releases API for new versions
- Releases are published to both Gitea and GitHub
[0.6.0] - 2026-03-01
Added
- Periodic update check: on startup, if
update_check_interval_hourshave elapsed since the last check, tmuxido fetches the latest release tag from the Gitea API and prints a notice when a newer version is available (silent on network failure or no update found) - New
update_checkmodule (src/update_check.rs) with injected fetcher for testability update_check_interval_hoursconfig field (default 24, set to 0 to disable)- Cache file
~/.cache/tmuxido/update_check.jsontracks last-checked timestamp and latest known version across runs
[0.5.2] - 2026-03-01
Added
- Test for
detect_archasserting asset name followstmuxido-{arch}-linuxformat
[0.5.1] - 2026-03-01
Fixed
- Tmux window creation now targets windows by name instead of numeric index, eliminating
"index in use" and "can't find window" errors when
base-indexis not 0 - Self-update asset name corrected from
x86_64-linuxtotmuxido-x86_64-linuxto match what CI actually uploads, fixing 404 on--update - CI release pipeline now deletes any existing release for the tag before recreating, preventing 409 Conflict errors on retagged releases
[0.5.0] - 2026-03-01
Added
- Interactive configuration wizard on first run with styled prompts
lipglossdependency for beautiful terminal UI with Tokyo Night theme colors- Emoji-enhanced prompts and feedback during setup
- Configure project paths interactively with comma-separated input
- Configure
max_depthfor project discovery scanning - Configure cache settings (
cache_enabled,cache_ttl_hours) - Configure default session windows interactively
- Configure panes within each window with custom names
- Configure startup commands for each pane (e.g.,
nvim .,npm run dev) - New
uimodule with styled render functions for all prompts - Comprehensive summary showing all configured settings after setup
[0.4.2] - 2026-03-01
Fixed
- Version mismatch: bumped Cargo.toml version to match release tag, fixing
--updatefalse positive
[0.4.1] - 2026-03-01
Added
- Self-update feature (
tmuxido --update) to update binary from latest GitHub release
[0.4.0] - 2026-03-01
Added
- Self-update feature (
tmuxido --update) to update binary from latest GitHub release - New
self_updatemodule with version comparison and atomic binary replacement --updateCLI flag for in-place binary updates- Backup and rollback mechanism if update fails
[0.3.0] - 2026-03-01
Added
- Dependency check for
fzfandtmuxat startup, before any operation - Automatic Linux package manager detection (apt, pacman, dnf, yum, zypper, emerge, xbps, apk)
- Interactive installation prompt when required tools are missing
depsmodule with injectableBinaryCheckertrait for unit testing without hitting the real system- Integration tests in
tests/deps.rs(11 tests using realSystemBinaryChecker) - Docker test suite in
tests/docker/with 15 scenarios simulating a fresh Ubuntu 24.04 user
Fixed
- Release pipeline
publishstep now readsDRONE_TAGvia awkENVIRONto prevent Drone's${VAR}substitution from wiping local shell variables before the shell runs
[0.2.4] - 2026-03-01
Fixed
- Coverage percentage calculation in CI (correct field from tarpaulin JSON output)
- Release pipeline trigger now matches
v*tag format instead of[0-9]*
[0.2.2] - 2026-02-28
Added
- Coverage badge generated by
cargo-tarpaulinin CI, hosted in Gitea Generic Package Registry - CI status, coverage, version, and Rust edition badges in README
[0.2.1] - 2026-02-28
Added
- Drone CI pipeline (
ci) runningcargo fmt --check,cargo clippy, andcargo teston every push and pull request
[0.2.0] - 2026-02-28
Added
- Unit tests for
cache,session, andconfigmodules - Integration tests for scan, session config, and cache lifecycle
Changed
- Refactored business logic into
lib.rsfor better testability;main.rsis now a thin entrypoint
[0.1.1] - 2026-02-28
Fixed
- Removed personal path references from default configuration and examples
[0.1.0] - 2026-02-28
Added
- Initial release of tmuxido