hopback 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. hopback-0.2.0/CHANGELOG.md +171 -0
  2. hopback-0.2.0/Cargo.lock +1212 -0
  3. hopback-0.2.0/Cargo.toml +60 -0
  4. hopback-0.2.0/LICENSE +21 -0
  5. hopback-0.2.0/PKG-INFO +245 -0
  6. hopback-0.2.0/README.md +223 -0
  7. hopback-0.2.0/man/hopback.1 +100 -0
  8. hopback-0.2.0/pyproject.toml +44 -0
  9. hopback-0.2.0/skills/hopback/SKILL.md +68 -0
  10. hopback-0.2.0/src/adapters/antigravity.rs +817 -0
  11. hopback-0.2.0/src/adapters/claude.rs +518 -0
  12. hopback-0.2.0/src/adapters/codex.rs +611 -0
  13. hopback-0.2.0/src/adapters/copilot.rs +363 -0
  14. hopback-0.2.0/src/adapters/copilot_vscode.rs +380 -0
  15. hopback-0.2.0/src/adapters/crush.rs +437 -0
  16. hopback-0.2.0/src/adapters/cursor.rs +599 -0
  17. hopback-0.2.0/src/adapters/gemini.rs +810 -0
  18. hopback-0.2.0/src/adapters/goose.rs +581 -0
  19. hopback-0.2.0/src/adapters/grok.rs +564 -0
  20. hopback-0.2.0/src/adapters/kimi.rs +867 -0
  21. hopback-0.2.0/src/adapters/kiro.rs +408 -0
  22. hopback-0.2.0/src/adapters/mod.rs +453 -0
  23. hopback-0.2.0/src/adapters/opencode.rs +702 -0
  24. hopback-0.2.0/src/adapters/pi.rs +756 -0
  25. hopback-0.2.0/src/adapters/registry.rs +52 -0
  26. hopback-0.2.0/src/adapters/vibe.rs +348 -0
  27. hopback-0.2.0/src/agent.rs +153 -0
  28. hopback-0.2.0/src/app.rs +967 -0
  29. hopback-0.2.0/src/bin/hb.rs +3 -0
  30. hopback-0.2.0/src/bridge.rs +1630 -0
  31. hopback-0.2.0/src/cli.rs +255 -0
  32. hopback-0.2.0/src/config.rs +281 -0
  33. hopback-0.2.0/src/index.rs +279 -0
  34. hopback-0.2.0/src/launcher.rs +358 -0
  35. hopback-0.2.0/src/lib.rs +17 -0
  36. hopback-0.2.0/src/main.rs +3 -0
  37. hopback-0.2.0/src/model.rs +228 -0
  38. hopback-0.2.0/src/output.rs +447 -0
  39. hopback-0.2.0/src/query.rs +758 -0
  40. hopback-0.2.0/src/quick.rs +263 -0
  41. hopback-0.2.0/src/search.rs +607 -0
  42. hopback-0.2.0/src/stats.rs +288 -0
  43. hopback-0.2.0/src/store/dirs.rs +97 -0
  44. hopback-0.2.0/src/store/forks.rs +252 -0
  45. hopback-0.2.0/src/store/legacy.rs +360 -0
  46. hopback-0.2.0/src/store/mod.rs +512 -0
  47. hopback-0.2.0/src/store/overrides.rs +244 -0
  48. hopback-0.2.0/src/store/sessions.rs +442 -0
  49. hopback-0.2.0/src/store/settings.rs +93 -0
  50. hopback-0.2.0/src/title.rs +626 -0
  51. hopback-0.2.0/src/tui/app.rs +2395 -0
  52. hopback-0.2.0/src/tui/format.rs +296 -0
  53. hopback-0.2.0/src/tui/keys.rs +665 -0
  54. hopback-0.2.0/src/tui/layout.rs +223 -0
  55. hopback-0.2.0/src/tui/mod.rs +9 -0
  56. hopback-0.2.0/src/tui/render.rs +1959 -0
  57. hopback-0.2.0/src/tui/theme.rs +86 -0
  58. hopback-0.2.0/tests/antigravity_adapter.rs +784 -0
  59. hopback-0.2.0/tests/claude_adapter.rs +80 -0
  60. hopback-0.2.0/tests/cli_actions.rs +463 -0
  61. hopback-0.2.0/tests/codex_adapter.rs +280 -0
  62. hopback-0.2.0/tests/cursor_adapter.rs +753 -0
  63. hopback-0.2.0/tests/gemini_adapter.rs +585 -0
  64. hopback-0.2.0/tests/goose_adapter.rs +441 -0
  65. hopback-0.2.0/tests/grok_adapter.rs +786 -0
  66. hopback-0.2.0/tests/handoff.rs +46 -0
  67. hopback-0.2.0/tests/indexing.rs +314 -0
  68. hopback-0.2.0/tests/json_output.rs +361 -0
  69. hopback-0.2.0/tests/kimi_adapter.rs +801 -0
  70. hopback-0.2.0/tests/kiro_adapter.rs +397 -0
  71. hopback-0.2.0/tests/non_interactive.rs +392 -0
  72. hopback-0.2.0/tests/opencode_adapter.rs +756 -0
  73. hopback-0.2.0/tests/pi_adapter.rs +614 -0
  74. hopback-0.2.0/tests/quick_continue.rs +262 -0
  75. hopback-0.2.0/tests/title_cleaning.rs +271 -0
