@jinion/cli 0.3.491 → 0.4.524
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/CHANGELOG.md +249 -0
- package/bin/jinion.js +12 -1
- package/dist/app/app.js +13 -5
- package/dist/app/app.js.map +1 -1
- package/dist/app/claude-notes.js +19 -0
- package/dist/app/claude-notes.js.map +1 -0
- package/dist/app/release-notes.js +20 -0
- package/dist/app/release-notes.js.map +1 -0
- package/dist/app/settings-file.js +7 -0
- package/dist/app/settings-file.js.map +1 -0
- package/dist/app/status-line.js +8 -2
- package/dist/app/status-line.js.map +1 -1
- package/dist/app/updates.js +17 -0
- package/dist/app/updates.js.map +1 -0
- package/dist/app/views.js +6 -0
- package/dist/app/views.js.map +1 -1
- package/dist/main.js +4 -2
- package/dist/main.js.map +1 -1
- package/dist/panels/map.js +80 -0
- package/dist/panels/map.js.map +1 -0
- package/dist/panels/onboarding/claude-setup-panel.js +68 -0
- package/dist/panels/onboarding/claude-setup-panel.js.map +1 -0
- package/dist/panels/release-notes.js +60 -0
- package/dist/panels/release-notes.js.map +1 -0
- package/dist/state/session.js +2 -0
- package/dist/state/session.js.map +1 -1
- package/dist/terminal/apple-terminal.js +1 -4
- package/dist/terminal/apple-terminal.js.map +1 -1
- package/dist/ui/banner.js +13 -1
- package/dist/ui/banner.js.map +1 -1
- package/dist/ui/use-map-overview.js +27 -0
- package/dist/ui/use-map-overview.js.map +1 -0
- package/dist/update/updater.js +68 -0
- package/dist/update/updater.js.map +1 -0
- package/dist/update/versions.js +31 -0
- package/dist/update/versions.js.map +1 -0
- package/package.json +4 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# @jinion/cli
|
|
2
|
+
|
|
3
|
+
## 0.4.524
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- d7d4256: Bring your setup from Claude Code: onboarding's last step shows what already works in Jinion (Claude Code's login, skills, plugins, MCP servers), brings your notes in with one key or button, and says what stays behind. If you went through onboarding before, it shows once at your next start. A project with Claude Code notes offers them the first time it opens after that: in the terminal's banner, and on a new thread in the desktop app. The API gains `setup/claude`, `memory/import` and `setup/claude-done`.
|
|
8
|
+
- e313497: The CLI updates itself. While it is open it looks for a newer version a little after it starts and every four hours, installs it in the background into `~/.jinion/versions` without `sudo` and without touching the version running, and says `ready · restart to update` on the right of the status line; the next `jinion` runs it. Turn it off with `"autoUpdates": false` in `~/.jinion/settings.json` or `JINION_DISABLE_AUTOUPDATER=1`.
|
|
9
|
+
- 32eb0d4: See what Jinion read from your project, which the agent works from: what it is built with, how its code is written, how it looks and what its files offer each other. `/map` in the terminal, with a line of it in the banner; in the desktop app, a Project map page and a card on a new thread. Where the project's linter has no rule for a habit, Add the rules asks the agent to add them.
|
|
10
|
+
- e2d30c1: See what's new after an update. The desktop app opens What's new on the first start on a new version, with every version since the one you had, and keeps it in the account menu. The terminal says once in the banner that Jinion was updated, and `/release-notes` shows every version.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [d7d4256]
|
|
15
|
+
- Updated dependencies [9e3b5d9]
|
|
16
|
+
- Updated dependencies [faddeff]
|
|
17
|
+
- Updated dependencies [32eb0d4]
|
|
18
|
+
- Updated dependencies [e2d30c1]
|
|
19
|
+
- @jinion/core@0.3.0
|
|
20
|
+
|
|
21
|
+
## 0.3.491
|
|
22
|
+
|
|
23
|
+
### Minor Changes
|
|
24
|
+
|
|
25
|
+
- 1ce40b6: Rate an answer and tell us what went wrong: the thumbs under an answer in the desktop app, `/feedback` in the CLI, with the conversation sent along only when you choose to.
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- fcc666b: Set how long the agent's answers run: Brief, Balanced or Detailed, from the next message and in every project. In the
|
|
30
|
+
terminal with `/answers`, in the desktop app under Settings, Personalization.
|
|
31
|
+
- 8b5af07: The agent explains at the level you show: short and technical when you are, plainer when you describe what you see,
|
|
32
|
+
and step by step, with what each step does and what you'll see, when you say you don't follow.
|
|
33
|
+
- 5b7fa6e: Debug mode, the agent that finds why something fails. It traces the problem through the code, adds diagnostics that
|
|
34
|
+
write to an evidence log Jinion keeps for the conversation, makes the problem happen or asks you to, and reports the
|
|
35
|
+
path, the evidence, the cause and what is still open before it fixes anything. `/debug <problem>` starts it, and
|
|
36
|
+
`shift+tab` and `/mode` reach it too, on Claude and on Codex.
|
|
37
|
+
- 4930b2a: Edit a message before it goes: `up` in an empty prompt takes back the steered messages the agent hasn't read yet, and
|
|
38
|
+
the queued ones, so the agent no longer gets them. `enter` steers with them again, or puts them back in the queue when
|
|
39
|
+
they were all queued, or sends them if the turn has ended meanwhile. A steered message comes back with Claude, not Codex.
|
|
40
|
+
- beffea8: Jinion now asks you to sign in before you start, with GitHub or with a 6-digit code sent to your email. You stay signed
|
|
41
|
+
in on your machine, also without a connection. See your account or sign out with `/profile` in the terminal, or under
|
|
42
|
+
Settings, Profile in the desktop app.
|
|
43
|
+
- 47b43a9: On a Mac, the prompt deletes a word with `option+backspace` and the line with `cmd+backspace`, and in Terminal.app Jinion
|
|
44
|
+
offers once to turn on Use Option as Meta key, which those keys need there; `/terminal-setup` does it any time. `/mcp`
|
|
45
|
+
signs in to Linear and Notion through their own servers, and no longer lists claude.ai connectors it can't sign in to.
|
|
46
|
+
- 64172ef: Jinion is invite-only during the beta: after signing in, a new account enters its invite code and answers a few
|
|
47
|
+
questions before Jinion opens, in the terminal and in the desktop app. Fast typing no longer drops keys in the prompt.
|
|
48
|
+
- e998c69: The spinner beside a running command or task no longer jumps in terminals whose font joins `[|]` into one glyph, such
|
|
49
|
+
as JetBrains Mono with ligatures on: its upright frame is now `│`.
|
|
50
|
+
- 0d25cdc: During the beta, Jinion sends how each turn went (how long it took, which model, whether it failed) and the errors it
|
|
51
|
+
hits, never your prompts, replies or code. Turn it off with `/telemetry off`, or under Settings, Profile, Telemetry in
|
|
52
|
+
the desktop app.
|
|
53
|
+
- 761d61a: What the Jinion team has to say shows on a new thread in the desktop app, until you dismiss it, and once under the banner in the terminal.
|
|
54
|
+
- 1e0cb5c: Each beta user has three invite codes to hand on, each letting one person in: under Settings, Profile in the desktop app, and in `/profile` in the terminal, with who joined with the ones used.
|
|
55
|
+
- Updated dependencies [fcc666b]
|
|
56
|
+
- Updated dependencies [8b5af07]
|
|
57
|
+
- Updated dependencies [5b7fa6e]
|
|
58
|
+
- Updated dependencies [4930b2a]
|
|
59
|
+
- Updated dependencies [1ce40b6]
|
|
60
|
+
- Updated dependencies [beffea8]
|
|
61
|
+
- Updated dependencies [47b43a9]
|
|
62
|
+
- Updated dependencies [64172ef]
|
|
63
|
+
- Updated dependencies [e998c69]
|
|
64
|
+
- Updated dependencies [0d25cdc]
|
|
65
|
+
- Updated dependencies [761d61a]
|
|
66
|
+
- Updated dependencies [7a00cb8]
|
|
67
|
+
- Updated dependencies [1e0cb5c]
|
|
68
|
+
|
|
69
|
+
## 0.2.2
|
|
70
|
+
|
|
71
|
+
Sign in to MCP servers such as Linear and Notion without leaving Jinion.
|
|
72
|
+
|
|
73
|
+
- In `/mcp`, a server that shows `not signed in` gets `l`: press it and finish in the browser. If the browser doesn't
|
|
74
|
+
open, the link is shown to open by hand, and `Esc` gives up.
|
|
75
|
+
- With Claude, Jinion keeps the sign-in in `~/.jinion/mcp-logins.json`, readable only by you, and renews it before it
|
|
76
|
+
runs out, so a turn never stops halfway on an expired one. With Codex, Codex keeps it.
|
|
77
|
+
- The server connects from the next turn.
|
|
78
|
+
|
|
79
|
+
## 0.2.1
|
|
80
|
+
|
|
81
|
+
Any file goes with a message, not only pictures, and the agent understands the recordings and videos among them.
|
|
82
|
+
|
|
83
|
+
- Drag a file into the terminal and it is attached: it shows in the prompt as `[File #1 report.pdf]`. A file of the
|
|
84
|
+
project stays its path, as before, unless it is a recording, a video, a PDF or a spreadsheet, which is read for the
|
|
85
|
+
agent first.
|
|
86
|
+
- A file is kept in a folder of the conversation under `~/.jinion/attachments`, out of your project. The agent is told
|
|
87
|
+
where each one is and reads it with its own tools. An Excel workbook also gets its sheets as CSV and a PDF its text,
|
|
88
|
+
so Codex reads them too.
|
|
89
|
+
- A recording is transcribed on your machine with Whisper, in about a hundred languages, each piece with its time;
|
|
90
|
+
nothing of it leaves the machine. The speech model, 574 MB, is downloaded the first time you attach a recording.
|
|
91
|
+
- A video becomes what is said in it and its frames, one each time the picture changes, such as a page opening or text
|
|
92
|
+
being typed, so the agent can follow a screen recording step by step.
|
|
93
|
+
- While a file is read, `reading: …` above the prompt says what is being done, and a message sent before it ends comes
|
|
94
|
+
back to send again. A file that can't be read is attached as it is, and the conversation says why.
|
|
95
|
+
- Recordings and videos are read with the `ffmpeg`, `ffprobe` and `whisper-cli` on your `PATH`.
|
|
96
|
+
- For clients of the API: `attachments/add` and `attachments/remove`, the session's `attachments` field, the ids a
|
|
97
|
+
message names in `attachments`, and `files/read` and `files/read-bytes` for a session's attachments.
|
|
98
|
+
|
|
99
|
+
## 0.2.0
|
|
100
|
+
|
|
101
|
+
Jinion works on an interface as a design engineer, from a map of your project that it reads from the code and keeps up
|
|
102
|
+
to date by itself.
|
|
103
|
+
|
|
104
|
+
- The map holds what the project's files offer each other (components, hooks, functions, classes, types, constants,
|
|
105
|
+
design tokens and styles), how the project is written (how files are named, `interface` or `type`, named or default
|
|
106
|
+
exports), what it is built with, and how it looks: its tokens, the classes and style values its interface keeps to,
|
|
107
|
+
the colors written outside both. It reads JavaScript and TypeScript, Vue, Svelte and Astro components, React Native
|
|
108
|
+
style objects, Swift and SwiftUI, PHP and Blade, stylesheets and templates, and a file is read again only when it
|
|
109
|
+
changed. A conversation in a worktree reads the map of its own folder.
|
|
110
|
+
- The agent looks for a piece that already does the job before it writes a new one, and writes what it adds the way
|
|
111
|
+
the project is written.
|
|
112
|
+
- On an interface it builds from the project's own components, tokens and classes, says what it understood before a
|
|
113
|
+
new screen, and offers named directions to pick from where the project hasn't decided, such as the first screen of a
|
|
114
|
+
new project. A pick is saved to its notes and applied from then on.
|
|
115
|
+
- It looks at what it made: it takes a picture of a page with Chrome, Chromium, Edge or Brave on your machine, run
|
|
116
|
+
without a window, or of the iOS simulator's or the Android emulator's screen, at the width and in the color scheme
|
|
117
|
+
it wants to check.
|
|
118
|
+
- What a turn added is compared with the map before the turn is over: a piece the project already had, a file named
|
|
119
|
+
against the project's habit, a class or a color new to it. The agent puts it right, or tells you what is new and
|
|
120
|
+
why; what you asked for by name stays as you asked.
|
|
121
|
+
- Where your linter, Biome or ESLint, has no rule for one of the project's habits, the agent can offer to add the
|
|
122
|
+
rule, by its exact name.
|
|
123
|
+
- With `"describeMap": true` in `~/.jinion/settings.json`, the small model writes a sentence on what each piece does,
|
|
124
|
+
so one is found by what it does and not only by its name, and a new piece that does the job of one under another
|
|
125
|
+
name is caught as the turn ends. It is off by default, since it spends your plan's usage.
|
|
126
|
+
|
|
127
|
+
## 0.1.2
|
|
128
|
+
|
|
129
|
+
### Patch Changes
|
|
130
|
+
|
|
131
|
+
- Updated dependencies [e4b80d1]
|
|
132
|
+
- @jinion/core@0.0.13
|
|
133
|
+
|
|
134
|
+
## 0.1.1
|
|
135
|
+
|
|
136
|
+
### Patch Changes
|
|
137
|
+
|
|
138
|
+
- 468baeb: A folder with thousands of changed files no longer freezes the changes: the lines changed are counted in the
|
|
139
|
+
background, and again only once a file changes.
|
|
140
|
+
- Updated dependencies [468baeb]
|
|
141
|
+
- @jinion/core@0.0.12
|
|
142
|
+
- @jinion/tui@0.0.4
|
|
143
|
+
|
|
144
|
+
## 0.1.0
|
|
145
|
+
|
|
146
|
+
### Minor Changes
|
|
147
|
+
|
|
148
|
+
- ebe5ef4: Open conversations move from the row of tabs above the conversation to a column on the left, one per row, with a
|
|
149
|
+
spinner while one works and `?` while it waits on you. A click anywhere on a row goes to it. In a terminal narrower than
|
|
150
|
+
100 columns the column keeps only each number and mark, and `ctrl+s` hides it and shows it again.
|
|
151
|
+
- ebe5ef4: A message sent while the agent works waits above the prompt until the agent reads it, as soon as its current step is
|
|
152
|
+
done, and then joins the conversation at that point. Before, it showed in the conversation at once, so it was hard to
|
|
153
|
+
tell when the agent picked it up. Works with Claude and Codex.
|
|
154
|
+
|
|
155
|
+
### Patch Changes
|
|
156
|
+
|
|
157
|
+
- Updated dependencies [ebe5ef4]
|
|
158
|
+
- Updated dependencies [ebe5ef4]
|
|
159
|
+
- @jinion/tui@0.0.3
|
|
160
|
+
- @jinion/core@0.0.11
|
|
161
|
+
|
|
162
|
+
## 0.0.11
|
|
163
|
+
|
|
164
|
+
### Patch Changes
|
|
165
|
+
|
|
166
|
+
- Updated dependencies [4b9872f]
|
|
167
|
+
- @jinion/core@0.0.10
|
|
168
|
+
|
|
169
|
+
## 0.0.10
|
|
170
|
+
|
|
171
|
+
### Patch Changes
|
|
172
|
+
|
|
173
|
+
- Updated dependencies [b12cc63]
|
|
174
|
+
- @jinion/core@0.0.9
|
|
175
|
+
|
|
176
|
+
## 0.0.9
|
|
177
|
+
|
|
178
|
+
### Patch Changes
|
|
179
|
+
|
|
180
|
+
- Updated dependencies [86213a0]
|
|
181
|
+
- @jinion/core@0.0.8
|
|
182
|
+
|
|
183
|
+
## 0.0.8
|
|
184
|
+
|
|
185
|
+
### Patch Changes
|
|
186
|
+
|
|
187
|
+
- Updated dependencies [417f83d]
|
|
188
|
+
- @jinion/core@0.0.7
|
|
189
|
+
|
|
190
|
+
## 0.0.7
|
|
191
|
+
|
|
192
|
+
### Patch Changes
|
|
193
|
+
|
|
194
|
+
- Updated dependencies [ce193fb]
|
|
195
|
+
- @jinion/core@0.0.6
|
|
196
|
+
|
|
197
|
+
## 0.0.6
|
|
198
|
+
|
|
199
|
+
### Patch Changes
|
|
200
|
+
|
|
201
|
+
- 1a9e26e: Code in color, by its language: the diffs of edits and writes, the `/diff` panel and the code blocks in replies. The
|
|
202
|
+
diff keeps its added and removed backgrounds and the mark on what changed in a line.
|
|
203
|
+
- Updated dependencies [1a9e26e]
|
|
204
|
+
- @jinion/tui@0.0.2
|
|
205
|
+
|
|
206
|
+
## 0.0.5
|
|
207
|
+
|
|
208
|
+
### Patch Changes
|
|
209
|
+
|
|
210
|
+
- Updated dependencies [54b3f00]
|
|
211
|
+
- @jinion/core@0.0.5
|
|
212
|
+
|
|
213
|
+
## 0.0.4
|
|
214
|
+
|
|
215
|
+
### Patch Changes
|
|
216
|
+
|
|
217
|
+
- Updated dependencies [8f3d5aa]
|
|
218
|
+
- @jinion/core@0.0.4
|
|
219
|
+
|
|
220
|
+
## 0.0.3
|
|
221
|
+
|
|
222
|
+
### Patch Changes
|
|
223
|
+
|
|
224
|
+
- Updated dependencies [5bb5b0b]
|
|
225
|
+
- @jinion/core@0.0.3
|
|
226
|
+
|
|
227
|
+
## 0.0.2
|
|
228
|
+
|
|
229
|
+
### Patch Changes
|
|
230
|
+
|
|
231
|
+
- 8b6ce2e: The core starts from `@jinion/core/host`, takes clients over a message channel (`portTransport`), and reads a file in a
|
|
232
|
+
session's folder with `files/read`, all for the desktop app. The CLI works as before.
|
|
233
|
+
- Updated dependencies [8b6ce2e]
|
|
234
|
+
- @jinion/core@0.0.2
|
|
235
|
+
|
|
236
|
+
## 0.0.1
|
|
237
|
+
|
|
238
|
+
The first version of Jinion, a coding agent for the terminal.
|
|
239
|
+
|
|
240
|
+
- Works with Claude, signed in with a claude.ai subscription, and with Codex, signed in with ChatGPT. `/model` lists
|
|
241
|
+
both; picking a model of the other hands the conversation over.
|
|
242
|
+
- Four permission modes: Manual, Accept edits, Plan and Auto, where a safety check stops actions beyond the request.
|
|
243
|
+
- Conversations in tabs, resumed with `/resume`, rewound to any message with the files put back, and each in a git
|
|
244
|
+
worktree of its own when worktrees are on.
|
|
245
|
+
- `/diff` and a card of what each turn changed, background tasks, subagents shown under the call that started them.
|
|
246
|
+
- Memory that carries over between conversations, project instructions, skills and MCP servers.
|
|
247
|
+
- `/usage`, `/stats`, `/context` and `/compact`, a status line built from segments, notifications when a turn ends.
|
|
248
|
+
- `jinion serve` runs the core without a screen, on a WebSocket or over stdio, and `jinion --attach` shows its
|
|
249
|
+
conversations.
|
package/bin/jinion.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
|
|
2
5
|
// React's development build is slower and prints warnings over the full-screen UI.
|
|
3
6
|
process.env.NODE_ENV ??= 'production';
|
|
4
|
-
|
|
7
|
+
|
|
8
|
+
const { version } = createRequire(import.meta.url)('../package.json');
|
|
9
|
+
const { fromNpm, newerInstalled } = await import('../dist/update/versions.js');
|
|
10
|
+
|
|
11
|
+
// A newer version the updater installed in ~/.jinion/versions runs instead of this one, so updating never needs sudo
|
|
12
|
+
// nor touches the files of a jinion still running.
|
|
13
|
+
const newer = fromNpm() ? newerInstalled(version) : undefined;
|
|
14
|
+
|
|
15
|
+
await import(newer ? pathToFileURL(newer).href : '../dist/main.js');
|
package/dist/app/app.js
CHANGED
|
@@ -6,22 +6,26 @@ import { Provider, useAtomValue } from 'jotai';
|
|
|
6
6
|
import { JinionClient } from '@jinion/core/api/client';
|
|
7
7
|
import { inRunningTurn } from '@jinion/core/conversation/session';
|
|
8
8
|
import { Attachments, AttachmentsContext } from '../prompt/attachments.js';
|
|
9
|
+
import { ClaudeSetupPanel } from '../panels/onboarding/claude-setup-panel.js';
|
|
9
10
|
import { OnboardingPanel } from '../panels/onboarding/onboarding-panel.js';
|
|
10
11
|
import { SignInPanel } from '../panels/sign-in/sign-in-panel.js';
|
|
11
|
-
import { clientAtom, jinionUserAtom, sessionAtom, worktreeAtom } from '../state/session.js';
|
|
12
|
+
import { claudeSetupOfferedAtom, clientAtom, jinionUserAtom, sessionAtom, worktreeAtom } from '../state/session.js';
|
|
12
13
|
import { Banner } from '../ui/banner.js';
|
|
13
14
|
import { EntryView } from '../ui/entries/entry-view.js';
|
|
14
15
|
import { ApiContext, createApi } from './api.js';
|
|
15
16
|
import { Aside } from './aside.js';
|
|
16
17
|
import { useAnnouncements } from './announcements.js';
|
|
18
|
+
import { useClaudeNotes } from './claude-notes.js';
|
|
17
19
|
import { useDialogs } from './dialogs.js';
|
|
18
20
|
import { useKeys } from './keys.js';
|
|
19
21
|
import { PromptArea } from './prompt-area.js';
|
|
22
|
+
import { updatedAtom } from './release-notes.js';
|
|
20
23
|
import { useSidebar } from './sidebar.js';
|
|
21
24
|
import { StatusLine } from './status-line.js';
|
|
22
25
|
import { useOpenView, useScreen } from './use-screen.js';
|
|
26
|
+
import { useUpdates } from './updates.js';
|
|
23
27
|
/** The terminal app: a client of the core, drawing the session it shows once `initialize` answered. */
|
|
24
|
-
export function App({ connect, version, attached, onLost, offerTerminalSetup }) {
|
|
28
|
+
export function App({ connect, version, attached, onLost, offerTerminalSetup, updated = false }) {
|
|
25
29
|
const terminal = useTerminal();
|
|
26
30
|
const tui = useApp();
|
|
27
31
|
// The screen is made before the client it serves, and only reaches its store once the client is there.
|
|
@@ -35,6 +39,7 @@ export function App({ connect, version, attached, onLost, offerTerminalSetup })
|
|
|
35
39
|
followAll: true,
|
|
36
40
|
});
|
|
37
41
|
created.store.set(clientAtom, created);
|
|
42
|
+
created.store.set(updatedAtom, updated);
|
|
38
43
|
return created;
|
|
39
44
|
});
|
|
40
45
|
const [api, setApi] = useState();
|
|
@@ -65,17 +70,20 @@ function Ready({ api, offerTerminalSetup }) {
|
|
|
65
70
|
}));
|
|
66
71
|
return (_jsx(ApiContext.Provider, { value: api, children: _jsx(AttachmentsContext.Provider, { value: attachments, children: _jsx(SignedIn, { offerTerminalSetup: offerTerminalSetup }) }) }));
|
|
67
72
|
}
|
|
68
|
-
/** Jinion is used signed in to an active account: until then, the banner, and the sign-in or onboarding in the prompt's place. */
|
|
73
|
+
/** Jinion is used signed in to an active account: until then, the banner, and the sign-in or onboarding in the prompt's place, Claude Code's setup its last step. */
|
|
69
74
|
function SignedIn({ offerTerminalSetup }) {
|
|
70
75
|
const user = useAtomValue(jinionUserAtom);
|
|
71
|
-
|
|
76
|
+
const offered = useAtomValue(claudeSetupOfferedAtom);
|
|
77
|
+
if (user?.activated && offered)
|
|
72
78
|
return _jsx(Layout, { offerTerminalSetup: offerTerminalSetup });
|
|
73
|
-
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsx(Box, { flexDirection: "column", flexGrow: 1, children: _jsx(Banner, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: user ? _jsx(OnboardingPanel, {}) : _jsx(SignInPanel, {}) })] }));
|
|
79
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsx(Box, { flexDirection: "column", flexGrow: 1, children: _jsx(Banner, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: user?.activated ? _jsx(ClaudeSetupPanel, {}) : user ? _jsx(OnboardingPanel, {}) : _jsx(SignInPanel, {}) })] }));
|
|
74
80
|
}
|
|
75
81
|
function Layout({ offerTerminalSetup }) {
|
|
76
82
|
useKeys();
|
|
77
83
|
useDialogs();
|
|
78
84
|
useAnnouncements();
|
|
85
|
+
useClaudeNotes();
|
|
86
|
+
useUpdates();
|
|
79
87
|
const sidebar = useSidebar();
|
|
80
88
|
const openView = useOpenView();
|
|
81
89
|
useEffect(() => {
|
package/dist/app/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app/app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app/app.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { atom, useSetAtom } from 'jotai';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApi } from './api.js';
|
|
4
|
+
/** How many of Claude Code's notes this project has to bring in, which the banner says. */
|
|
5
|
+
export const claudeNotesAtom = atom(0);
|
|
6
|
+
/** The first time a project opens after onboarding, the banner offers its Claude Code notes, once. */
|
|
7
|
+
export function useClaudeNotes() {
|
|
8
|
+
const api = useApi();
|
|
9
|
+
const setNotes = useSetAtom(claudeNotesAtom);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
void api.request('setup/claude', { login: false }).then(({ projectOffered, notes }) => {
|
|
12
|
+
if (projectOffered)
|
|
13
|
+
return;
|
|
14
|
+
setNotes(notes.project);
|
|
15
|
+
api.act(api.request('setup/claude-done', {}));
|
|
16
|
+
}, () => { });
|
|
17
|
+
}, []);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=claude-notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-notes.js","sourceRoot":"","sources":["../../src/app/claude-notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvC,sGAAsG;AACtG,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CACrD,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5B,IAAI,cAAc;gBAAE,OAAO;YAE3B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC,EACD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { compareVersions, releasesOf } from '@jinion/core/lib/changelog';
|
|
3
|
+
import { readJson, updateJson } from '@jinion/core/lib/json-file';
|
|
4
|
+
import { atom } from 'jotai';
|
|
5
|
+
import { settingsFile } from './settings-file.js';
|
|
6
|
+
/** This run is the first on a version newer than the one before, which the banner says once. */
|
|
7
|
+
export const updatedAtom = atom(false);
|
|
8
|
+
/** Remembers the version too; a first start only remembers it, as there is nothing new to someone who just installed. */
|
|
9
|
+
export function updatedSinceLastRun(version) {
|
|
10
|
+
const seen = readJson(settingsFile(), {}).releaseNotesSeen;
|
|
11
|
+
if (seen === version)
|
|
12
|
+
return false;
|
|
13
|
+
updateJson(settingsFile(), {}, (current) => ({ ...current, releaseNotesSeen: version }));
|
|
14
|
+
return seen !== undefined && compareVersions(version, seen) > 0;
|
|
15
|
+
}
|
|
16
|
+
/** The CLI's own, which its package carries beside its code. */
|
|
17
|
+
export function cliReleases() {
|
|
18
|
+
return releasesOf(readFileSync(new URL('../../CHANGELOG.md', import.meta.url), 'utf8'));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=release-notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../src/app/release-notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,gGAAgG;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvC,yHAAyH;AACzH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAgC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC;IAC1F,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEnC,UAAU,CAAS,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAEjG,OAAO,IAAI,KAAK,SAAS,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { jinionHome } from '@jinion/core/lib/paths';
|
|
3
|
+
/** The user's settings file, where the app keeps a few keys of its own beside what the core keeps there. */
|
|
4
|
+
export function settingsFile() {
|
|
5
|
+
return join(jinionHome(), 'settings.json');
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=settings-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-file.js","sourceRoot":"","sources":["../../src/app/settings-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,4GAA4G;AAC5G,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/app/status-line.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { busyAtom } from '../state/session.js';
|
|
3
3
|
import { useEffect } from 'react';
|
|
4
4
|
import { StatusBar } from '@jinion/tui/chat';
|
|
5
|
+
import { Text, useTheme } from '@jinion/tui';
|
|
5
6
|
import { useAtomValue, useSetAtom } from 'jotai';
|
|
6
7
|
import { shownStatusItemsAtom } from '../status/items.js';
|
|
7
8
|
import { gitStatusAtom, useNow, useStatusData } from '../status/data.js';
|
|
@@ -9,8 +10,11 @@ import { useGitStatus } from '../status/git.js';
|
|
|
9
10
|
import { renderStatusLine } from '../status/line.js';
|
|
10
11
|
import { findSegment } from '../status/segments/index.js';
|
|
11
12
|
import { useWorkdir } from '../ui/use-workdir.js';
|
|
13
|
+
import { updateReadyAtom } from './updates.js';
|
|
12
14
|
export function StatusLine() {
|
|
15
|
+
const theme = useTheme();
|
|
13
16
|
const items = useAtomValue(shownStatusItemsAtom);
|
|
17
|
+
const update = useAtomValue(updateReadyAtom);
|
|
14
18
|
const busy = useAtomValue(busyAtom);
|
|
15
19
|
const setGit = useSetAtom(gitStatusAtom);
|
|
16
20
|
const segments = items.map((item) => findSegment(item.id));
|
|
@@ -18,6 +22,8 @@ export function StatusLine() {
|
|
|
18
22
|
useEffect(() => setGit(git), [git]);
|
|
19
23
|
const data = useStatusData(useNow(segments.some((segment) => segment?.ticks)));
|
|
20
24
|
const line = renderStatusLine(items, data);
|
|
21
|
-
|
|
25
|
+
// Shown whatever the layout, and first on the right, which is cut from its end when the line runs short.
|
|
26
|
+
const right = update ? [_jsxs(Text, { color: theme.accent, children: ["v", update, " ready \u00B7 restart to update"] }, "update"), ...line.right] : line.right;
|
|
27
|
+
return _jsx(StatusBar, { items: line.left, right: right });
|
|
22
28
|
}
|
|
23
29
|
//# sourceMappingURL=status-line.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-line.js","sourceRoot":"","sources":["../../src/app/status-line.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"status-line.js","sourceRoot":"","sources":["../../src/app/status-line.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAEvF,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE3C,yGAAyG;IACzG,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAC,IAAI,IAAc,KAAK,EAAE,KAAK,CAAC,MAAM,kBAAI,MAAM,wCAAtC,QAAQ,CAAgE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAExI,OAAO,KAAC,SAAS,IAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { atom, useSetAtom } from 'jotai';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { autoUpdatesOn, startUpdater } from '../update/updater.js';
|
|
4
|
+
import { fromNpm } from '../update/versions.js';
|
|
5
|
+
import { useApi } from './api.js';
|
|
6
|
+
/** The newer version installed in the background, which runs from the next `jinion` on. */
|
|
7
|
+
export const updateReadyAtom = atom(undefined);
|
|
8
|
+
export function useUpdates() {
|
|
9
|
+
const { version } = useApi().initialized.info;
|
|
10
|
+
const setReady = useSetAtom(updateReadyAtom);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!fromNpm() || !autoUpdatesOn())
|
|
13
|
+
return;
|
|
14
|
+
return startUpdater({ version, onReady: setReady });
|
|
15
|
+
}, []);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=updates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../src/app/updates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAqB,SAAS,CAAC,CAAC;AAEnE,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;IAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO;QAE3C,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
|
package/dist/app/views.js
CHANGED
|
@@ -8,7 +8,9 @@ import { MemoryPanel } from '../panels/memory.js';
|
|
|
8
8
|
import { ModePicker } from '../panels/mode.js';
|
|
9
9
|
import { ModelPicker } from '../panels/model.js';
|
|
10
10
|
import { FeedbackPanel } from '../panels/feedback.js';
|
|
11
|
+
import { MapPanel } from '../panels/map.js';
|
|
11
12
|
import { ProfilePanel } from '../panels/profile.js';
|
|
13
|
+
import { ReleaseNotesPanel } from '../panels/release-notes.js';
|
|
12
14
|
import { ResumePanel } from '../panels/resume.js';
|
|
13
15
|
import { RewindPanel } from '../panels/rewind/rewind-panel.js';
|
|
14
16
|
import { StatusLinePanel } from '../panels/statusline.js';
|
|
@@ -57,6 +59,10 @@ function ViewPanel({ view }) {
|
|
|
57
59
|
return _jsx(ProfilePanel, {});
|
|
58
60
|
case 'feedback':
|
|
59
61
|
return _jsx(FeedbackPanel, { entry: view.entry });
|
|
62
|
+
case 'map':
|
|
63
|
+
return _jsx(MapPanel, {});
|
|
64
|
+
case 'release-notes':
|
|
65
|
+
return _jsx(ReleaseNotesPanel, {});
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
68
|
//# sourceMappingURL=views.js.map
|
package/dist/app/views.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/app/views.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/app/views.tsx"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -6,6 +6,7 @@ import { findServer } from '@jinion/core/api/server-file';
|
|
|
6
6
|
import { connectWebSocket } from '@jinion/core/api/websocket';
|
|
7
7
|
import { coreOptions, startCore } from '@jinion/core/host';
|
|
8
8
|
import { App } from './app/app.js';
|
|
9
|
+
import { updatedSinceLastRun } from './app/release-notes.js';
|
|
9
10
|
import { serve } from './serve.js';
|
|
10
11
|
import { inAppleTerminal, offeredTerminalSetup, profilesWithoutMeta } from './terminal/apple-terminal.js';
|
|
11
12
|
const { version } = createRequire(import.meta.url)('../package.json');
|
|
@@ -67,13 +68,14 @@ if (port !== undefined && !(Number.isInteger(port) && port >= 0 && port < 65_536
|
|
|
67
68
|
// Package managers run scripts from the package directory; INIT_CWD is where the user invoked them.
|
|
68
69
|
const cwd = process.env.INIT_CWD ?? process.cwd();
|
|
69
70
|
const scheme = theme;
|
|
71
|
+
const updated = updatedSinceLastRun(version);
|
|
70
72
|
const terminalSetup = inAppleTerminal() && !offeredTerminalSetup() && (await profilesWithoutMeta().catch(() => [])).length > 0;
|
|
71
73
|
if (values.attach) {
|
|
72
74
|
const server = findServer(cwd);
|
|
73
75
|
if (!server)
|
|
74
76
|
fail('No jinion serve runs for this directory. Start one with jinion serve.');
|
|
75
77
|
let lost = false;
|
|
76
|
-
const instance = await run(_jsx(App, { connect: () => connectWebSocket(server.url, server.token), version: version, offerTerminalSetup: terminalSetup, attached: true, onLost: () => (lost = true) }), { scheme });
|
|
78
|
+
const instance = await run(_jsx(App, { connect: () => connectWebSocket(server.url, server.token), version: version, offerTerminalSetup: terminalSetup, updated: updated, attached: true, onLost: () => (lost = true) }), { scheme });
|
|
77
79
|
await instance.waitUntilExit();
|
|
78
80
|
if (lost)
|
|
79
81
|
console.log(`The connection to jinion serve at ${server.url} closed.`);
|
|
@@ -107,7 +109,7 @@ if (command === 'serve') {
|
|
|
107
109
|
console.error(message);
|
|
108
110
|
process.exit(0);
|
|
109
111
|
}
|
|
110
|
-
const instance = await run(_jsx(App, { connect: core.connect, version: version, offerTerminalSetup: terminalSetup }), { scheme });
|
|
112
|
+
const instance = await run(_jsx(App, { connect: core.connect, version: version, offerTerminalSetup: terminalSetup, updated: updated }), { scheme });
|
|
111
113
|
await instance.waitUntilExit();
|
|
112
114
|
for (const backend of options.backends)
|
|
113
115
|
backend.close?.();
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Panel, Text, useInput, usePanel, useTheme } from '@jinion/tui';
|
|
3
|
+
import { useSetAtom } from 'jotai';
|
|
4
|
+
import { rulesRequest } from '@jinion/core/map/rules-request';
|
|
5
|
+
import { grouped, percent, plural } from '@jinion/core/lib/format';
|
|
6
|
+
import { draftAtom } from '../prompt/draft.js';
|
|
7
|
+
import { useMapOverview } from '../ui/use-map-overview.js';
|
|
8
|
+
import { PAGER_HINTS, usePager } from '../ui/use-pager.js';
|
|
9
|
+
const CHROME_ROWS = 6;
|
|
10
|
+
/** What the project map read: what the project is built with, how it is written, how it looks and what it offers. */
|
|
11
|
+
export function MapPanel() {
|
|
12
|
+
const theme = useTheme();
|
|
13
|
+
const { close } = usePanel();
|
|
14
|
+
const setDraft = useSetAtom(draftAtom);
|
|
15
|
+
const map = useMapOverview();
|
|
16
|
+
const overview = map.state === 'ready' ? map.overview : undefined;
|
|
17
|
+
const lines = overview ? linesOf(overview, theme) : [];
|
|
18
|
+
const pager = usePager(lines.length, { chrome: CHROME_ROWS });
|
|
19
|
+
useInput((input, key) => {
|
|
20
|
+
if (key.escape)
|
|
21
|
+
return close();
|
|
22
|
+
if (input === 'a' && overview?.unheld) {
|
|
23
|
+
setDraft(rulesRequest(overview.unheld));
|
|
24
|
+
return close();
|
|
25
|
+
}
|
|
26
|
+
pager.scroll(key);
|
|
27
|
+
});
|
|
28
|
+
const hints = [...(pager.range ? PAGER_HINTS : []), ...(overview?.unheld ? [['a', 'add the rules']] : []), ['Esc', 'close']];
|
|
29
|
+
return (_jsx(Panel, { title: "Project map", subtitle: pager.range, grow: true, hints: hints, children: map.state === 'reading' ? (_jsx(Text, { color: theme.muted, children: "Still reading the project. This takes a moment the first time." })) : map.state === 'none' ? (_jsx(Text, { color: theme.muted, children: "There is no map of this project." })) : (lines.slice(pager.top, pager.top + pager.view).map(({ key, node }) => (_jsx(Text, { wrap: "truncate-end", children: node }, key)))) }));
|
|
30
|
+
}
|
|
31
|
+
/** One row each, so the pager scrolls by rows: a heading, then its lines, a blank row between sections. */
|
|
32
|
+
function linesOf(overview, theme) {
|
|
33
|
+
const { built, pieces, habits, unheld, look, undecided } = overview;
|
|
34
|
+
const sections = [];
|
|
35
|
+
const muted = (text) => _jsx(Text, { color: theme.muted, children: text });
|
|
36
|
+
if (built.length > 0)
|
|
37
|
+
sections.push(['Built with', [built.join(', ')]]);
|
|
38
|
+
if (habits.length > 0) {
|
|
39
|
+
sections.push([
|
|
40
|
+
'How it is written',
|
|
41
|
+
habits.map(({ text, count, total }) => (_jsxs(_Fragment, { children: [text.replaceAll('`', ''), " ", muted(`${percent(count, total)} of ${grouped(total)}`)] }))),
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
if (unheld) {
|
|
45
|
+
sections.push([
|
|
46
|
+
`Rules ${unheld.linter} doesn't have yet`,
|
|
47
|
+
[
|
|
48
|
+
...unheld.rules.map(({ name, option }) => (_jsxs(_Fragment, { children: [name, option && muted(` ${option}`)] }))),
|
|
49
|
+
muted('Press a to ask the agent to add them.'),
|
|
50
|
+
],
|
|
51
|
+
]);
|
|
52
|
+
}
|
|
53
|
+
const looks = [];
|
|
54
|
+
if (look.tokens) {
|
|
55
|
+
const groups = look.tokens.groups.map(({ name, count }) => `${name} ${count}`).join(', ');
|
|
56
|
+
looks.push(_jsxs(_Fragment, { children: [plural(look.tokens.count, 'design token'), " ", muted(`in ${look.tokens.home}: ${groups}`)] }));
|
|
57
|
+
}
|
|
58
|
+
for (const family of look.families) {
|
|
59
|
+
const members = family.members.map(({ name, uses }) => `${name} ${uses}`).join(', ');
|
|
60
|
+
looks.push(_jsxs(_Fragment, { children: [family.name, " ", muted(`${members}${family.more > 0 ? `, +${family.more}` : ''}`)] }));
|
|
61
|
+
}
|
|
62
|
+
if (look.loose)
|
|
63
|
+
looks.push(muted(`${plural(look.loose.colors, 'color')} written out in ${plural(look.loose.files, 'file')} rather than taken from a token`));
|
|
64
|
+
if (undecided)
|
|
65
|
+
looks.push(muted('Nothing yet: the project has no component or styled markup, so its look is still to be decided.'));
|
|
66
|
+
if (looks.length > 0)
|
|
67
|
+
sections.push(['How it looks', looks]);
|
|
68
|
+
if (pieces.count > 0) {
|
|
69
|
+
sections.push([
|
|
70
|
+
`${plural(pieces.count, 'piece')} its files offer each other, in ${plural(pieces.files, 'file')}`,
|
|
71
|
+
pieces.folders.map(({ folder, names, more }) => (_jsxs(_Fragment, { children: [folder, "/ ", muted(`${names.join(', ')}${more > 0 ? `, and ${more} more` : ''}`)] }))),
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
return sections.flatMap(([title, rows], index) => [
|
|
75
|
+
...(index > 0 ? [{ key: `${title}:gap`, node: ' ' }] : []),
|
|
76
|
+
{ key: title, node: _jsx(Text, { bold: true, children: title }) },
|
|
77
|
+
...rows.map((node, row) => ({ key: `${title}:${row}`, node })),
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/panels/map.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,qHAAqH;AACrH,MAAM,UAAU,QAAQ;IACtB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAE9D,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,KAAK,EAAE,CAAC;QAE/B,IAAI,KAAK,KAAK,GAAG,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAExC,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,CAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvJ,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,QAAC,KAAK,EAAE,KAAK,YAChE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CACzB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,+EAAuE,CAChG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CACzB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,iDAAyC,CAClE,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACpE,KAAC,IAAI,IAAW,IAAI,EAAC,cAAc,YAChC,IAAI,IADI,GAAG,CAEP,CACR,CAAC,CACH,GACK,CACT,CAAC;AACJ,CAAC;AAOD,2GAA2G;AAC3G,SAAS,OAAO,CAAC,QAAyB,EAAE,KAAkC;IAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IACpE,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,YAAG,IAAI,GAAQ,CAAC;IAExE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC;YACZ,mBAAmB;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrC,8BACG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,OAAG,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IACjF,CACJ,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,MAAM,CAAC,MAAM,mBAAmB;YACzC;gBACE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACxC,8BACG,IAAI,EACJ,MAAM,IAAI,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC,IAC7B,CACJ,CAAC;gBACF,KAAK,CAAC,uCAAuC,CAAC;aAC/C;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1F,KAAK,CAAC,IAAI,CACR,8BACG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,OAAG,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,IACtF,CACJ,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErF,KAAK,CAAC,IAAI,CACR,8BACG,MAAM,CAAC,IAAI,OAAG,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAC9E,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC7J,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iGAAiG,CAAC,CAAC,CAAC;IACpI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7D,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,mCAAmC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACjG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC9C,8BACG,MAAM,QAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAC7E,CACJ,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,GAAQ,EAAE;QAC/C,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, ChoiceList, Panel, Text, useChoiceList, useInput, useTheme } from '@jinion/tui';
|
|
3
|
+
import { plural } from '@jinion/core/lib/format';
|
|
4
|
+
import { useEffect, useState } from 'react';
|
|
5
|
+
import { useApi } from '../../app/api.js';
|
|
6
|
+
import { useAsync } from '../../ui/use-async.js';
|
|
7
|
+
/** Onboarding's last step, in the prompt's place: what works already from Claude Code, its notes in one key, and what stays behind. */
|
|
8
|
+
export function ClaudeSetupPanel() {
|
|
9
|
+
const api = useApi();
|
|
10
|
+
const theme = useTheme();
|
|
11
|
+
const setup = useAsync(() => api.request('setup/claude', {}), []);
|
|
12
|
+
const [importing, setImporting] = useState(false);
|
|
13
|
+
const found = setup.state === 'done' ? setup.value : undefined;
|
|
14
|
+
const fresh = found ? found.notes.user + found.notes.project : 0;
|
|
15
|
+
const empty = found !== undefined && !anything(found);
|
|
16
|
+
const choices = fresh > 0 ? ['import', 'skip'] : ['continue'];
|
|
17
|
+
const done = () => api.act(api.request('setup/claude-done', {}));
|
|
18
|
+
const bring = async () => {
|
|
19
|
+
setImporting(true);
|
|
20
|
+
const { added } = await api.request('memory/import', {});
|
|
21
|
+
api.act(api.inSession('session/notice', { text: `Brought in ${plural(added, 'note')} from Claude Code. The agent sees them from the next conversation on.`, tone: 'success' }));
|
|
22
|
+
done();
|
|
23
|
+
};
|
|
24
|
+
const list = useChoiceList({
|
|
25
|
+
keys: choices,
|
|
26
|
+
mode: 'single',
|
|
27
|
+
isActive: found !== undefined && !importing,
|
|
28
|
+
onCancel: done,
|
|
29
|
+
onSubmit: ([choice]) => (choice === 'import' ? void bring().catch(done) : done()),
|
|
30
|
+
});
|
|
31
|
+
// Someone who never used Claude Code has nothing to bring, so the step isn't shown.
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (empty || setup.state === 'failed')
|
|
34
|
+
done();
|
|
35
|
+
}, [empty, setup.state]);
|
|
36
|
+
useInput((input, key) => {
|
|
37
|
+
if (key.ctrl && input === 'c')
|
|
38
|
+
api.quit();
|
|
39
|
+
});
|
|
40
|
+
if (!found || empty) {
|
|
41
|
+
return (_jsx(Panel, { title: "Bring your setup from Claude Code", children: _jsx(Text, { color: theme.muted, children: "Looking at your Claude Code setup\u2026" }) }));
|
|
42
|
+
}
|
|
43
|
+
const works = [
|
|
44
|
+
found.login && `Claude Code's login${found.login.email ? `, as ${found.login.email}` : ''}${found.login.plan ? ` (${found.login.plan})` : ''}`,
|
|
45
|
+
found.skills > 0 && plural(found.skills, 'skill'),
|
|
46
|
+
found.plugins > 0 && plural(found.plugins, 'plugin'),
|
|
47
|
+
found.mcpServers > 0 && plural(found.mcpServers, 'MCP server'),
|
|
48
|
+
found.instructions && "This project's CLAUDE.md",
|
|
49
|
+
].filter((line) => typeof line === 'string');
|
|
50
|
+
return (_jsxs(Panel, { title: "Bring your setup from Claude Code", header: _jsx(Text, { color: theme.muted, children: "Most of it already works in Jinion." }), hints: [['Enter', 'continue'], ...(choices.length > 1 ? [['Up/Down', 'move']] : []), ['Esc', 'not now']], children: [works.length > 0 && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Works already" }), works.map((line) => (_jsxs(Text, { children: [_jsx(Text, { color: theme.success, children: "+" }), " ", line] }, line)))] })), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "Your notes" }), _jsx(Text, { children: notesLine(found) })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "Stays behind" }), _jsx(Text, { color: theme.muted, children: "Permission rules, hooks and conversations stay in Claude Code. Jinion asks for permission its own way." })] }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: importing ? (_jsx(Text, { color: theme.muted, children: "Bringing in your notes\u2026" })) : (_jsx(ChoiceList, { list: list, limit: choices.length, choices: fresh > 0
|
|
51
|
+
? [
|
|
52
|
+
{ key: 'import', label: _jsxs(Text, { children: ["Bring in ", plural(fresh, 'note')] }) },
|
|
53
|
+
{ key: 'skip', label: _jsx(Text, { children: "Not now" }), description: 'Later, /memory import brings them in' },
|
|
54
|
+
]
|
|
55
|
+
: [{ key: 'continue', label: _jsx(Text, { children: "Continue" }) }] })) })] }));
|
|
56
|
+
}
|
|
57
|
+
function anything(setup) {
|
|
58
|
+
return setup.login !== undefined || setup.skills + setup.plugins + setup.mcpServers + setup.notes.user + setup.notes.project + setup.notes.already > 0 || setup.instructions;
|
|
59
|
+
}
|
|
60
|
+
function notesLine({ notes }) {
|
|
61
|
+
const fresh = notes.user + notes.project;
|
|
62
|
+
const already = notes.already > 0 ? `, ${notes.already} already here` : '';
|
|
63
|
+
if (fresh === 0)
|
|
64
|
+
return notes.already > 0 ? 'They are all here already.' : 'Claude Code keeps no notes for you yet.';
|
|
65
|
+
const where = [notes.user > 0 && `${notes.user} for every project`, notes.project > 0 && `${notes.project} for this one`].filter(Boolean).join(', ');
|
|
66
|
+
return `${plural(fresh, 'note')} to bring in: ${where}${already}. Only these need a step; the rest above works as it is.`;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=claude-setup-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-setup-panel.js","sourceRoot":"","sources":["../../../src/panels/onboarding/claude-setup-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,uIAAuI;AACvI,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE9D,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAEzD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,cAAc,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,uEAAuE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAChL,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,aAAa,CAAC;QACzB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK,KAAK,SAAS,IAAI,CAAC,SAAS;QAC3C,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAClF,CAAC,CAAC;IAEH,oFAAoF;IACpF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,IAAI,EAAE,CAAC;IAChD,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzB,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG;YAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;QACpB,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAC,mCAAmC,YAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,wDAA2C,GAC7D,CACT,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,KAAK,IAAI,sBAAsB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9I,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;QACjD,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;QACpD,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC;QAC9D,KAAK,CAAC,YAAY,IAAI,0BAA0B;KACjD,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;IAE7C,OAAO,CACL,MAAC,KAAK,IACJ,KAAK,EAAC,mCAAmC,EACzC,MAAM,EAAE,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,oDAA4C,EAC5E,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,aAE/H,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACnB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,oCAAqB,EAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,kBAAU,OAAE,IAAI,KADjC,IAAI,CAER,CACR,CAAC,IACE,CACP,EACD,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,IAAI,iCAAkB,EAC5B,KAAC,IAAI,cAAE,SAAS,CAAC,KAAK,CAAC,GAAQ,IAC3B,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,IAAI,mCAAoB,EAC9B,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,uHAA+G,IACnI,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,6CAAgC,CACzD,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IACT,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,CAAC,MAAM,EACrB,OAAO,EACL,KAAK,GAAG,CAAC;wBACP,CAAC,CAAC;4BACE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAC,IAAI,4BAAW,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAQ,EAAE;4BACvE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAC,IAAI,0BAAe,EAAE,WAAW,EAAE,sCAAsC,EAAE;yBAClG;wBACH,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAC,IAAI,2BAAgB,EAAE,CAAC,GAEzD,CACH,GACG,IACA,CACT,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkB;IAClC,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC;AAC/K,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,KAAK,EAAe;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3E,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,yCAAyC,CAAC;IAErH,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,oBAAoB,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErJ,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,KAAK,GAAG,OAAO,0DAA0D,CAAC;AAC5H,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Panel, Text, useContentWidth, useInput, usePanel, useTheme } from '@jinion/tui';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { useApi } from '../app/api.js';
|
|
5
|
+
import { cliReleases } from '../app/release-notes.js';
|
|
6
|
+
import { PAGER_HINTS, usePager } from '../ui/use-pager.js';
|
|
7
|
+
const CHROME_ROWS = 6;
|
|
8
|
+
/** What each version brought, newest first, the one running marked; long notes wrap rather than being cut. */
|
|
9
|
+
export function ReleaseNotesPanel() {
|
|
10
|
+
const theme = useTheme();
|
|
11
|
+
const { close } = usePanel();
|
|
12
|
+
const width = useContentWidth();
|
|
13
|
+
const { version } = useApi().initialized.info;
|
|
14
|
+
const [releases] = useState(cliReleases);
|
|
15
|
+
const lines = linesOf(releases, version, Math.max(20, width - 4), theme);
|
|
16
|
+
const pager = usePager(lines.length, { chrome: CHROME_ROWS });
|
|
17
|
+
useInput((_, key) => {
|
|
18
|
+
if (key.escape)
|
|
19
|
+
return close();
|
|
20
|
+
pager.scroll(key);
|
|
21
|
+
});
|
|
22
|
+
const hints = [...(pager.range ? PAGER_HINTS : []), ['Esc', 'close']];
|
|
23
|
+
return (_jsx(Panel, { title: "Release notes", subtitle: pager.range, grow: true, hints: hints, children: releases.length === 0 ? (_jsx(Text, { color: theme.muted, children: "This build has no release notes." })) : (lines.slice(pager.top, pager.top + pager.view).map(({ key, node }) => (_jsx(Text, { wrap: "truncate-end", children: node }, key)))) }));
|
|
24
|
+
}
|
|
25
|
+
/** One row each, so the pager scrolls by rows: a version, its summary, then each change, a blank row between versions. */
|
|
26
|
+
function linesOf(releases, running, width, theme) {
|
|
27
|
+
return releases.flatMap(({ version, summary, changes }, index) => {
|
|
28
|
+
const rows = [];
|
|
29
|
+
if (index > 0)
|
|
30
|
+
rows.push({ key: `${version}:gap`, node: ' ' });
|
|
31
|
+
rows.push({
|
|
32
|
+
key: version,
|
|
33
|
+
node: (_jsxs(_Fragment, { children: [_jsxs(Text, { bold: true, children: ["v", version] }), version === running && _jsx(Text, { color: theme.muted, children: " the one you have" })] })),
|
|
34
|
+
});
|
|
35
|
+
for (const [row, text] of (summary ? wrapped(summary, width) : []).entries())
|
|
36
|
+
rows.push({ key: `${version}:summary:${row}`, node: _jsx(Text, { color: theme.muted, children: text }) });
|
|
37
|
+
for (const [change, text] of changes.entries()) {
|
|
38
|
+
for (const [row, part] of wrapped(text, width - 2).entries())
|
|
39
|
+
rows.push({ key: `${version}:${change}:${row}`, node: `${row === 0 ? '- ' : ' '}${part}` });
|
|
40
|
+
}
|
|
41
|
+
return rows;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** By words, the Markdown's backticks taken off as the map's panel does; notes are prose, so a word longer than the width is rare enough to cut. */
|
|
45
|
+
function wrapped(text, width) {
|
|
46
|
+
const rows = [];
|
|
47
|
+
let row = '';
|
|
48
|
+
for (const word of text.replaceAll('`', '').split(/\s+/).filter(Boolean)) {
|
|
49
|
+
if (row && row.length + 1 + word.length > width) {
|
|
50
|
+
rows.push(row);
|
|
51
|
+
row = word;
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
row = row ? `${row} ${word}` : word;
|
|
55
|
+
}
|
|
56
|
+
if (row)
|
|
57
|
+
rows.push(row);
|
|
58
|
+
return rows;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=release-notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../src/panels/release-notes.tsx"],"names":[],"mappings":"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"}
|
package/dist/state/session.js
CHANGED
|
@@ -83,6 +83,8 @@ export const jinionUserAtom = atom((get) => app(get).jinionUser ?? null);
|
|
|
83
83
|
const noAnnouncements = [];
|
|
84
84
|
/** What the Jinion team says now that this user hasn't put away. */
|
|
85
85
|
export const announcementsAtom = atom((get) => app(get).announcements ?? noAnnouncements);
|
|
86
|
+
/** Whether onboarding offered Claude Code's setup, in this app or the desktop one; until then it comes before the app. */
|
|
87
|
+
export const claudeSetupOfferedAtom = atom((get) => app(get).claudeSetupOffered === true);
|
|
86
88
|
/** The default for new sessions, which `ctrl+g` turns on and off. */
|
|
87
89
|
export const worktreesAtom = atom((get) => app(get).worktrees);
|
|
88
90
|
export const mentionAtom = atom((get) => skillMention(get(skillsAtom)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/state/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/state/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { tmpdir } from 'node:os';
|
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
6
|
import { readJson, updateJson } from '@jinion/core/lib/json-file';
|
|
7
|
-
import {
|
|
7
|
+
import { settingsFile } from '../app/settings-file.js';
|
|
8
8
|
const run = promisify(execFile);
|
|
9
9
|
const DOMAIN = 'com.apple.Terminal';
|
|
10
10
|
const PLIST_BUDDY = '/usr/libexec/PlistBuddy';
|
|
@@ -62,7 +62,4 @@ async function print(file, entry) {
|
|
|
62
62
|
function metaKey(profile) {
|
|
63
63
|
return `"Window Settings:${profile}:useOptionAsMetaKey"`;
|
|
64
64
|
}
|
|
65
|
-
function settingsFile() {
|
|
66
|
-
return join(jinionHome(), 'settings.json');
|
|
67
|
-
}
|
|
68
65
|
//# sourceMappingURL=apple-terminal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apple-terminal.js","sourceRoot":"","sources":["../../src/terminal/apple-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"apple-terminal.js","sourceRoot":"","sources":["../../src/terminal/apple-terminal.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/banner.js
CHANGED
|
@@ -2,10 +2,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Box, Frame, Text, useTheme } from '@jinion/tui';
|
|
3
3
|
import { useAtomValue } from 'jotai';
|
|
4
4
|
import { accountLabel } from '@jinion/core/agent/accounts';
|
|
5
|
+
import { grouped, plural } from '@jinion/core/lib/format';
|
|
5
6
|
import { tildify } from '@jinion/core/lib/paths';
|
|
6
7
|
import { shownAnnouncementsAtom } from '../app/announcements.js';
|
|
7
8
|
import { useApi } from '../app/api.js';
|
|
9
|
+
import { claudeNotesAtom } from '../app/claude-notes.js';
|
|
10
|
+
import { updatedAtom } from '../app/release-notes.js';
|
|
8
11
|
import { agentAtom, identityAtom, modelLabelAtom, worktreeAtom } from '../state/session.js';
|
|
12
|
+
import { useMapOverview } from './use-map-overview.js';
|
|
9
13
|
export function Banner() {
|
|
10
14
|
const theme = useTheme();
|
|
11
15
|
const { info } = useApi().initialized;
|
|
@@ -14,8 +18,16 @@ export function Banner() {
|
|
|
14
18
|
const identity = useAtomValue(identityAtom);
|
|
15
19
|
const worktree = useAtomValue(worktreeAtom);
|
|
16
20
|
const announcements = useAtomValue(shownAnnouncementsAtom);
|
|
21
|
+
const updated = useAtomValue(updatedAtom);
|
|
22
|
+
const claudeNotes = useAtomValue(claudeNotesAtom);
|
|
23
|
+
const map = useMapOverview();
|
|
17
24
|
const { version, cwd, examples = [] } = info;
|
|
18
|
-
return (_jsxs(Frame, { fit: true, lead: 1, title: _jsxs(Text, { children: [_jsx(Text, { bold: true, color: theme.accent, children: "jinion" }), ' ', _jsxs(Text, { color: theme.muted, children: ["v", version] })] }), children: [_jsx(Row, { label: "model", hint: "/model to change", children: _jsx(Text, { color: theme.status.model, children: model }) }), identity && (_jsxs(Row, { label: "account", hint: agent.features.accounts && '/account to change', children: [_jsx(Text, { color: theme.accent, children: accountLabel(identity) }), identity.name !== 'default' && _jsxs(Text, { color: theme.muted, children: [" (", identity.name, ")"] })] })), _jsx(Row, { label: "cwd", children: _jsx(Text, { color: theme.status.directory, children: tildify(cwd) }) }), worktree && (_jsxs(Row, { label: "worktree", children: [_jsx(Text, { color: theme.code, children: worktree.name }), _jsxs(Text, { color: theme.muted, children: [" on ", worktree.branch] })] })), examples.length > 0 && (_jsx(Row, { label: "try", children: _jsx(Text, { color: theme.code, children: examples.join(', ') }) })), announcements.map((announcement) => (_jsx(Row, { label: "news", children: _jsxs(Text, { children: [announcement.text, announcement.link && _jsxs(Text, { color: theme.accent, children: [" ", announcement.link.url] })] }) }, announcement.id)))] }));
|
|
25
|
+
return (_jsxs(Frame, { fit: true, lead: 1, title: _jsxs(Text, { children: [_jsx(Text, { bold: true, color: theme.accent, children: "jinion" }), ' ', _jsxs(Text, { color: theme.muted, children: ["v", version] })] }), children: [_jsx(Row, { label: "model", hint: "/model to change", children: _jsx(Text, { color: theme.status.model, children: model }) }), identity && (_jsxs(Row, { label: "account", hint: agent.features.accounts && '/account to change', children: [_jsx(Text, { color: theme.accent, children: accountLabel(identity) }), identity.name !== 'default' && _jsxs(Text, { color: theme.muted, children: [" (", identity.name, ")"] })] })), _jsx(Row, { label: "cwd", children: _jsx(Text, { color: theme.status.directory, children: tildify(cwd) }) }), map.state === 'reading' && (_jsx(Row, { label: "map", children: _jsx(Text, { color: theme.muted, children: "reading the project\u2026" }) })), map.state === 'ready' && (_jsx(Row, { label: "map", hint: "/map to see", children: _jsx(Text, { children: mapLine(map.overview) }) })), worktree && (_jsxs(Row, { label: "worktree", children: [_jsx(Text, { color: theme.code, children: worktree.name }), _jsxs(Text, { color: theme.muted, children: [" on ", worktree.branch] })] })), updated && (_jsx(Row, { label: "update", hint: "/release-notes to see what's new", children: _jsxs(Text, { children: ["Updated to v", version] }) })), claudeNotes > 0 && (_jsx(Row, { label: "notes", hint: "/memory import to bring them in", children: _jsxs(Text, { children: ["Claude Code has ", plural(claudeNotes, 'note'), " for this project"] }) })), examples.length > 0 && (_jsx(Row, { label: "try", children: _jsx(Text, { color: theme.code, children: examples.join(', ') }) })), announcements.map((announcement) => (_jsx(Row, { label: "news", children: _jsxs(Text, { children: [announcement.text, announcement.link && _jsxs(Text, { color: theme.accent, children: [" ", announcement.link.url] })] }) }, announcement.id)))] }));
|
|
26
|
+
}
|
|
27
|
+
/** The first few things it is built with, and how much its files offer each other. */
|
|
28
|
+
function mapLine({ built, pieces }) {
|
|
29
|
+
const stack = built.slice(0, 3).map((name) => name.replace(/ [\d.]+$/, ''));
|
|
30
|
+
return [stack.join(', '), pieces.count > 0 && `${grouped(pieces.count)} pieces in ${plural(pieces.files, 'file')}`].filter(Boolean).join(' · ');
|
|
19
31
|
}
|
|
20
32
|
function Row({ label, hint, children }) {
|
|
21
33
|
const theme = useTheme();
|
package/dist/ui/banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { useApi } from '../app/api.js';
|
|
3
|
+
// The core waits for the map a second at most on start, so a large project is still being read for a while after.
|
|
4
|
+
const AGAIN_MS = 1500;
|
|
5
|
+
/** What the project map read, asked again while it is still being read. */
|
|
6
|
+
export function useMapOverview() {
|
|
7
|
+
const api = useApi();
|
|
8
|
+
const [state, setState] = useState({ state: 'reading' });
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
let timer;
|
|
11
|
+
let current = true;
|
|
12
|
+
const ask = () => api.request('map/overview', {}).then(({ reading, overview }) => {
|
|
13
|
+
if (!current)
|
|
14
|
+
return;
|
|
15
|
+
setState(overview ? { state: 'ready', overview } : reading ? { state: 'reading' } : { state: 'none' });
|
|
16
|
+
if (reading)
|
|
17
|
+
timer = setTimeout(ask, AGAIN_MS);
|
|
18
|
+
}, () => current && setState({ state: 'none' }));
|
|
19
|
+
void ask();
|
|
20
|
+
return () => {
|
|
21
|
+
current = false;
|
|
22
|
+
clearTimeout(timer);
|
|
23
|
+
};
|
|
24
|
+
}, []);
|
|
25
|
+
return state;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=use-map-overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-map-overview.js","sourceRoot":"","sources":["../../src/ui/use-map-overview.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,kHAAkH;AAClH,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB,2EAA2E;AAC3E,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEnE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAiC,CAAC;QACtC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,GAAG,GAAG,GAAG,EAAE,CACf,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,CAClC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;YACxB,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACvG,IAAI,OAAO;gBAAE,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC,EACD,GAAG,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAC7C,CAAC;QAEJ,KAAK,GAAG,EAAE,CAAC;QAEX,OAAO,GAAG,EAAE;YACV,OAAO,GAAG,KAAK,CAAC;YAChB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { existsSync, mkdirSync, renameSync, rmSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
import { compareVersions } from '@jinion/core/lib/changelog';
|
|
6
|
+
import { readJson } from '@jinion/core/lib/json-file';
|
|
7
|
+
import { settingsFile } from '../app/settings-file.js';
|
|
8
|
+
import { installedVersions, mainOf, versionsDir } from './versions.js';
|
|
9
|
+
const run = promisify(execFile);
|
|
10
|
+
const PACKAGE = '@jinion/cli';
|
|
11
|
+
const FIRST_MS = 10_000;
|
|
12
|
+
const EVERY_MS = 4 * 60 * 60 * 1000;
|
|
13
|
+
/** Asks npm a little after start and every four hours; a check that fails, as offline, waits for the next. Returns the stop. */
|
|
14
|
+
export function startUpdater(options) {
|
|
15
|
+
const check = () => void updateOnce(options).catch(() => { });
|
|
16
|
+
const first = setTimeout(check, FIRST_MS);
|
|
17
|
+
const every = setInterval(check, EVERY_MS);
|
|
18
|
+
first.unref();
|
|
19
|
+
every.unref();
|
|
20
|
+
return () => {
|
|
21
|
+
clearTimeout(first);
|
|
22
|
+
clearInterval(every);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Off with `"autoUpdates": false` in the settings, or `JINION_DISABLE_AUTOUPDATER`, as in Claude Code. */
|
|
26
|
+
export function autoUpdatesOn(env = process.env) {
|
|
27
|
+
return !env.JINION_DISABLE_AUTOUPDATER && readJson(settingsFile(), {}).autoUpdates !== false;
|
|
28
|
+
}
|
|
29
|
+
/** Installs the newest version when it is newer, into a folder of its own, then keeps that one and the one running. */
|
|
30
|
+
export async function updateOnce({ version, onReady, dir = versionsDir(), latest = latestVersion, install = npmInstall }) {
|
|
31
|
+
const newest = await latest();
|
|
32
|
+
if (compareVersions(newest, version) <= 0)
|
|
33
|
+
return;
|
|
34
|
+
if (!existsSync(mainOf(newest, dir))) {
|
|
35
|
+
const part = join(dir, `${newest}.part`);
|
|
36
|
+
rmSync(part, { recursive: true, force: true });
|
|
37
|
+
mkdirSync(part, { recursive: true });
|
|
38
|
+
try {
|
|
39
|
+
await install(newest, part);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
rmSync(part, { recursive: true, force: true });
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
rmSync(join(dir, newest), { recursive: true, force: true });
|
|
46
|
+
renameSync(part, join(dir, newest));
|
|
47
|
+
}
|
|
48
|
+
for (const old of installedVersions(dir)) {
|
|
49
|
+
if (old !== newest && old !== version)
|
|
50
|
+
rmSync(join(dir, old), { recursive: true, force: true });
|
|
51
|
+
}
|
|
52
|
+
onReady(newest);
|
|
53
|
+
}
|
|
54
|
+
/** From the registry npm itself uses, when it was given one. */
|
|
55
|
+
async function latestVersion() {
|
|
56
|
+
const registry = (process.env.npm_config_registry ?? 'https://registry.npmjs.org').replace(/\/$/, '');
|
|
57
|
+
const response = await fetch(`${registry}/${PACKAGE.replace('/', '%2F')}/latest`, { signal: AbortSignal.timeout(15_000) });
|
|
58
|
+
if (!response.ok)
|
|
59
|
+
throw new Error(`the registry answered ${response.status}`);
|
|
60
|
+
return (await response.json()).version;
|
|
61
|
+
}
|
|
62
|
+
/** Under a folder of the user's own, so it needs no `sudo` and leaves the files of the version running alone. */
|
|
63
|
+
async function npmInstall(version, folder) {
|
|
64
|
+
await run('npm', ['install', '--prefix', folder, '--no-save', '--no-audit', '--no-fund', '--omit=dev', '--loglevel=error', `${PACKAGE}@${version}`], {
|
|
65
|
+
timeout: 10 * 60 * 1000,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/update/updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { compareVersions } from '@jinion/core/lib/changelog';
|
|
5
|
+
import { jinionHome } from '@jinion/core/lib/paths';
|
|
6
|
+
/** Where the updater installs each version, one folder each, beside what Jinion keeps of the user's. */
|
|
7
|
+
export function versionsDir() {
|
|
8
|
+
return join(jinionHome(), 'versions');
|
|
9
|
+
}
|
|
10
|
+
/** The CLI file a version installed there starts from. */
|
|
11
|
+
export function mainOf(version, dir = versionsDir()) {
|
|
12
|
+
return join(dir, version, 'node_modules', '@jinion', 'cli', 'dist', 'main.js');
|
|
13
|
+
}
|
|
14
|
+
/** Only an install from npm updates itself; a checkout of the repository runs what it builds. */
|
|
15
|
+
export function fromNpm(file = fileURLToPath(import.meta.url)) {
|
|
16
|
+
return file.split(/[\\/]/).includes('node_modules');
|
|
17
|
+
}
|
|
18
|
+
/** The versions installed in full; one still being installed sits in a folder ending in `.part`, so it is never run. */
|
|
19
|
+
export function installedVersions(dir = versionsDir()) {
|
|
20
|
+
if (!existsSync(dir))
|
|
21
|
+
return [];
|
|
22
|
+
return readdirSync(dir)
|
|
23
|
+
.filter((name) => /^\d+(\.\d+)*$/.test(name) && existsSync(mainOf(name, dir)))
|
|
24
|
+
.sort(compareVersions);
|
|
25
|
+
}
|
|
26
|
+
/** What `jinion` runs instead of the version npm installed: the newest the updater installed, when it is newer. */
|
|
27
|
+
export function newerInstalled(own, dir = versionsDir()) {
|
|
28
|
+
const newest = installedVersions(dir).at(-1);
|
|
29
|
+
return newest && compareVersions(newest, own) > 0 ? mainOf(newest, dir) : undefined;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/update/versions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,wGAAwG;AACxG,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,GAAG,GAAG,WAAW,EAAE;IACzD,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACjF,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC;IAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACtD,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,iBAAiB,CAAC,GAAG,GAAG,WAAW,EAAE;IACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,OAAO,WAAW,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SAC7E,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3B,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,GAAG,GAAG,WAAW,EAAE;IAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,OAAO,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jinion/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.524",
|
|
4
4
|
"description": "Jinion coding agent",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://jinion.co",
|
|
@@ -13,12 +13,13 @@
|
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
15
|
"bin",
|
|
16
|
-
"dist"
|
|
16
|
+
"dist",
|
|
17
|
+
"CHANGELOG.md"
|
|
17
18
|
],
|
|
18
19
|
"dependencies": {
|
|
19
20
|
"jotai": "^3.0.1",
|
|
20
21
|
"react": "^19.3.0",
|
|
21
|
-
"@jinion/core": "0.
|
|
22
|
+
"@jinion/core": "0.3.0",
|
|
22
23
|
"@jinion/tui": "0.0.6"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|