Skip to content

Releases: MuhametSmaili/hetki

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 12:18
0445629

Highlights

Hetki v0.4.0 adds pane-level navigation, previews, automatic status collection, safer workspace saves, and clearer CLI diagnostics.

Picker and navigation

  • Browse individual panes with aligned paths, foreground commands, and status indicators, including panes that share a directory.
  • Switch between flat and session/window tree views with Ctrl+T. Switch between All and Tracked scopes with Tab.
  • Tracked scope shows status-tracked panes, not workspace ownership. View and scope changes retain the search query.
  • Toggle an on-demand pane preview with Alt+P. Previews show the visible screen, without scrollback.
  • Jump to the previous session with Ctrl+O. The ↶ marker identifies its destination.
  • Hide redundant default-shell labels and show the active pane's command in tree windows.
  • Reuse loaded state during view changes, retain status indicators, and reduce redundant queries and rendering work.

Automatic pane status

  • Share cached status through an automatically started daemon for each tmux server.
  • Support OSC7501 application reports, OSC133 shell lifecycle tracking, and optional screen profiles.
  • Distinguish working, needs-input, idle, unknown, success, and failure states when the available evidence supports them.
  • Add bounded status delivery and recovery after daemon failures. Recovery cannot reconstruct reports lost during an outage.
  • Include an optional Kiro screen profile. Profiles require configuration and do not provide generic command-completion detection.

Workspace safety

  • Preserve authored startup commands when an existing workspace matches live panes unambiguously. Ambiguous preservation fails before replacing the file.
  • Preserve pane zoom and save readable layout presets. Presets approximate custom arrangements rather than preserve exact proportions.
  • Compare supported legacy and tmux JSON layout observations by geometry, without runtime pane IDs causing false mismatches.
  • Create replacement windows before deleting old windows during force reconciliation, preserving the existing session. See #13.
  • Keep an already-matching --dry-run read-only, without metadata changes or navigation.
  • Preserve literal startup-command text, including trailing semicolons and backslashes.
  • Resolve directory inheritance consistently and improve explicit-file validation.

Updates and diagnostics

  • Add hetki update --head for the latest pushed main commit. Hetki pins and verifies the commit before building.
  • Show errors and actionable hints on separate lines, with terminal-safe text.
  • Keep expected interruption quiet without hiding independent failures.
  • Build with Go 1.27.2, which fixes the standard-library vulnerabilities reported by the security scan.

Breaking changes and migration

Select workspaces explicitly

start and save now require exactly one --name (-n) or --path (-p). Positional selectors and automatic local-workspace discovery are removed.

# Named workspace in ~/.config/hetki/workspaces
hetki start -n work
hetki save -n work

# Explicit YAML file
hetki start -p ./work.yaml
hetki save -p ./work.yaml

Replace hetki start work with hetki start -n work.
Replace targetless local starts with hetki start -p ./.hetki.yaml.
Replace hetki save . with hetki save -p ./.hetki.yaml.
Use the actual .yaml or .yml filename for your workspace.

Review paths and shortcuts

  • Relative window paths resolve against the session root. Relative pane paths resolve against the effective window directory. Omitted paths inherit their parent directory.
  • Explicit session roots must resolve to existing absolute directories. Use absolute paths where you need to retain another location.
  • The picker starts in filter mode. Press Esc for normal mode, then ; for jump mode.
  • In normal mode, A creates a session and Ctrl+R refreshes. R/X rename/delete sessions, while r/x target windows.
  • The hetki switch command is removed. Use the picker or tmux's switch-client/attach-session commands.

Update source installations

The Go module path is now github.com/MuhametSmaili/hetki. Source builds require Go 1.27.2 or newer.

go install github.com/MuhametSmaili/hetki@v0.4.0

The updater no longer accepts --source or --pre. Release selection is stable-only. --head selects unreleased main code, not a stable source release.

If an older updater fails after the rename, use the new module path or the release binaries below.

Known limitations

  • Mise-managed installations still require mise-managed updates. Mise-aware hetki update support is separate future work.
  • Force reconciliation is not transactional. Deleting a linked window can affect unrelated sessions. See #12.
  • Named-layout changes alone are not yet enforced on existing windows. Raw JSON layouts remain unsupported as authored manifest input.
  • Upstream tmux 3.4 can crash when deleting zoomed windows. This release avoids that crash in test teardown, not in tmux itself.

Downloads

The release provides binaries for macOS and Linux on amd64 and arm64, plus SHA-256 checksums and GitHub build attestations.

Full changelog: v0.3.0 → v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 20:48
4dc56a6

Alpha release

image

This is an alpha release. Do not use it for critical work.

New

  • Run hetki with no arguments to open the interactive TUI.
  • The TUI shows workspaces, sessions, and windows in one flat list.
  • Filter items by name or by path. The best match receives focus.
  • Jump mode gives each item a short key label. Press the label to switch.
  • A frecency store ranks the items that you use the most.
  • A menu on each row shows the available actions.

