v0.7.0
What's Changed
Added
- Backend trait system — Extracted a unified
Backendtrait (src/backend/mod.rs) with dedicatedGlabBackend(src/backend/glab.rs) andGhBackend(src/backend/gh.rs) implementations, replacing the oldsrc/gitlab/translation layer. The trait provides ~40 methods covering all API interactions with proper async dispatch (#165). - Domain model layer — Consolidated domain types into
src/domain/with clean modules for branches, deployments (Environment & Deployment), issues, milestones, mr, notifications, pipelines, releases, and runners, each with serde-powered structs and dedicated list/get helpers. - crates.io publishing — Package renamed to
glab-tui-crate(binary staysglab-tui) for publishing on crates.io;cargo install glab-tui-cratenow works. - Homebrew & Scoop distribution — Added
.gitmodulesforhomebrew-glab-tuiandscoop-glab-tuimanifest repos, with CI automation to update formulas on release. async-traitdependency — Addedasync-trait = "0.1.89"to support the new asyncBackendtrait.
Fixed
- is_draft detection — Fixed draft status not being correctly parsed from GitLab MR responses.
- GitLab nerd font icons — Replaced custom nerd font GitLab icon with standard FontAwesome icon for better cross-terminal compatibility.
- Repository argument encoding — Removed spurious URL encoding from
glabnative subcommand-Rarguments, fixing entity fetch failures when project paths contain special characters (#181). - Non-blocking CLI commands — Reverted to non-blocking subprocess spawning to prevent UI freeze during CLI calls (#183).
- Diff rename handling — Fixed diff parsing when files are renamed, ensuring renamed file diffs are displayed correctly (#184).
- Terminal output corruption — Resolved extraneous printouts corrupting the terminal display (#173).
- Trace view regression — Fixed the job trace viewer that was not displaying output (#172).
- Code injection mitigation — Applied escaping fixes for CodeQL security alert #25 (shell argument injection) (#168).
- macOS CI hangs — Prevented
cargo testfrom hanging on macOS runners by fixing PTY lifecycle. - Duplicate release notes — CI now generates release notes only once in the matrix build.
Changed
- Architecture overhaul — Removed the entire
src/gitlab/module tree. Replaced withsrc/backend/(trait + per-host impls) andsrc/domain/(data types + logic). TheGitlabClientnow lives insrc/domain/client.rsand delegates to the backend trait. - Package identity — Cargo package renamed from
glab-tuitoglab-tui-crateto free theglab-tuiname for the binary. The install command changes tocargo install glab-tui-crate. - Release automation — CI
release.ymlnow triggers manifest updates on Homebrew and Scoop submodules after a release publish.
Dependencies
- Bump
tomlfrom0.8to1.1.3+spec-1.1.0 - Bump
tokiofrom1.52.3to1.53.0 - Add
async-trait0.1.89 - Bump
the patch-updates groupwith 4 dependency updates - Bump
docker/login-action,docker/build-push-action,actions/checkout(CI)
Full Changelog: v0.6.0...v0.7.0