@@ -0,0 +1,171 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.2.0] - 2026-11-13
11
+
12
+ The relaunch of aiz as hopback.
13
+
14
+ ### Added
15
+
16
+ - `hb`, a short command installed next to `hopback`. Both are the same program.
17
+ - First-run import of aiz pins, local renames, hidden sessions and the
18
+ permission setting. The old `~/.cache/aiz` data is left in place.
19
+ - Packaging for every install channel: cargo-dist (release archives for
20
+ macOS and Linux on arm64 and x86_64 with checksums, a shell installer, a
21
+ Homebrew formula for `avgvi/homebrew-tap`, an npm installer and the release
22
+ workflow), a `pyproject.toml` for maturin wheels, and a Nix flake. Every
23
+ channel installs both `hopback` and `hb`. See `docs/packaging.md`.
24
+ - `--agent-context` prints a bundled Agent Skill (`skills/hopback/SKILL.md`)
25
+ that tells a coding agent how to search, page, resume and fork with `hb`.
26
+ - `hopback completions bash|zsh|fish` (also elvish and powershell) and
27
+ `hopback man`; the generated man page is in `man/hopback.1`.
28
+ - `AGENTS.md` for contributors and `llms.txt`.
29
+ - `hopback pin`, `unpin`, `rename`, `hide` and `unhide <selector>`, each with
30
+ `--json` to print the session after the change.
31
+ - `hopback fork --json` prints the new session, its `resume_command` and the
32
+ `launch_command` instead of starting the agent.
33
+ - Search-line editing: ← → Home End, `Ctrl+A`, `Ctrl+E`, `Ctrl+W`, `Ctrl+U`
34
+ and Delete, with a real cursor.
35
+ - Mouse support: click selects, double-click resumes, the wheel scrolls the
36
+ list or the preview under the pointer.
37
+ - Adapters for Antigravity (`agy`), Kimi Code, Pi, Cursor CLI, Grok Build and
38
+ Gemini CLI, each with its own id, badge color and resume command.
39
+ - `--json`: the matching sessions as one JSON object on stdout, with a
40
+ versioned schema (`schema_version: 1`), local metadata (`pinned`, `hidden`,
41
+ `original_title`, `forked_from`) and the exact `resume_command`. Paging with
42
+ `--limit`, `--offset` and `--all`. See `docs/json.md`.
43
+ - Quick continue: `hb .` resumes the most recently used session of the current
44
+ folder, whatever the agent, or of the closest parent folder that has one.
45
+ `--agent` narrows it; with no session it exits 1 with a clear message.
46
+ - `--print` prints the folder and the resume command instead of running it.
47
+ - `--no-refresh` to answer from the existing index, and `--include-hidden`.
48
+ - CI on Linux and macOS: `cargo fmt --check`, `cargo clippy` with warnings
49
+ denied, and `cargo test`.
50
+ - Kiro CLI sessions are indexed, in both layouts it keeps under
51
+ `~/.kiro/sessions`, and resume with `kiro-cli chat --resume-id <id>`.
52
+ - Goose sessions are indexed from its SQLite store and resume with
53
+ `goose session --resume --session-id <id>`; `Ctrl+F` forks one with Goose's
54
+ own `--fork`. When the Goose desktop app is installed but `goose` is not on
55
+ `PATH`, hopback runs the copy inside the app.
56
+ - `Ctrl+T` pins or unpins the selected session, `Ctrl+R` or `F2` renames it,
57
+ and `Ctrl+X` hides it, straight from the list. The footer shows the pin and
58
+ rename keys.
59
+ - Filter keywords in the search line are colored: the keyword, an agent's name
60
+ in that agent's color, other values in green, and a value hopback does not
61
+ know in red and struck through.
62
+ - While an agent or date value is being typed, the rest is suggested after the
63
+ cursor. `Tab` or `→` takes it, and the list already shows the suggested
64
+ filter.
65
+ - Right-click on a session opens the actions menu for it.
66
+ - The rename box has a cursor and the same editing keys as the search line.
67
+ - `--json --include-messages` adds `messages`, the prompts and replies of each
68
+ session, to the output.
69
+ - hopback reads the permission mode Claude Code records in a session, so a
70
+ session that ran with skipped permissions is known as one.
71
+
72
+ ### Changed
73
+
74
+ - Long titles in the table are cut with `…` instead of being clipped, and a
75
+ translated fork's title is cleaned like any other.
76
+ - The README is rewritten around the install commands, `hb .`, translated
77
+ forks, the supported agents and the keys.
78
+ - New keys. Typing always goes to the search; `Ctrl+O` opens an actions menu
79
+ for the selected session (`f` fork, `p` pin, `r` rename, `h` hide, `y`
80
+ copy); `Ctrl+P` now toggles the preview; `F1` lists every key; `Esc` clears
81
+ the search and quits only when it is already empty.
82
+ - Removed ``Ctrl+` `` and the direct `Ctrl+P` pin, `Ctrl+R` rename and
83
+ `Ctrl+X` hide bindings. Pin, rename and hide are in the `Ctrl+O` menu.
84
+ - New TUI layout: a status line with the refresh summary and "shown /
85
+ indexed" counts, a framed search box with a syntax hint, agent tabs with
86
+ session counts in each agent's color, a table with Agent, Title, Directory,
87
+ Turns and Age columns plus pin (★) and fork (↳) marks, a preview to the
88
+ right of the table, and a footer with each key in a chip. Narrow terminals
89
+ drop the Directory column first, then the preview.
90
+ - The preview shows the session's title, folder and local date above the
91
+ conversation, and colors the user's prompts apart from the replies.
92
+ - Removed the Ctrl+Up / Ctrl+Down preview resize; the preview now takes a
93
+ fixed share of the width.
94
+ - The index is rebuilt once after an upgrade that changes how sessions are
95
+ read. Pins, renames and hidden flags are kept.
96
+ - An unknown `--agent` value is now an error instead of being ignored.
97
+
98
+ - The project is renamed from aiz to hopback: crate, binaries, help text and
99
+ the store location (`~/.cache/hopback/hopback.db`).
100
+ - `Tab` writes the agent into the search line as `agent:<name>` instead of
101
+ keeping a separate, invisible tab filter. A typed `agent:` filter fills in
102
+ the matching tabs, and `--agent` on the command line shows up there too.
103
+ - Every pop-up (actions, fork, rename, hide, help) is drawn on one frame with
104
+ the same selection bar and hint line.
105
+ - Resuming and forking no longer ask about permissions. A session starts in
106
+ the mode it was started with: with the agent's skip-permission flags when
107
+ it ran that way, without them otherwise. `--yolo` and
108
+ `hb config permission set normal|yolo|inherit` still override that.
109
+ - A translated fork holds the conversation as it was. It no longer starts
110
+ with a notice telling the new agent to treat the transcript as untrusted
111
+ history, tool calls keep their names, and Codex's instructions are not
112
+ replaced. The one addition is `[hopback]` in front of the title the target
113
+ agent shows.
114
+ - A fork into Codex is listed with the sandbox and approval settings of your
115
+ latest Codex session in that folder (or anywhere, when the folder has
116
+ none) instead of being forced to read-only. It is recorded for the model
117
+ provider Codex is configured with, where it used to say `openai`, which
118
+ made Codex refuse to open it on any other provider.
119
+ - A fork into Codex shows the earlier replies in Codex's transcript, not
120
+ only the prompts.
121
+ - A fork into Claude Code leaves out the instructions Codex gave itself,
122
+ which used to appear as prompts you had typed.
123
+ - A Codex session counts as started with skipped permissions only when it
124
+ ran with approvals off and no sandbox. Runs with approvals off inside a
125
+ sandbox, which is what `codex exec` does, resume normally.
126
+ - The agent skill and `llms.txt` no longer tell agents to ask for approval
127
+ before resuming, forking, pinning or renaming.
128
+ - The actions menu lists each action with the key that runs it directly, in
129
+ the order pin, rename, fork, copy, hide. Its single-letter keys are gone.
130
+ - Key chips and hint text use fixed colors instead of the terminal's own
131
+ grays, which were too light or too dim depending on the terminal theme.
132
+ - The footer drops chips on a narrow terminal instead of running off the
133
+ edge, and no longer lists `Tab` and `Ctrl+P` (they are in the `F1` help).
134
+ - A footer message such as "pinned" clears on the next key press.
135
+
136
+ ### Fixed
137
+
138
+ - Codex sessions written by current Codex builds are indexed. Prompts are now
139
+ read from `response_item` messages, the session id comes from the rollout
140
+ file name, and subagent rollouts (reviews, guardian checks, spawned threads)
141
+ are skipped, as `codex resume` does.
142
+ - Titles are readable: paste wrappers (`<pasted_content …>`), slash-command
143
+ envelopes, injected context blocks, image labels and leading slash commands
144
+ are stripped, and the title falls back to the first meaningful line a user
145
+ wrote. Titles are one line, at most 80 characters.
146
+ - Claude Code sessions use the name Claude Code itself shows: the `/rename`
147
+ sidecar, then `custom-title` records, the sessions index and `ai-title`
148
+ records, before the first prompt.
149
+ - Codex sessions are titled from the prompt as typed, not from the model input
150
+ with its image labels and context blocks.
151
+ - OpenCode sessions are found again: the adapter reads the `session_v2` and
152
+ `session_message` tables of current OpenCode as well as the older schema,
153
+ and skips subagent child sessions.
154
+ - A Codex thread rename in `session_index.jsonl` updates the indexed title.
155
+ - Saving an empty name in the rename box brings the original title back at
156
+ once, not only after a restart.
157
+ - A half-typed `agent:` value no longer empties the list.
158
+
159
+ ## [0.1.0] - 2026-06-19
160
+
161
+ ### Added
162
+
163
+ - Initial release as aiz: a TUI that indexes Claude Code, Codex, Copilot CLI,
164
+ Copilot in VS Code, Crush, OpenCode and Vibe sessions, searches them with
165
+ SQLite FTS5 and fuzzy matching, and resumes or forks the selected session.
166
+ - Pins, local renames and hidden sessions, kept in hopback's own store.
167
+ - Native forks, and translated forks between Claude Code and Codex.
168
+
169
+ [Unreleased]: https://github.com/avgvi/hopback/compare/v0.2.0...HEAD
170
+ [0.2.0]: https://github.com/avgvi/hopback/compare/v0.1.0...v0.2.0
171
+ [0.1.0]: https://github.com/avgvi/hopback/releases/tag/v0.1.0