jjhub 0.1.13 → 0.1.14

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jjhub",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "jjhub — GitHub CLI with Jujutsu-native superpowers: stable change IDs, stacks, platform-wide undo, and conflicts that wait, layered over plain GitHub repos by a JJHub server.",
5
5
  "bin": {
6
6
  "jjhub": "./dist/cli/jjhub.mjs"
@@ -68,6 +68,10 @@ change land <changeId> [--force] waits for real CI triggered by its own re
68
68
  re-syncs a behind branch, then merges; --force bypasses
69
69
  change split <changeId> <newTitle>
70
70
  change checks <changeId> list GitHub check runs for a change
71
+ change actions <changeId> show bounded GitHub Actions workflow and job evidence
72
+ change deployments <changeId> show bounded GitHub deployment evidence
73
+ change security <changeId> show bounded GitHub code-scanning evidence
74
+ change issues <changeId> show linked GitHub issue context for a change
71
75
 
72
76
  stack create <title> [--id x] [--changes CHG-1,CHG-2]
73
77
  stack list
@@ -75,6 +79,7 @@ stack land <stackId> [--force] same check-run gate as change land
75
79
  stack delete <stackId> disband — members become loose changes (undoable)
76
80
  stack reorder <stackId> <changeId,changeId,...>
77
81
  stack checks <stackId> every member's GitHub check runs, one batched round trip
82
+ stack issues <stackId> linked issue and external-blocker summary for a stack
78
83
 
79
84
  bookmark list
80
85
  bookmark delete <name> [--force] --force required for the default (trunk) bookmark
@@ -100,7 +105,7 @@ auth sessions list your live sessions; auth revoke <id>
100
105
  auth logout forget the saved connection/token
101
106
  auth status who the saved credential authenticates as
102
107
 
103
- mcp serve MCP server over stdio (59 tools) for agent clients
108
+ mcp serve MCP server over stdio (77 tools) for agent clients
104
109
  mcp serve --http <port> the same tools over Streamable HTTP (POST /)
105
110
  acp serve Agent Client Protocol agent over stdio (Zed's agent
106
111
  panel, ...) — every operation as a slash command
@@ -112,6 +117,20 @@ daemon <localRepoPath> [--once] [--interval 5] [--engine auto|subprocess|isomorp
112
117
  daemon start [alias|localRepoPath] [--interval 5] [--engine ...] [--two-way]
113
118
  spawn the same sync as a detached background process
114
119
  daemon stop [alias] | daemon status [alias]
120
+
121
+ topology <localRepoPath> [--engine subprocess]
122
+ inspect explicit local remote/bookmark topology; never selects or rewrites a push route
123
+
124
+ revset <localRepoPath> <expression> [--engine subprocess]
125
+ evaluate the installed jj binary's revset in exactly the named workspace;
126
+ this is local, read-only discovery rather than a server-side approximation
127
+
128
+ content preview <localRepoPath> <split|absorb|squash|duplicate|restore>
129
+ --source <jj-change-id> [--destination <jj-change-id>] [--path <relative-path>]...
130
+ content apply <localRepoPath> <split|absorb|squash|duplicate|restore>
131
+ same selection plus --expected-operation <jj-operation-id> returned by preview
132
+ local-only jj content curation; checked against jj's immutable policy and
133
+ never implemented as a browser patch transform
115
134
  ```
116
135
 
117
136
  Anything else (`pr`, `issue`, ...) is passed through to `gh` — e.g. `jjhub pr view 7`. `jjhub auth`
@@ -126,12 +145,12 @@ vars needed. `jjhub auth status` confirms what's currently in effect.
126
145
 
127
146
  ### Identity & permissions (issue #43: GitHub-federated)
128
147
 
129
- A JJHub user IS a GitHub account. `jjhub auth login` runs an OAuth device flow against the
148
+ A JJHub user is a GitHub account. `jjhub auth login` runs an OAuth device flow against the
130
149
  JJHub server's own authorization server: open the printed URL, sign in with GitHub, confirm
131
150
  the code, and the CLI saves a JJHub-issued OAuth token. Every mutation is attributed to that
132
151
  identity (visible in `jjhub op log`).
133
152
 
134
- What you can do on a repo is asked of GitHub LIVE at request time (cached ~60s):
153
+ What you can do on a repo is asked of GitHub live at request time (cached ~60s):
135
154
  GitHub `admin` → owner, `maintain`/`write` → writer, `triage`/`read` → reader. There is no
136
155
  internal membership table and nothing to manage in JJHub — manage collaborators on GitHub.
137
156
 
@@ -195,11 +214,40 @@ npm run jjhub -- daemon . --once # one-shot sync; omit --once to loop every
195
214
  npm run jjhub -- op log # verify the sync landed as a new operation
196
215
  ```
197
216
 
217
+ ### Discover local jj changes with a revset
218
+
219
+ ```bash
220
+ npm run jjhub -- revset . 'mutable() & descendants(@-)'
221
+ npm run jjhub -- revset . 'bookmarks() | remote_bookmarks()' --json
222
+ ```
223
+
224
+ The expression is passed to the installed `jj` binary as one argument, never
225
+ through a shell. The workspace path is explicit because `@`, aliases, and
226
+ immutable boundaries are facts about that specific local workspace. This first
227
+ read-only form does not send local commits or filesystem paths to JJHub.
228
+
229
+ ### Curate local change content
230
+
231
+ ```bash
232
+ npm run jjhub -- content preview . split \
233
+ --source <jj-change-id> --title "Extract validation" --path src/checkout.ts
234
+ npm run jjhub -- content apply . split \
235
+ --source <jj-change-id> --title "Extract validation" --path src/checkout.ts \
236
+ --expected-operation <operation-id-from-preview>
237
+ ```
238
+
239
+ The non-interactive local surface delegates `split`, `absorb`, `squash`,
240
+ `duplicate`, and `restore` to the installed jj binary with structured argument
241
+ arrays. A preview's jj operation id is mandatory for apply, and immutable
242
+ targets are refused without `--ignore-immutable`. `--path` selects complete
243
+ relative paths; interactive hunk selection remains jj's configured diff editor.
244
+ Run `jjhub daemon . --once` afterwards to reconcile the local graph.
245
+
198
246
  ### Resolve a conflict
199
247
 
200
248
  ```bash
201
249
  npm run jjhub -- conflict list # note the conflict id
202
- npm run jjhub -- conflict resolve CONFLICT-abc123 left # or: right | edited | preserve_unresolved
250
+ npm run jjhub -- conflict resolve <conflict-id> left # or: right | edited | preserve_unresolved
203
251
  npm run jjhub -- conflict list # confirm it now reads Resolved
204
252
  ```
205
253