pi-studio 0.10.1 → 0.10.3
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 +28 -0
- package/README.md +13 -18
- package/client/studio-client.js +284 -67
- package/index.ts +486 -273
- package/package.json +1 -1
- package/shared/repl-gnuplot-processes.js +180 -0
- package/shared/repl-session-stop.js +285 -0
- package/shared/studio-browser-launcher.js +43 -4
- package/shared/studio-buffer-client.js +3 -1
- package/shared/studio-document-open-client.js +3 -1
- package/shared/studio-repl-selection.js +96 -0
- package/shared/studio-repl-tmux.js +216 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,34 @@ All notable changes to `pi-studio` are documented here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.3] — 2026-10-19
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- IPython shows a value once, as `Out[5]: array([11])`. Studio used to print it again on the next line.
|
|
11
|
+
- After a Quick send, the cursor goes back to the box when the send finishes, so you can type the next line. It stays where you put it if you clicked elsewhere meanwhile.
|
|
12
|
+
|
|
13
|
+
## [0.10.2] — 2026-10-19
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- The selected REPL session follows what you choose. A Start, send or agent send that finishes later no longer takes the selection back if you've chosen another session since.
|
|
17
|
+
- **Runtime** follows the selected session. If the agent sends code to a Python session while you're on Julia, Studio switches to Python. After a reload, Studio shows the session it has selected, not just some session of the last Runtime.
|
|
18
|
+
- When the selected session ends outside Studio, Studio selects another session of the same runtime, or none.
|
|
19
|
+
- An agent send that names no session fails when Studio shows none, with "No REPL session is selected in Studio. Choose one under Session, or pass sessionName."
|
|
20
|
+
- A new dual workspace, or one reopened after switching mode, no longer says it was restored. Only a reload that brings back this tab's own copy says "Restored the Prompt and Document."
|
|
21
|
+
- Opening a file names it and where it went, such as "Opened notes.md in the Document.", or "Opened notes.md." with one editor.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
- On Windows, `/studio` opens the whole Studio URL. `cmd /c start` cut it at the first `&`, which lost the workspace and gave "editing URL is not registered in dual editor mode" (#5).
|
|
25
|
+
- On Windows, opening a PDF, an export or a folder works when its path has `&`, `%`, `^`, `!` or a comma. Studio hands the path to Explorer instead of `cmd /c start`.
|
|
26
|
+
- Starting a REPL waits for the runtime's own prompt before saying it started. If the runtime exits while starting, Studio says so and shows the command; if the prompt hasn't appeared after 20 seconds, it asks you to check the pane before running code.
|
|
27
|
+
- Stopping a runtime's session ends its processes, including any that ignore the hangup, and reports it stopped only once they've exited. If Studio can't confirm that, it says so. Shell sessions still close like a terminal, so nohup and disowned jobs keep running.
|
|
28
|
+
- Code goes only to the session Studio names, never to one whose name merely starts the same way, and into that session's first pane, even when windows are numbered from 1 or a pane is opened above it.
|
|
29
|
+
- REPL sessions are listed and read correctly when no UTF-8 locale is set.
|
|
30
|
+
- Output from sent code no longer shows Studio's own loader line, even when IPython wraps it, or the prompt after it. Output that only looks like a prompt is kept.
|
|
31
|
+
- Julia code with `$` interpolation, such as `println("i=$i")`, runs as written. Studio's wrapper used to read the `$` first.
|
|
32
|
+
- GHCi reports completion even when the code reads input or leaves a `:{` block open.
|
|
33
|
+
- Studio no longer pastes code into a runtime it doesn't support. It says "Studio can't send code to … yet: it doesn't support that runtime."
|
|
34
|
+
|
|
7
35
|
## [0.10.1] — 2026-10-14
|
|
8
36
|
|
|
9
37
|
### Fixed
|
package/README.md
CHANGED
|
@@ -4,36 +4,31 @@ A browser workspace for [Pi](https://pi.dev). Write and run prompts, read respon
|
|
|
4
4
|
|
|
5
5
|
## Screenshots
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The Prompt, with a section added from the Document:
|
|
8
8
|
|
|
9
|
-

|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The Document:
|
|
12
12
|
|
|
13
|
-

|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Zen mode, in rose-pine-dawn:
|
|
16
16
|
|
|
17
|
-

|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Watch the [demo](https://github.com/omaclaren/pi-studio/releases/download/demo-prompt-document/pi-studio-2-demo.mp4) (1m36s, 2× speed, no audio). It shows browsing linked documents and bringing a Document selection into the Prompt.
|
|
20
20
|
|
|
21
21
|
## Features
|
|
22
22
|
|
|
23
23
|
- **Prompt and Document** — the default, dual editor mode. The Prompt holds what you send to Pi; the Document holds the file you're working on. Each keeps its own edits, preview and place. See [Single and dual editor mode](#single-and-dual-editor-mode).
|
|
24
24
|
- **Run, critique, annotate** — run the Prompt, ask for a critique, or annotate a response with `[an: ...]` markers and send it back.
|
|
25
|
-
- **Response history** — step back through earlier responses
|
|
26
|
-
- **
|
|
27
|
-
- **Rendering** — Markdown and LaTeX with math, syntax highlighting, Mermaid diagrams (with Lucide and Logos icons), CSV tables, interactive HTML and embedded PDFs, themed to match Pi.
|
|
25
|
+
- **Response history and Working** — step back through earlier responses and the prompts behind them, and follow Pi's thinking and tool use as it happens.
|
|
26
|
+
- **Rendering** — Markdown and LaTeX with math, syntax highlighting, Mermaid diagrams, CSV tables, interactive HTML and embedded PDFs, themed to match Pi.
|
|
28
27
|
- **Files and Changes** — browse folders you've allowed, open or preview files, and see the current git diff.
|
|
29
28
|
- **Comments and scratchpad** — comments anchored to lines or selections, and a scratchpad per document.
|
|
30
|
-
- **Side questions** — ask about the text, a folder or the repository in a separate thread that stays out of the main conversation,
|
|
29
|
+
- **Side questions and quizzes** — ask about the text, a folder or the repository in a separate thread that stays out of the main conversation, or quiz yourself on it.
|
|
31
30
|
- **REPL** — send code to tmux-backed Shell, Python, IPython, Julia, R, GHCi or Clojure sessions, shared with [pi-repl](https://github.com/omaclaren/pi-repl).
|
|
32
|
-
- **Quiz me, Show me, completions** — active-recall quizzes over the text or a folder, one-turn visual explanations, and short completions at the cursor.
|
|
33
31
|
- **Export** — PDF (Pandoc and LaTeX) or standalone HTML, from the preview, a file or the last response.
|
|
34
|
-
- **Careful saving** — a save checks the file hasn't changed on disk since you opened it, and asks if it has.
|
|
35
|
-
- **Quarto** — preview a saved Quarto document through `quarto preview`, without running its code.
|
|
36
|
-
- **Layout** — side by side or stacked panes, and a Zen mode that hides everything but the text.
|
|
37
32
|
|
|
38
33
|
## Requirements
|
|
39
34
|
|
|
@@ -97,7 +92,7 @@ Pi's agent can also use these tools:
|
|
|
97
92
|
|
|
98
93
|
**Single editor mode** is the one-editor Studio of earlier versions, where Run sends the editor's text.
|
|
99
94
|
|
|
100
|
-
To switch, use the footer button or `/studio --single` and
|
|
95
|
+
To switch, use the footer button or `/studio --single` and `--dual`. Studio restarts and reopens the tab with the Prompt's text, and remembers the choice. If switching would lose anything, it says so first.
|
|
101
96
|
|
|
102
97
|
## Details
|
|
103
98
|
|
|
@@ -117,7 +112,7 @@ watch: true
|
|
|
117
112
|
```
|
|
118
113
|
````
|
|
119
114
|
|
|
120
|
-
To view a PDF, run `/studio report.pdf`; it opens read-only, and `#page=N` picks the page. `/studio --watch report.pdf` also reloads it when the file changes
|
|
115
|
+
To view a PDF, run `/studio report.pdf`; it opens read-only, and `#page=N` picks the page. `/studio --watch report.pdf` also reloads it when the file changes; it waits until the file stops changing, so it doesn't reload half-written LaTeX output. (`/studio-pdf` is different: it exports to a new PDF.)
|
|
121
116
|
|
|
122
117
|
### Mermaid icons
|
|
123
118
|
|
|
@@ -136,7 +131,7 @@ Icons in exported PDFs need Mermaid CLI 11.12+ (`npm install -g @mermaid-js/merm
|
|
|
136
131
|
|
|
137
132
|
### Pi's input editor
|
|
138
133
|
|
|
139
|
-
**Load from pi editor** (Cmd/Ctrl+Shift+L) copies the draft in Pi's terminal input into Studio,
|
|
134
|
+
**Load from pi editor** (Cmd/Ctrl+Shift+L) copies the draft in Pi's terminal input into Studio, which suits tools like [pi-nvim-context](https://github.com/omaclaren/pi-nvim-context) that build that draft up. When Studio runs that text, it clears the terminal draft only if the draft hasn't changed since.
|
|
140
135
|
|
|
141
136
|
### REPL
|
|
142
137
|
|