pelican-cc 0.3.1 → 0.4.1
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 +389 -0
- package/README.md +19 -13
- package/THIRD_PARTY_NOTICES +3899 -0
- package/dist/server/index.js +30129 -4542
- package/dist/server/index.js.map +4 -4
- package/dist/web/assets/Chat-B4LGOITk.js +101 -0
- package/dist/web/assets/Chat-B4LGOITk.js.br +0 -0
- package/dist/web/assets/Chat-B4LGOITk.js.gz +0 -0
- package/dist/web/assets/ModelSheet-C_-Ol1pH.js +1 -0
- package/dist/web/assets/ModelSheet-C_-Ol1pH.js.br +0 -0
- package/dist/web/assets/ModelSheet-C_-Ol1pH.js.gz +0 -0
- package/dist/web/assets/Settings-3SpX54gH.js +4 -0
- package/dist/web/assets/Settings-3SpX54gH.js.br +0 -0
- package/dist/web/assets/Settings-3SpX54gH.js.gz +0 -0
- package/dist/web/assets/Usage-iU-isUVI.js +1 -0
- package/dist/web/assets/Usage-iU-isUVI.js.br +0 -0
- package/dist/web/assets/Usage-iU-isUVI.js.gz +0 -0
- package/dist/web/assets/WorkspaceChanges-Cy5Xd2wL.js +1 -0
- package/dist/web/assets/WorkspaceChanges-Cy5Xd2wL.js.br +0 -0
- package/dist/web/assets/WorkspaceChanges-Cy5Xd2wL.js.gz +0 -0
- package/dist/web/assets/WorkspaceFiles-CqdNRA7k.js +1 -0
- package/dist/web/assets/WorkspaceFiles-CqdNRA7k.js.br +0 -0
- package/dist/web/assets/WorkspaceFiles-CqdNRA7k.js.gz +0 -0
- package/dist/web/assets/index-7XuVvu-3.css +2 -0
- package/dist/web/assets/index-7XuVvu-3.css.br +0 -0
- package/dist/web/assets/index-7XuVvu-3.css.gz +0 -0
- package/dist/web/assets/index-D6DDBXmr.js +61 -0
- package/dist/web/assets/index-D6DDBXmr.js.br +0 -0
- package/dist/web/assets/index-D6DDBXmr.js.gz +0 -0
- package/dist/web/assets/usage-EcOxb73D.js +1 -0
- package/dist/web/assets/usage-EcOxb73D.js.br +0 -0
- package/dist/web/assets/usage-EcOxb73D.js.gz +0 -0
- package/dist/web/index.html +2 -2
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/dist/web/sw.js +56 -14
- package/dist/web/sw.js.br +0 -0
- package/dist/web/sw.js.gz +0 -0
- package/package.json +9 -9
- package/dist/web/assets/Chat-DC8P9wgJ.js +0 -73
- package/dist/web/assets/Chat-DC8P9wgJ.js.br +0 -0
- package/dist/web/assets/Chat-DC8P9wgJ.js.gz +0 -0
- package/dist/web/assets/ModelSheet-DYv_cBVT.js +0 -1
- package/dist/web/assets/ModelSheet-DYv_cBVT.js.br +0 -0
- package/dist/web/assets/ModelSheet-DYv_cBVT.js.gz +0 -0
- package/dist/web/assets/Settings-Bmvthzji.js +0 -3
- package/dist/web/assets/Settings-Bmvthzji.js.br +0 -0
- package/dist/web/assets/Settings-Bmvthzji.js.gz +0 -0
- package/dist/web/assets/index-BFIIo7_h.css +0 -2
- package/dist/web/assets/index-BFIIo7_h.css.br +0 -0
- package/dist/web/assets/index-BFIIo7_h.css.gz +0 -0
- package/dist/web/assets/index-D0THzVL2.js +0 -30
- package/dist/web/assets/index-D0THzVL2.js.br +0 -0
- package/dist/web/assets/index-D0THzVL2.js.gz +0 -0
- package/npm-shrinkwrap.json +0 -6710
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,394 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.1
|
|
4
|
+
|
|
5
|
+
Pinned sessions and the files Claude sends you, as in Claude Desktop; approvals that show what a
|
|
6
|
+
command hides; and what the reviews of 0.4.0 left.
|
|
7
|
+
|
|
8
|
+
### Highlights
|
|
9
|
+
|
|
10
|
+
- **Pinned sessions, as in Claude Desktop.** On a phone, a short swipe left on a row shows Pin
|
|
11
|
+
(Unpin on a pinned row) beside Archive, Archive at the edge as in Mail; a swipe all the way across
|
|
12
|
+
archives, with Undo, as before. On a computer the pin sits beside Archive when you point at a row,
|
|
13
|
+
and Pin is in the session menu; in the list, Undo shows for five seconds. A row takes no swipe
|
|
14
|
+
right, which is Safari's Back, nor one that starts at the very edge of the screen. Pinned sessions
|
|
15
|
+
lead the list under Pinned, grouped by time or by project, and under their project's filter, each
|
|
16
|
+
with its status (Working, Needs you, tasks) and its earlier runs. Pins are Pelican's own, kept on
|
|
17
|
+
the computer for all your browsers: a session pinned in Claude Desktop is not pinned here, and
|
|
18
|
+
Desktop's pins are left alone. Archiving a session unpins it.
|
|
19
|
+
- **Files Claude sends you, as in Claude Desktop.** In the sessions Pelican runs, Claude can send
|
|
20
|
+
you files (Claude Code's SendUserFile): Pelican now tells Claude Code it shows them, the way
|
|
21
|
+
Claude Code expects of an app that does, which turns that tool on and nothing else. Before, the
|
|
22
|
+
call failed with "SendUserFile is still listed for this conversation but is switched off in this
|
|
23
|
+
session right now". A file shows where Claude sent it, as it is sent and after a reload, read
|
|
24
|
+
from where Claude Code delivered it, under the words Claude sends with it, which read as a reply
|
|
25
|
+
does, Markdown and all: pictures in place, side by side at their own size when they come alone and
|
|
26
|
+
as small squares beside other files, larger on a tap; a video or a sound in a player, a part at a
|
|
27
|
+
time, so it plays in Safari too; a page or an SVG as the still preview, with Run; text to read,
|
|
28
|
+
Markdown as it reads, folded when long; a PDF in your browser's own viewer, in a tab of its own;
|
|
29
|
+
anything else as a card to download, with its type, name and size. A file Claude meant you to
|
|
30
|
+
save stays a card until you open it. While the call runs its step says "Sending file", and
|
|
31
|
+
"Failed to send" if it fails, in Claude Desktop's words, and sent files are never folded away
|
|
32
|
+
among steps. Asked to send one from outside the session's folder, the approval says "Claude wants
|
|
33
|
+
to send you a file" and lists it, instead of the call's raw input.
|
|
34
|
+
|
|
35
|
+
### Fixes
|
|
36
|
+
|
|
37
|
+
- `npm install -g pelican-cc` installs Claude Code for this computer alone, about 150 MB to
|
|
38
|
+
download: from the package's npm-shrinkwrap.json, npm installed it for all eight platforms, 1.2 GB
|
|
39
|
+
to download and 2.6 GB on disk, and in a project Pelican's own build and test tools too. The
|
|
40
|
+
packages Pelican's server uses are built into it instead, as CI tested them, and the Agent SDK,
|
|
41
|
+
with the Claude Code it brings, stays pinned to one version. The package now ships
|
|
42
|
+
`THIRD_PARTY_NOTICES`: each package built into the server and the web app, with its version and
|
|
43
|
+
license in full, and, for web-push, which is under the MPL 2.0, that its source is its npm
|
|
44
|
+
package. It credits esbuild for the helper code it writes into the server, gives what rolldown's
|
|
45
|
+
runtime takes from others, and quotes the notices of others that files built in carry at their
|
|
46
|
+
top, such as path-browserify's in code of vfile's, which minifying leaves out. The build writes it
|
|
47
|
+
from what it puts in the bundles, and fails if one is missing.
|
|
48
|
+
- A file Claude sent that is no longer there, as many are in older sessions, says "No longer on
|
|
49
|
+
this computer" before you tap anything, the same for every type, with its name and size and
|
|
50
|
+
nothing to tap; one past 200 MB says it is larger than Pelican serves, and a text file that large
|
|
51
|
+
still shows its start. A browser tab that opens one anyway says so in a page, not in JSON.
|
|
52
|
+
- A character in a sent file's name that hides or turns text around shows as ⟨U+202E⟩, with the
|
|
53
|
+
approval's warning, on its card, in the step that sends it and in the name it is saved under: a
|
|
54
|
+
script named to read as a picture no longer does. A screenshot keeps the name macOS gave it.
|
|
55
|
+
- Files Claude sent in Claude Desktop show from Claude Code's record of what it delivered, so one
|
|
56
|
+
Claude named by a relative path shows too; a file Claude Code did not deliver never shows.
|
|
57
|
+
- An SVG file Claude writes shows in its own colors and fonts, as a browser shows it: the visuals'
|
|
58
|
+
styles repainted its text and boxes (a yellow box near-white, a white label near-black). A sent
|
|
59
|
+
picture too small for the download button in its corner has the button beside it.
|
|
60
|
+
- A download, of a file Claude sent or from Changes and files, stops at the size the file had when
|
|
61
|
+
you asked for it: one that grew meanwhile, such as a log still being written, went on past the
|
|
62
|
+
size it had announced, and past the 200 MB limit. One cut short meanwhile breaks the download off.
|
|
63
|
+
- A file whose extension names what every JavaScript object has, such as `.constructor`, opens as a
|
|
64
|
+
file: sent by Claude it failed with a server error, in Changes and files it showed as a broken
|
|
65
|
+
picture, and as an upload it would not open.
|
|
66
|
+
- On a computer, a row's buttons cut none of its words: the words under them fade out, and in a
|
|
67
|
+
compact row the project and time make room for them. From the keyboard, Pin, Unpin and Archive
|
|
68
|
+
leave focus on the session's row where it went, or on the next row when it leaves the list, and
|
|
69
|
+
Undo brings focus back to it; Archive used to drop it to the page.
|
|
70
|
+
- A compact row keeps a date on one line ("Oct 25", not "Oct" over "25"), and grouped by time the
|
|
71
|
+
list's headings say what they hold, Previous 7 days and Previous 30 days: "This month" held
|
|
72
|
+
October's sessions on 6 November.
|
|
73
|
+
- A session archived in 0.4.0 while pinned in 0.4.1 comes back unpinned when you unarchive it.
|
|
74
|
+
- A step Claude is still writing keeps its icon and its verb at their size beside a long command.
|
|
75
|
+
- A conversation shows its day above its first message too, and above the first prompt of each new
|
|
76
|
+
day, as Claude Desktop does: Today, Yesterday, or the weekday and date.
|
|
77
|
+
- A `!` command that is a command in backquotes, such as `` `grep x f` ``, takes exit code 1 as
|
|
78
|
+
an answer, as Claude Code does, not as a failure: where a command would start, Pelican reads a
|
|
79
|
+
backquote as Claude Code's parser does, after `;`, `|`, `if` or an assignment too.
|
|
80
|
+
- Beside the conversation on a computer, a file's Quote and Copy row ends level with Send now and
|
|
81
|
+
the message boxes; it sat 2px lower.
|
|
82
|
+
- An Agent call's steps come a page at a time, the newest first, with Show earlier, as a workflow
|
|
83
|
+
agent's do: a long subagent's transcript, tens of megabytes, no longer reaches the phone whole. A
|
|
84
|
+
page with no step in it, such as a long answer at the end, is read past, so the card counts the
|
|
85
|
+
steps it shows, never "Last 0 steps", and Show earlier always brings at least one more; a page
|
|
86
|
+
that cannot be read says why, and Show earlier asks again. A step too large to show says what was
|
|
87
|
+
left out of it, and the transcript is read only from the session's own folder.
|
|
88
|
+
- Behind a tunnel or a proxy that cannot reach Pelican, a 502, 503 or 504 shows the quiet "Can't
|
|
89
|
+
reach" line, which keeps trying, instead of the error; a conversation that could not load then
|
|
90
|
+
loads once the computer is in reach again, also while the live connection stayed up.
|
|
91
|
+
- Export as Markdown reads as the conversation does, but for a reply's single line breaks, which a
|
|
92
|
+
Markdown file joins, as GitHub does. A prompt is text, as you typed it: none of its Markdown takes
|
|
93
|
+
effect, so a ``` it opens no longer swallows the rest of the file, nor makes a line of `:--` a
|
|
94
|
+
table, and its quotes are quotes, a quote from a file its lines as code. A reply keeps to itself
|
|
95
|
+
in any reader (GitHub, VS Code's preview, the spec's own): a heading in it sits under the
|
|
96
|
+
speakers' (`##` becomes `####`), so none passes for "You" or "Claude"; its HTML is text, as the
|
|
97
|
+
conversation shows it, so none hides the turns after it; a picture is a link that names its site,
|
|
98
|
+
never loaded when the file is read; its links by reference are written with their addresses and
|
|
99
|
+
its footnotes under labels of its own, so two replies' `[^1]` are two footnotes and no reply
|
|
100
|
+
changes where another's links lead or what its footnotes say; and a code block it leaves open ends
|
|
101
|
+
with it. Where readers part ways on a reply (an autolink with a character one of them takes, an
|
|
102
|
+
address with a control character, `ftp://`, a table VS Code's preview finds under a fence or a
|
|
103
|
+
heading), it is written so that they read it alike. The files Claude sent are named under their
|
|
104
|
+
step, with the words Claude sent with them. An address that starts with http://, https://, ftp://
|
|
105
|
+
or www., and an email, in prompts and Claude Code's notes stay text, as code, where a reader would
|
|
106
|
+
link them. A text past 60,000 characters ends with "…", as the conversation shows it. The folder
|
|
107
|
+
is named as the app names it, from your home folder (`~/code/acme-web`), and a file a step reads,
|
|
108
|
+
edits or writes from the session's folder (`src/styles/theme.css`).
|
|
109
|
+
|
|
110
|
+
### Security
|
|
111
|
+
|
|
112
|
+
- An approval shows the characters that show as nothing or turn text around, as `⟨U+E0078⟩`, and
|
|
113
|
+
warns of them: besides the zero-width and direction-changing ones, tags, a variation selector
|
|
114
|
+
after a letter or a run of them, fillers, soft hyphens, a carriage return, a code point not
|
|
115
|
+
assigned yet and the others Chrome draws as nothing or as a blank, so a command can no longer read
|
|
116
|
+
as `./build.sh` and run another file. The trust sheet, the line saying why Claude Code asks and a
|
|
117
|
+
sent file's name show them the same way.
|
|
118
|
+
- A space other than a plain one in a command shows as `⟨U+00A0⟩`, with the warning, unless Pelican
|
|
119
|
+
finds it in quotes, a heredoc's body or a comment: a shell takes it as part of a word, so `echo
|
|
120
|
+
done⟨U+00A0⟩# ; curl … | sh` read as a comment and ran curl, and `LC_ALL=C⟨U+00A0⟩cat ./setup.sh`
|
|
121
|
+
ran ./setup.sh. Pelican reads the command as bash, zsh, dash and macOS's bash 3.2 do, and the
|
|
122
|
+
scripts it hands a new shell: after `bash -c` or `ssh`, in a heredoc or pipe into `sh`, a script
|
|
123
|
+
it writes with a redirection or `tee` and then runs by its path, or by its name once it makes it a
|
|
124
|
+
program, or that runs on its own as a git hook or as a file a shell reads as it starts (what
|
|
125
|
+
BASH_ENV, ENV or `--rcfile` names, a .zshenv). A command that uses what can run text later in its
|
|
126
|
+
own shell has every such space show, however the text is made (split across quotes, by a variable
|
|
127
|
+
or an escape): `eval`, `source`, `trap`, an alias in any form (after `command` or `builtin`, or
|
|
128
|
+
named by a variable), `read`, `declare`, `let`, `unset`, zsh's `set -A` and its functions array,
|
|
129
|
+
bash's `BASH_ALIASES`, a parameter flag such as zsh's `(e)` and `$~x` or bash's `@P`, `setopt` or
|
|
130
|
+
`set -o` with an option that changes how text reads, `test` or `[` with an operator a variable may
|
|
131
|
+
give (`-v`), `at` and `crontab`, a command whose name Pelican does not know, arithmetic on a
|
|
132
|
+
variable the command sets to anything but a number, and the like, each by its name in any case (a
|
|
133
|
+
Mac runs `READ` as /usr/bin/read); so does a ksh script with a `<<#` heredoc, a script or a
|
|
134
|
+
program run by a path that is not plain text (`bash "$t"`) or from a folder the command writes
|
|
135
|
+
into but for a file it wrote there, and one run by its path where the command unpacks, patches or
|
|
136
|
+
copies a folder. Quoted text with a substitution's start in it counts as in a word. Where it
|
|
137
|
+
cannot tell, every such space shows. The same goes for a Monitor's command and, in the trust
|
|
138
|
+
sheet, for a hook, a helper, a skill's command and a git filter; between the arguments of an MCP
|
|
139
|
+
server, or of a hook run without a shell, every such space shows. A script another program writes
|
|
140
|
+
by itself, as `sed`'s `w`, `sort -o`, `split`, perl, python or awk can, is not followed, nor a
|
|
141
|
+
string another program runs in a shell of its own, such as python's `os.system` or a Makefile's
|
|
142
|
+
recipe. A long command shows at once, read once, and reading one takes at most a fixed time and
|
|
143
|
+
memory: a command longer than 64 KB, or that would take more to read than a fixed budget, has
|
|
144
|
+
every such space show, as a tool's input with many commands and a trust sheet's items share one
|
|
145
|
+
such budget (`x=…; bash -c "$x $x …"` of 24 KB took gigabytes, and crashed the page with the
|
|
146
|
+
approval on it again after each reload).
|
|
147
|
+
- In a PowerShell command such a space shows as it is, as PowerShell takes it for a space, unless
|
|
148
|
+
the command hands a script to bash, sh, wsl or ssh, which read it otherwise: then every one shows,
|
|
149
|
+
with the warning; in the trust sheet too, for a hook PowerShell runs.
|
|
150
|
+
- Ordinary text on an approval shows as it is, with no warning, as in Claude Code and Claude
|
|
151
|
+
Desktop: an emoji whole, in a command too, with its style, keycap, skin tone, flag and the joiners
|
|
152
|
+
between its pictures (a joined emoji such as a technologist warned in 0.4.0); a space other than a
|
|
153
|
+
plain one in a path, in words or in a command's quotes, such as the narrow one macOS puts in a
|
|
154
|
+
screenshot's name or a full-width one between Chinese words in a commit message; Apple's logo.
|
|
155
|
+
Words keep the joiners Persian and the Indic scripts are written with: what Claude says a command
|
|
156
|
+
does, a web search, what an agent is to do, a task, a tool's message and the caption of a file it
|
|
157
|
+
asks to send (a web search in Sinhala or Persian warned).
|
|
158
|
+
- The trust sheet lists a hook's arguments: a hook run without a shell (with `args`) showed only its
|
|
159
|
+
program.
|
|
160
|
+
- The trust sheet reads a folder's files as Claude Code reads them. A `.mcp.json` in a folder that
|
|
161
|
+
holds the repository was not read, though Claude Code reads one from every folder up to the file
|
|
162
|
+
system's top and starts its servers with the session: with `outer/.mcp.json` above the repository
|
|
163
|
+
`outer/repo`, a session there started with nothing asked, and the server ran. The folders above
|
|
164
|
+
the repository's top are now read for their `.mcp.json`, short of your home folder, whose files
|
|
165
|
+
are your own. A skill saved as `SKILL.MD`, which Claude Code opens on a Mac as `SKILL.md`, listed
|
|
166
|
+
nothing, nor did a command or an agent more than ten folders down, which Claude Code finds at any
|
|
167
|
+
depth: such a folder is now named above the list. A `.claude/settings.json` or `.mcp.json` saved
|
|
168
|
+
with a byte-order mark, as Windows' Notepad saves it, or as UTF-16, listed nothing, so the folder
|
|
169
|
+
was not asked about and Claude Code started with its hooks and servers; one Pelican cannot read as
|
|
170
|
+
JSON is listed by its name. A skill's, command's or agent's frontmatter whose lines end with a
|
|
171
|
+
carriage return alone, which Claude Code's YAML breaks at, hid its allowed-tools and hooks, and a
|
|
172
|
+
line separator (U+2028) on a key's line, which it reads as text, the key. A hook's or a server's
|
|
173
|
+
YAML shows with its lines as written, so a second line that runs curl no longer reads as part of a
|
|
174
|
+
`#` comment on the first, and the sheet says where an escape such as `\n` reads otherwise than it
|
|
175
|
+
is written. A folder's files are read in time that grows with their size, not with its square: in
|
|
176
|
+
0.4.0, a skill whose frontmatter was 480 KB of list items naming a power held the server for half
|
|
177
|
+
a minute, a command of a megabyte whose ```! block of blank lines never ends for four minutes, and
|
|
178
|
+
a skill of 1.1 MB with a line separator after a line of keys for a minute, after which the folder
|
|
179
|
+
counted as bringing nothing. The sheet lists from a file up to 200 items and 256 KB of them as it
|
|
180
|
+
shows them, and from a folder up to 1,000 and 1 MB, reading up to 32 MB of its files, more than
|
|
181
|
+
any project brings. An item it warns of, and Pelican's own word on what it could not read, are
|
|
182
|
+
always kept, so no number of harmless items leaves one out, and what the repository's git config
|
|
183
|
+
runs is read and listed whatever the folder's other files bring. Past that the sheet names, above
|
|
184
|
+
the list and in red, the first three files it shows part of and how many more, and the folder is
|
|
185
|
+
asked about as before, also where it lists nothing. A hook whose type or arguments are nested too
|
|
186
|
+
deep to read shows as one Pelican cannot read, where the request failed and nothing started.
|
|
187
|
+
- A notification keeps a flag made of tags only for England, Scotland and Wales, the three Unicode
|
|
188
|
+
recommends; other tags after a black flag, which can spell anything unseen, are left out. The
|
|
189
|
+
repository's check for hidden characters holds the docs to the same three.
|
|
190
|
+
|
|
191
|
+
### Site, docs and project
|
|
192
|
+
|
|
193
|
+
- The demo, and the live demo on the website, have a pinned session and a file Claude sent: in "Try
|
|
194
|
+
the dark theme on my phone", a screenshot of the settings page in dark. Export as Markdown
|
|
195
|
+
downloads the session in the live demo too, where it fetched nothing, its folder named
|
|
196
|
+
`~/code/acme-web` as the demo shows it, not by where the site was built.
|
|
197
|
+
- The docs say what the install takes: about 150 MB to download, about 400 MB on disk.
|
|
198
|
+
- The tests pass in any order, at any time of day, and hold on a busy computer: each starts from a
|
|
199
|
+
state of its own, a page's tests wait up to 3 seconds for what they look for, and those that
|
|
200
|
+
start a shell or Pelican give it time to start and leave nothing running when they fail. CI checks
|
|
201
|
+
that an install brings one Claude Code, and the smoke test that Export as Markdown downloads.
|
|
202
|
+
|
|
203
|
+
## 0.4.0
|
|
204
|
+
|
|
205
|
+
Files, changes and side chats as in Claude Desktop, workflows and `!` commands you can watch, and
|
|
206
|
+
your usage from every app.
|
|
207
|
+
|
|
208
|
+
### Highlights
|
|
209
|
+
|
|
210
|
+
- **Changes and files.** See what each turn changed (T1, T2…, numbered and counted as Claude
|
|
211
|
+
Code's `/diff` does until a compaction, from its own record, so also outside git), what is
|
|
212
|
+
uncommitted, or everything since your branch split from main, with diffs, and Rewind code where
|
|
213
|
+
Claude Code kept a checkpoint. Search the folder by name or in the text, and read a file with
|
|
214
|
+
line numbers, Markdown and HTML previewed. A file a step names, or a `path:line` in a reply,
|
|
215
|
+
opens at its line, and under a turn that edited files "3 files changed" opens them. On a phone
|
|
216
|
+
it is a view of its own that the back gesture steps through; on a computer it sits beside the
|
|
217
|
+
conversation from 1024px wide.
|
|
218
|
+
- **Side chats.** `/btw`, Cmd/Ctrl+; or Side chat in the session menu asks something on the side,
|
|
219
|
+
as in Claude Desktop. Claude answers from a read-only copy of the session (Read, Grep and Glob,
|
|
220
|
+
no MCP servers, never Bypass), and is told so with each question, as in Desktop. Nothing goes
|
|
221
|
+
back to the session, which keeps working. It sits beside the conversation from 1024px wide,
|
|
222
|
+
taking turns with Changes and files, and is a sheet on a phone. Side chats are Claude Code
|
|
223
|
+
sessions titled "Side chat", kept out of the session list (List options > Side chats shows them),
|
|
224
|
+
and continue in the CLI and Desktop; opened from the list, one keeps its box for questions only.
|
|
225
|
+
- **Quote.** Select text in a reply, a step's output or a file and tap Quote. The quote waits
|
|
226
|
+
above the message box with your draft and goes above your words as a `>` quote; lines of a file
|
|
227
|
+
carry where they are, as `src/app.ts:7-8`.
|
|
228
|
+
- **Live `!` commands.** Output as it comes, with Stop, for up to 30 minutes. When a command ends,
|
|
229
|
+
Claude answers it, as in the CLI, unless `respondToBashCommands` is false. Commands are written
|
|
230
|
+
the way Claude Code writes them, so the terminal and Desktop show Pelican's, and Pelican shows
|
|
231
|
+
theirs.
|
|
232
|
+
- **Usage and activity.** Settings > Usage and activity shows your Claude Code usage on this
|
|
233
|
+
computer, from every app: tokens of each kind over 7 days, 30 days or all time, per day,
|
|
234
|
+
sessions, active days and streaks, and where they went by project, model, app and session, with
|
|
235
|
+
a few highlights. On a plan its limits are at the top; on an API key or a provider, the cost
|
|
236
|
+
Claude Code estimates. Each reply counts once, also when it was copied into a side chat or a
|
|
237
|
+
branch; Claude Code's `/stats` counts each content block, so its totals are higher. The session
|
|
238
|
+
menu shows what that session used.
|
|
239
|
+
- **Workflows.** A workflow (Claude Code's Workflow tool) shows as a card, as Claude Code shows
|
|
240
|
+
one, instead of its script's first line: its name, Running or how it ended with its agents and
|
|
241
|
+
tokens, its phases one a line (Review · 3 of 5 done) opening into their agents and each agent's
|
|
242
|
+
steps, the script and the result. It is live, with Stop, in sessions Pelican runs, and read from
|
|
243
|
+
the run's folder for other apps'; its end, also one that came while Claude worked (those were
|
|
244
|
+
lost), leads back to the card. Asked to run one, the approval shows its phases, the args its
|
|
245
|
+
script runs with and the file it runs.
|
|
246
|
+
|
|
247
|
+
### Changes in behavior
|
|
248
|
+
|
|
249
|
+
- Line comments go with your next message in the session they were written in, before your words,
|
|
250
|
+
as in Claude Desktop, or on their own with Cmd/Ctrl+Enter, instead of Add to message. They are
|
|
251
|
+
kept across reloads and forgotten on sign-out.
|
|
252
|
+
- Transcript views are Claude Desktop's: Normal, Thinking and Verbose, and Ctrl+O steps through
|
|
253
|
+
them. Thinking shows in a session's menu once Claude has thought there. A session set to Summary
|
|
254
|
+
opens in Normal.
|
|
255
|
+
- A `!` command may run 30 minutes instead of two, and Claude answers it when it ends, which is a
|
|
256
|
+
turn like a prompt. A command you stop gets no answer, and one still running when Pelican stops
|
|
257
|
+
gets up to 15 seconds to tidy up, then ends with it; Ctrl+C again ends it at once. Under launchd
|
|
258
|
+
it gets what the login item leaves: `pelican service install` now asks launchd for 20 seconds,
|
|
259
|
+
where it gave 5.
|
|
260
|
+
- Claude gets a `!` command's output as Claude Code's bash mode gives it, in the record Claude
|
|
261
|
+
Code writes for the same output: stdout and stderr together in the order they were written, as
|
|
262
|
+
much as Claude Code reads back of it, 30,000 bytes or what `bashOutputMaxChars` sets (where that
|
|
263
|
+
is unset, BASH_MAX_OUTPUT_LENGTH, 1 to 150,000), instead of up to 200,000 characters of each. A
|
|
264
|
+
failed one is cut there. One that went well and printed more is saved in the session's
|
|
265
|
+
`tool-results` folder, where Claude Code saves one, up to 64MB, and Claude gets its start and
|
|
266
|
+
where it is; so is one whose text is longer than Claude gets inline (30,000 characters, or what
|
|
267
|
+
`bashOutputMaxChars` sets). Exit code 1 from grep, diff, test or find is an answer, not a
|
|
268
|
+
failure, when that command is the line's last statement as Claude Code's parser reads it (not
|
|
269
|
+
in a subshell or a `{ }` group; a comment is none). The record no longer adds the exit code, or
|
|
270
|
+
that something runs on in the background, as Claude Code's adds neither.
|
|
271
|
+
- What Claude changes in answer to a `!` command is that command's turn in Changes, as in `/diff`;
|
|
272
|
+
a message of files alone starts a turn, a picture sent without words none, and a new file's
|
|
273
|
+
lines count as `/diff` counts them. After a compaction `/diff` numbers from 1 again, and it reads
|
|
274
|
+
only the last 4,096 messages, so in a longer stretch its T1 is a later turn; Pelican, which shows
|
|
275
|
+
every turn, counts on from the first.
|
|
276
|
+
- A renamed file's diff shows the rename and what changed in it, instead of the whole file as new;
|
|
277
|
+
one renamed whole says "Renamed from …, unchanged".
|
|
278
|
+
- Push and Create PR, on the branch line, show only where the repository has a remote with an
|
|
279
|
+
address, not one that only a system or managed git config names (a fetch line for every
|
|
280
|
+
repository).
|
|
281
|
+
- Changes and files docks from 1024px wide instead of 1440px; below 1280px the session list folds
|
|
282
|
+
away while it is open, and Cmd/Ctrl+K brings it back.
|
|
283
|
+
- Cmd/Ctrl+\ closes Changes and files when pressed in it, as it closes the side chat and as Close
|
|
284
|
+
pane does in Claude Desktop; closed, the pane gives the keys to the button that opens it.
|
|
285
|
+
- The keyboard shortcuts (Cmd/Ctrl+/) list Changes and files (Cmd/Ctrl+Shift+D), Close pane
|
|
286
|
+
(Cmd/Ctrl+\) and Send comments (Cmd/Ctrl+Enter), and call Ctrl+O Transcript view.
|
|
287
|
+
- Commit, Push and Create PR, on the branch line, put a request to Claude in the message box, so
|
|
288
|
+
your rules, hooks and attribution apply. Pelican runs no git that changes anything.
|
|
289
|
+
|
|
290
|
+
### Sessions and the list
|
|
291
|
+
|
|
292
|
+
- Claude Desktop's side chats stay out of the list also once Claude Code has given them the
|
|
293
|
+
session's title again, as it does when their Claude exits; most showed as more sessions with
|
|
294
|
+
that title.
|
|
295
|
+
|
|
296
|
+
### The conversation
|
|
297
|
+
|
|
298
|
+
- An approval says Claude's few words on a command once, also when Claude Code passes them as its
|
|
299
|
+
own line too.
|
|
300
|
+
- A failed request at the end of the conversation offers Retry, which sends the prompt again with
|
|
301
|
+
its files, or Compact when the conversation is too long.
|
|
302
|
+
- Scheduled check-ins have Cancel, which asks Claude to cancel them.
|
|
303
|
+
- An MCP server that needs you to sign in says where: `claude mcp login <name>` in a terminal on
|
|
304
|
+
the computer, or claude.ai's connectors page.
|
|
305
|
+
- Approval notifications have Allow and Deny where the device shows buttons on notifications
|
|
306
|
+
(Chrome on a computer or Android), for a command a notification shows whole: printable ASCII with
|
|
307
|
+
one space between words, on one line, short enough for two lines of the narrowest notification
|
|
308
|
+
(about 50 characters, fewer when they are wide), and on Android, whose pop-up shows one line
|
|
309
|
+
beside the buttons, for that one line (about 20). A notification shows the command itself, not
|
|
310
|
+
Claude's description of it; edits, other tools, other commands, questions and plans open the
|
|
311
|
+
session.
|
|
312
|
+
- Notifications and check-ins keep emoji whole, also those made of several pictures, and still
|
|
313
|
+
leave out characters that hide text or turn it around, now also from a notification's title, the
|
|
314
|
+
session's. Their text is cut between characters as they show, and sooner where those hold many
|
|
315
|
+
code points (one letter can carry any number of accents), so a notification stays within the
|
|
316
|
+
4 KB a push service carries.
|
|
317
|
+
- Export as Markdown has the conversation as it shows here: `!` and `/` commands as typed, as
|
|
318
|
+
code, with their output; the files and pictures sent with a prompt; Claude Code's own lines,
|
|
319
|
+
such as a background task's note, Interrupted, a failed request (naming the computer, as the
|
|
320
|
+
conversation does) or a hook's word, and a command that failed marked so; and none of
|
|
321
|
+
the tags, notes and summaries Claude Code and Pelican add for Claude, such as a side chat's note
|
|
322
|
+
with each question.
|
|
323
|
+
- The session menu shows the session's tokens, the share from the cache, its models and
|
|
324
|
+
compactions, and its cost where Claude Code counts one.
|
|
325
|
+
- A finished `!` command shows the end of its output, as it did while it ran; Show all shows the
|
|
326
|
+
start, and for one too long for the conversation what Claude Code saved of it (up to 64MB), from
|
|
327
|
+
that file, a page at a time, also in a branch that copied it. One that printed nothing shows the
|
|
328
|
+
command alone, and one that failed says Failed, or Stopped, where its live card said how it
|
|
329
|
+
ended; a record from before (Claude Code before 2.1.80, Pelican before 0.4) says so only where
|
|
330
|
+
it noted it. A running one's Stop is named for it.
|
|
331
|
+
- Claude's answer to a background task's note shows after the note, not in the reply before it.
|
|
332
|
+
- A message that does not go comes back to the message box, files and all, above anything typed
|
|
333
|
+
since. A `!` or `/` command comes back only into an empty box; with words or files there, it
|
|
334
|
+
waits above the box, Not sent, with Put back, as does a message, files and all, that comes back
|
|
335
|
+
while a command is typed. A `/` command goes with its words alone: files in the box wait for the
|
|
336
|
+
next message, as quotes do. What waits stays across reloads, and in a new session goes on with
|
|
337
|
+
the session once it starts, line comments too. Put back brings words and files back together, or, where they cannot
|
|
338
|
+
share the box, swaps them with what is there, which waits in its place, Set aside. One sent for
|
|
339
|
+
you (Send now, Compact, Retry, Cancel) leaves the box as it is.
|
|
340
|
+
- A path or "files changed" tapped while the side chat is open puts it away and opens Changes and
|
|
341
|
+
files.
|
|
342
|
+
- Side chat in the session menu leaves the keys in the side chat's box, which, beside the
|
|
343
|
+
conversation on a tablet, keeps clear of the home indicator, level with the conversation's.
|
|
344
|
+
Quotes that do not fit above the message box fade at its edge, and removing one with the
|
|
345
|
+
keyboard moves on to the next.
|
|
346
|
+
- A conversation opens without the code of Changes and files, which follows once it is up, and
|
|
347
|
+
Settings without the usage page.
|
|
348
|
+
|
|
349
|
+
### Changes and files
|
|
350
|
+
|
|
351
|
+
- Search in files shows each hit where it is on its line, after a "…" when it is far along,
|
|
352
|
+
marked in amber.
|
|
353
|
+
- A file's Quote and Copy sit in a row of their own under the file, so nothing scrolls beneath
|
|
354
|
+
them.
|
|
355
|
+
- On a touch screen, search results and a step's file name are a finger tall, and the lowest row
|
|
356
|
+
of Changes and files (Quote and Copy, Send now, or the bar saying Claude needs you) keeps clear
|
|
357
|
+
of the home indicator, on a phone and beside the conversation on a tablet.
|
|
358
|
+
- Esc in a comment on a file gives the keys back to the file, as on a diff, so the next Esc closes
|
|
359
|
+
the view.
|
|
360
|
+
|
|
361
|
+
### Security
|
|
362
|
+
|
|
363
|
+
- In a folder kept to your settings only, a `!` command runs git as Claude Code does there, with
|
|
364
|
+
none of the repository's own programs (its file-system monitor, filters or hooks folder).
|
|
365
|
+
- Changes and files reads only regular files inside the folder it is asked about (the session's),
|
|
366
|
+
links followed and checked. Downloads come as inert attachments. Search runs the ripgrep inside
|
|
367
|
+
Claude Code with no config, an empty environment, no git and no links followed.
|
|
368
|
+
- Show all on a long `!` command reads the file Claude Code saved its output in by that file's
|
|
369
|
+
name alone, from the session's own `tool-results` folder, or, for a record a branch copied, from
|
|
370
|
+
that of the session its row says it came from, when the record's path names that session: a
|
|
371
|
+
regular file reached through no link and with no other name.
|
|
372
|
+
- A page in Files runs its scripts only after Run, and again only after another Run once it has
|
|
373
|
+
been rewritten; a page opened straight from another file never starts running.
|
|
374
|
+
- A side chat only reads, asks for nothing, and takes no `/` or `!` commands. A side chat branched
|
|
375
|
+
from one of its questions is one too.
|
|
376
|
+
- Notification buttons go through the same checks as the page, and Allow is offered only for a
|
|
377
|
+
command a notification shows in full: printable ASCII with one space between words, on one line,
|
|
378
|
+
that fits two lines of the narrowest notification in its widest letters, and on Android, whose
|
|
379
|
+
pop-up shows one line beside the buttons, that one line.
|
|
380
|
+
|
|
381
|
+
### Site, docs and project
|
|
382
|
+
|
|
383
|
+
- The demo's files have their text, and the files its conversations name open at the lines they
|
|
384
|
+
name.
|
|
385
|
+
- The docs cover Changes and files, side chats, quotes, live `!` commands, the views and the
|
|
386
|
+
usage page, and the coverage table moves side questions, views, quotes and Create PR to Yes.
|
|
387
|
+
- On a phone, the website leads with the two buttons and the install command, then shows the app
|
|
388
|
+
in the same phone frame as on a computer, whole when you scroll, instead of a cropped card.
|
|
389
|
+
- The browser smoke test checks the docked pane at 1024, 1280 and 1440px and the side chat pane at
|
|
390
|
+
1024px, where it asks a question, and opens older sessions at one size only, to keep CI quick.
|
|
391
|
+
|
|
3
392
|
## 0.3.1
|
|
4
393
|
|
|
5
394
|
- New sessions start at High effort until you pick another in Settings (New sessions start with >
|
package/README.md
CHANGED
|
@@ -44,9 +44,9 @@ pelican
|
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
On the computer where you use Claude Code, with Node 22.12 or newer and Claude Code signed in, on
|
|
47
|
-
macOS or Linux. `pelican` prints the link that signs this browser in. The install is about 150 MB
|
|
48
|
-
most of it the copy of Claude Code that the Agent SDK brings.
|
|
49
|
-
`pelican-cc`, for computers where Python's Pelican has `pelican`.
|
|
47
|
+
macOS or Linux. `pelican` prints the link that signs this browser in. The install is about 150 MB
|
|
48
|
+
to download and about 400 MB on disk, most of it the copy of Claude Code that the Agent SDK brings.
|
|
49
|
+
The command is also called `pelican-cc`, for computers where Python's Pelican has `pelican`.
|
|
50
50
|
|
|
51
51
|
## On your phone
|
|
52
52
|
|
|
@@ -66,18 +66,23 @@ The docs cover [an SSH tunnel or your own proxy](https://ki-seki.github.io/pelic
|
|
|
66
66
|
every compaction. When another app is working on one, or waits for you there, Pelican says which
|
|
67
67
|
app; once it is idle, continue it here.
|
|
68
68
|
- **All of Claude Code.** Approvals with the diff, plans and questions, steer or queue while Claude
|
|
69
|
-
works, `!` commands, `/` commands and skills, `@` files, every
|
|
70
|
-
and branch, subagents and background tasks, MCP servers
|
|
71
|
-
- **What Claude makes, in place.** Charts and diagrams Claude draws
|
|
72
|
-
conversation, as still pictures until you tap
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
works, side chats, `!` commands with their output live, `/` commands and skills, `@` files, every
|
|
70
|
+
model and permission mode, rewind and branch, subagents and background tasks, MCP servers.
|
|
71
|
+
- **What Claude makes, in place.** Charts and diagrams Claude draws, pages it writes and files it
|
|
72
|
+
sends you show in the conversation, as in Claude Desktop: pages as still pictures until you tap
|
|
73
|
+
Run, pictures side by side, videos and sounds in a player, a PDF in your browser's viewer,
|
|
74
|
+
anything else to download.
|
|
75
|
+
- **Changes and files, as in Claude Desktop.** What each turn changed, what is uncommitted, or
|
|
76
|
+
everything since your branch split, with diffs. Search and read the folder; a path in a reply
|
|
77
|
+
opens the file at its line. Comment on a line or quote it, and Create PR asks Claude.
|
|
78
|
+
- **Your usage, from every app.** Tokens, sessions and streaks by project, model and app, with your
|
|
79
|
+
plan's limits, or the cost Claude Code estimates on an API key.
|
|
75
80
|
- **Made for a phone, good on a computer.** One hand, dictation, a notification when Claude needs
|
|
76
81
|
you or finishes, and a Home Screen icon. On a wide screen, the list, the conversation and the
|
|
77
82
|
changes sit side by side.
|
|
78
83
|
|
|
79
84
|
<p align="center">
|
|
80
|
-
<img src="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/tour.gif" width="320" alt="A tour of Pelican on a phone: a
|
|
85
|
+
<img src="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/tour.gif" width="320" alt="A tour of Pelican on a phone: the list with a pinned session; a chart Claude drew, in place, and a page it wrote, run; an edit waiting for approval, and what changed; a screenshot Claude sent; a session Claude Desktop is running">
|
|
81
86
|
</p>
|
|
82
87
|
|
|
83
88
|
## Compared with
|
|
@@ -101,8 +106,7 @@ Remote Control can answer a prompt waiting in your terminal; Pelican cannot. Mor
|
|
|
101
106
|
Pelican runs Claude Code itself, so your settings, `CLAUDE.md`, hooks, skills, subagents and MCP
|
|
102
107
|
servers work as they do in the terminal, and so does any login: a Claude plan, an API key, Bedrock,
|
|
103
108
|
Google Cloud or Microsoft Foundry. What Pelican does not do: Remote Control, cloud sessions, a
|
|
104
|
-
worktree for each new session,
|
|
105
|
-
hand. [The full table](https://ki-seki.github.io/pelican/docs.html#coverage) goes through Claude
|
|
109
|
+
worktree for each new session, a terminal of its own, or editing files by hand. [The full table](https://ki-seki.github.io/pelican/docs.html#coverage) goes through Claude
|
|
106
110
|
Code's features one by one.
|
|
107
111
|
|
|
108
112
|
## Security
|
|
@@ -161,4 +165,6 @@ through [SECURITY.md](SECURITY.md).
|
|
|
161
165
|
|
|
162
166
|
## License
|
|
163
167
|
|
|
164
|
-
[MIT](LICENSE). Pelican is an independent project, not made by or affiliated with Anthropic.
|
|
168
|
+
[MIT](LICENSE). Pelican is an independent project, not made by or affiliated with Anthropic. The
|
|
169
|
+
packages built into its server and web app are under their own licenses: `THIRD_PARTY_NOTICES`,
|
|
170
|
+
in the npm package, gives each with its license in full.
|