Changes

  • Save operations detect conflicts. If the file changed on disk, Hetki keeps the new bytes and asks you to try again.
  • hetki start --force touches only the sessions in the selected workspace.
  • Tmux commands use stable IDs. This prevents actions on the wrong window.
  • Terminal output is safe. Paste input is sanitized.
  • The installer and the updater are more secure.
  • The release pipeline is reproducible.

Breaking changes

  • hetki with no arguments now opens the TUI. Use the subcommands for the previous behavior.
  • The list command is removed. Use the TUI instead.
  • Workspace YAML files must follow the new bounded contract. Hetki reports malformed files.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 08 Feb 14:18
d20a5e0

Changelog

  • 859951f Merge pull request #7 from MSmaili/dev
  • d20a5e0 Merge pull request #8 from MSmaili/dev
  • 72f75bd feat: add switch command for switching session/window/pane
  • 36fcba7 feat: disable usage on every error, and show only log errors
  • 4569d12 feat: support ~ instead of full home path
  • c0c1073 fix: allow duplicate windows
  • 324de65 fix: instead of attach we switch client after creation
  • 708f1d7 fix: save command now updates/adds current or --all session
  • 3ff42d0 fix: start project even without tmux running
  • 47ac8b1 refactor/feat: clean-up logs and add verbose flag
  • a7a7501 refactor: make session more explicit
  • 06832b7 refactor: make tmux as generic backend, easier later to add other multiplexer
  • bd81665 refactor: move run query to query for consistency

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 18 Jan 17:59

Changelog

  • a4d0890 feat: add --marker for listening sessions
  • e628190 fix: issue security issue/concenrs for script. we use only go for now

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 18 Jan 16:50

Changelog

v0.1.0

Choose a tag to compare

@MuhametSmaili MuhametSmaili released this 18 Jan 16:23

Changelog

  • d3af81e a simple start command to load session from my json file
  • d770a0f add a config loader with dual json sturcture
  • 3cefbe6 add compareMode, also make index non-pointer
  • 88d4cde add diff struct, comparing current and json-config
  • 85f4ee9 add index as mandatory better comperassion for name&index
  • 8c1ec7e add initial tmux commands
  • 2623135 add session comperassion
  • 8d686e7 add test for config loader
  • e8338ef add tmux index as int
  • 260d0be add window diffs
  • d69efe3 crate types for tmux
  • 75cd83f extend file-loader path
  • ff89243 feat: add a converter package
  • fe15925 feat: add and implement plan/reconcilation strategy which decides the script
  • 315c93a feat: add basepane index and add send-keys with some small fixes
  • d36783f feat: add cobra cli, and transfrom start with cobra cli
  • a79dc94 feat: add completion support for start
  • 9228507 feat: add completion support for svae
  • 071eb71 feat: add config resolver, for readin in workspace local or custom path
  • b48f8bd feat: add dry run and force strategy
  • 41ff235 feat: add layout support for windows
  • 1972394 feat: add list command
  • a65162d feat: add logger package
  • 810bdb4 feat: add pane zoom feature on config
  • dfd7ccc feat: add query for loading current state & panebase index
  • 6a5ef7b feat: add querying fur current session and tms_workspace_path
  • 358541e feat: add save command
  • a07d16a feat: add setEnv variable
  • 64ffddd feat: add simple readme
  • 97121c6 feat: add support for yaml easier to write for config than json
  • afe9e93 feat: add tmux pane support
  • bd8c39f feat: add writer for workspace
  • c861a15 feat: set workspace paht env
  • a61d492 fix: fix args for query and create a window with session
  • afcd24d fix: handle no windows name on config
  • 2d02aa0 fix: issue with .config workspaces was adding twice
  • 9c7a7af fix: make sure the config dir is on home/.config
  • e80248c fix: make update posible to update via go or script
  • ad5bdb6 fix: remove duplicate windows
  • 14ee153 init simple start to replace some of my bash scripts
  • 01ddaac make index as optional for now, and refactor clenaup
  • 34f45af perf: reduce one more IPC call for tmux and make querying in batches for pane
  • b736473 refactor: clean-up tmux client
  • f258098 refactor: cleanup start command
  • 979bc3f refactor: cleanup unused queries
  • 32c0ce6 refactor: improve error messages
  • 0065b4f refactor: improve the diffing windows, and remove the domain depenency
  • 6c8d219 refactor: improve the get current session
  • 9d4947a refactor: make currentSession name as part of loadStatequery
  • c23504a refactor: orchestrate the packages into cmd start
  • 0ef49bf refactor: refactor creating pnanes and make passing directory mandatory for now
  • e1cb94b refactor: refactoring and using config resolver
  • 0c12adf refactor: remove domain package, and keep type isolated
  • ea7e9f1 refactor: remove panebaseIndexQuery as alone query
  • c9f992d refactor: remove unnecessary commands from plan, plan is pure intent
  • 846b386 refactor: rename config to workspace
  • 3150e1f refactor: rename tmx to tms
  • 0581021 refactor: resolve is reposisble for the path-resolve and cleanup save
  • 4969f4c refactor: update println to use logger package
  • 7c5cd89 rename config package