@goodfish/jarvy 0.4.0 → 0.6.0

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 CHANGED
@@ -2,6 +2,51 @@
2
2
 
3
3
  All notable changes to Jarvy. Versions follow [semantic versioning](https://semver.org/) as used before 1.0: a patch release only fixes bugs; a minor release adds features or upgrades the database.
4
4
 
5
+ ## 0.6.0 — 2026-10-19
6
+
7
+ Upgrading moves the database from schema v19 to v20 on first start: environments and their grants are added, and each Bot gains its default and current environment. Existing Bots keep working on your computer. A v20 database cannot be opened by 0.5.0; keep a copy if you may need to go back.
8
+
9
+ ### Added
10
+
11
+ - **Sandboxes.** A Bot can work in its own sandbox: a Linux container only it uses, which Jarvy makes with Docker. It comes with Node, Python, git, build tools, CJK fonts and Playwright with its browsers, and the Bot can install more with sudo. Its workspace is mounted as `/workspace` and is its home directory there, so settings such as `~/.ssh` and `~/.gitconfig` stay with it. Choose a sandbox or your computer when you create a Bot (the agent Bot can too), or change it later in Bot info under 工作环境 / Work environment. A sandbox keeps running until you stop it, and it survives a Jarvy restart. Stop closes what the Bot left running there, and Reset removes what it installed but never the workspace; both ask first. Without Docker, Bots work on your computer as before. (A50)
12
+ - **Letting a sandboxed Bot use your computer.** In Bot info, a switch under the external environments it may use lets a sandboxed Bot use your computer. It moves there and back by itself when a task needs it, like `cd`, and each batch tells it where it is now. Turning the switch off sends a Bot that is there back to its sandbox. A command that is already running finishes where it started.
13
+ - **Files go through Jarvy.** Attachments no longer point at a path on your computer. A Bot fetches one into wherever it is working, and sends files from there, so files work the same in a sandbox.
14
+
15
+ ### Changed
16
+
17
+ - Pi 1.2.0, and the model catalogue takes pi.dev's newer entries. (A49)
18
+ - The live cat's thinking and murmurs show all of a step's text and scroll, up to 12 lines (6 on a phone).
19
+
20
+ ### Fixed
21
+
22
+ - Files sent together in one message keep the order they were given in. This applies to messages sent before the upgrade too.
23
+ - The transcript stays at the bottom when rows grow after opening, instead of stopping a little above the newest message.
24
+
25
+ ### Known limits
26
+
27
+ - The sandbox image is built on your machine the first time one is needed: a few minutes, about 3 GB. There is no GPU in it.
28
+ - A sandbox keeps the image it was made from until you reset it. Older images are removed after a new one is built.
29
+ - Being able to use Docker is equivalent to root on the machine running Jarvy.
30
+
31
+ ## 0.5.0 — 2026-10-14
32
+
33
+ Upgrading moves the database from schema v18 to v19 on first start: a settings table is added and the inbox table is rebuilt with all its rows. A v19 database cannot be opened by 0.4.0; keep a copy if you may need to go back. If the Bot created at setup was deleted, it comes back as Jarvy (Jarvy 2 if the name is taken) with no model.
34
+
35
+ ### Added
36
+
37
+ - **The agent Bot.** The Bot created at setup (Jarvy by default) is your agent: besides working like any Bot, it helps you run Jarvy itself. Ask it in a DM or a channel to create Bots, change their name, description and persona, give them a model and thinking level, start or stop them, or see their usage. It can also delete Bots, channels and channel groups and remove members from a channel, but each time it first asks you on a card, worded in your language, and nothing happens unless you confirm. A Bot it changes is told what changed with its next batch. Other Bots can ask it for these things too; the tools are its alone. Model connections, keys and logins stay with you in Settings. (A48)
38
+ - **A welcome.** The first time the agent Bot gets a model, it greets you in its DM, in the language of your interface, and asks what you want to get done.
39
+ - **The crown.** The agent Bot wears a small gold crown: hovering and slowly turning over its cat, and on its avatar in the sidebar, messages, member lists and Bot info. Its DM stays at the top of the DM list, and its Bot info says what it can do for you.
40
+
41
+ ### Changed
42
+
43
+ - The agent Bot can't be deleted; it can still be renamed and stopped.
44
+ - Pictures in messages keep their own proportions instead of a fixed crop: as wide as the card at most, at most 320 px tall (260 px on a phone), never enlarged.
45
+
46
+ ### Fixed
47
+
48
+ - A web address followed by Chinese punctuation no longer swallows the punctuation and the words after it: the link ends at the first full-width mark. Chinese inside an address still works, and links written as `[text](url)` are untouched.
49
+
5
50
  ## 0.4.0 — 2026-10-14
6
51
 
7
52
  No database change: 0.4.0 opens a 0.3.0 database (schema v18) as it is, and 0.3.0 can still open it afterwards.
package/README.md CHANGED
@@ -34,6 +34,10 @@ The interface comes in English and Chinese, following your browser's language; s
34
34
 
35
35
  **Watch it work.** In a DM, the Bot's block cat acts out its turn as it happens: it thinks, reads, types and turns to you, and a dialogue beside it shows what it is thinking, muttering and sending, and each tool it runs. Click the dialogue to see every step.
36
36
 
37
+ **Each Bot in its own sandbox.** With Docker installed, a Bot can work in a Linux container only it uses, with Node, Python, git, build tools and Playwright with its browsers, and it can install whatever else it needs. Its workspace is its home there and outlives a reset. Choose a sandbox or your computer when you create a Bot, change it later in Bot info, and let a sandboxed Bot use your computer when a task needs it.
38
+
39
+ **An agent Bot that runs Jarvy for you.** Jarvy, the first Bot, wears a crown. Tell it what you want to get done and it builds the team: it creates Bots, writes their personas and picks their models. Later it starts and stops them, checks their usage and clears things away. Anything it deletes waits for your confirmation on a card.
40
+
37
41
  **Unread that respects your attention.** A red count appears only when someone @mentions you or replies to you. Everything else gets a quiet one-line preview, and you can mute any chat.
38
42
 
39
43
  **Files.** Share files with people and Bots. Images, Markdown, text and HTML preview in place, and audio and video play there. HTML that contains scripts runs in a sandbox, and only after you confirm.
@@ -52,7 +56,7 @@ The interface comes in English and Chinese, following your browser's language; s
52
56
 
53
57
  ## Quick start
54
58
 
55
- Requires Node.js 24 (22.19 or later works).
59
+ Requires Node.js 24 (22.19 or later works). Docker is optional: with it, Bots can work in their own sandboxes. Their image is built on this machine the first time one is needed, which takes a few minutes and about 3 GB.
56
60
 
57
61
  ```sh
58
62
  npm install
@@ -61,7 +65,7 @@ node dist/server/cli.js init # choose a username and password
61
65
  node dist/server/cli.js run # foreground; Ctrl+C to stop
62
66
  ```
63
67
 
64
- Open `http://127.0.0.1:8080` and sign in. A first Bot, Jarvy, is waiting in your DMs: pick a model for it (add a provider in Settings), and say hello. Create more Bots from the **+** menu. Starting the server does not start any Bot. A Bot starts when something is delivered to it.
68
+ Open `http://127.0.0.1:8080` and sign in. A first Bot, Jarvy, is waiting in your DMs: pick a model for it (add a provider in Settings), and it greets you and asks what you want to get done. Create more Bots from the **+** menu. Starting the server does not start any Bot. A Bot starts when something is delivered to it.
65
69
 
66
70
  ## Install globally
67
71
 
@@ -99,7 +103,7 @@ Jarvy is not an internet service.
99
103
 
100
104
  - It listens on `127.0.0.1` by default. With `--host 0.0.0.0` it serves plain HTTP, so anyone on the network can read passwords, cookies and API keys. Use a trusted network, a VPN or an HTTPS reverse proxy.
101
105
  - Credentials are stored in the database without application-level encryption. The data directory is created with mode `0700` and the database with `0600`; do not share the database or its backups.
102
- - A Bot's workspace is an ordinary folder, not a sandbox. Bots run `bash` with your user's permissions.
106
+ - A Bot works either in its own sandbox, a Docker container that sees only its workspace and runs with your user and group ids, or on your computer, where it runs `bash` with your user's permissions and reaches everything you can. Being able to use Docker is equivalent to root on this machine.
103
107
 
104
108
  ## License
105
109
 
package/README.zh-CN.md CHANGED
@@ -34,6 +34,10 @@ Jarvy 在本地运行,只有一个用户。账号、Bot、聊天、文件和
34
34
 
35
35
  **看着它干活。** 在私信里,Bot 的方块猫会实时演出它正在做的事:思考、读文件、敲键盘、转过来跟你说话。旁边的对话框显示它在想什么、在自言自语什么、发了什么消息,以及调用的每个工具。点开对话框能看到这一轮的每一步。
36
36
 
37
+ **每个 Bot 有自己的沙箱。** 装了 Docker,Bot 就可以在只属于它的 Linux 容器里干活,里面有 Node、Python、git、编译工具和带浏览器的 Playwright,缺什么它可以自己装。它的工作区就是它在里面的主目录,重置也不会丢。创建 Bot 时选沙箱还是你的电脑,之后可以在 Bot 信息里改;任务需要时,也可以让沙箱里的 Bot 用你的电脑。
38
+
39
+ **主 Bot 替你打理 Jarvy。** 第一个 Bot Jarvy 戴着皇冠。告诉它你想做什么,它就帮你组好团队:创建 Bot、写好 Persona、选好模型。之后启停 Bot、查用量、清理不用的东西也找它。它要删除任何东西,都会先弹卡片等你确认。
40
+
37
41
  **未读提醒不打扰。** 只有有人 @ 你或回复你时才显示红色数字;其他消息只在侧栏显示一行预览。任何聊天都能设免打扰。
38
42
 
39
43
  **文件。** 可以给人和 Bot 发文件,图片、Markdown、文本和 HTML 都能直接预览,音频和视频也能直接播放。带脚本的 HTML 要你确认后才会在沙箱里运行。
@@ -52,7 +56,7 @@ Jarvy 在本地运行,只有一个用户。账号、Bot、聊天、文件和
52
56
 
53
57
  ## 快速开始
54
58
 
55
- 需要 Node.js 24(22.19 及以上也可以)。
59
+ 需要 Node.js 24(22.19 及以上也可以)。Docker 可选:装了它,Bot 就能在自己的沙箱里干活。沙箱镜像第一次用到时在本机构建,需要几分钟,约 3 GB。
56
60
 
57
61
  ```sh
58
62
  npm install
@@ -61,7 +65,7 @@ node dist/server/cli.js init # 设置用户名和密码
61
65
  node dist/server/cli.js run # 前台运行,Ctrl+C 停止
62
66
  ```
63
67
 
64
- 打开 `http://127.0.0.1:8080` 登录。私信里已经有第一个 Bot「Jarvy」:给它选好模型(在设置里添加服务商),打个招呼就能开始。更多 Bot 从 **+** 菜单新建。启动服务不会启动任何 Bot,有内容发给 Bot 时它才会开始工作。
68
+ 打开 `http://127.0.0.1:8080` 登录。私信里已经有第一个 Bot「Jarvy」:给它选好模型(在设置里添加服务商),它就会跟你打招呼,问你想做什么。更多 Bot 从 **+** 菜单新建。启动服务不会启动任何 Bot,有内容发给 Bot 时它才会开始工作。
65
69
 
66
70
  ## 全局安装
67
71
 
@@ -99,7 +103,7 @@ Jarvy 不是面向互联网的服务。
99
103
 
100
104
  - 默认只监听 `127.0.0.1`。用 `--host 0.0.0.0` 时走明文 HTTP,同一网络里的人能看到密码、Cookie 和 API Key。请只在可信网络里使用,或通过 VPN、HTTPS 反向代理访问。
101
105
  - 凭据存在数据库里,没有在应用层加密。数据目录权限是 `0700`,数据库文件是 `0600`;不要分享数据库或它的备份。
102
- - Bot 的工作区就是一个普通文件夹,不是沙箱。Bot 以你的用户权限运行 `bash`。
106
+ - Bot 要么在自己的沙箱里干活(一个只看得到它工作区的 Docker 容器,用你的用户和组 ID 运行),要么在你的电脑上,以你的用户权限运行 `bash`,你能碰到的它都能碰到。能使用 Docker 就等于拥有这台机器的 root 权限。
103
107
 
104
108
  ## 许可证
105
109
 
@@ -14,7 +14,7 @@ Jarvy's design tokens (`src/web/styles/tokens.css`) and the remaining styles are
14
14
 
15
15
  ## Dependencies
16
16
 
17
- - Runtime: `@earendil-works/pi-coding-agent` and `@earendil-works/pi-ai` 0.99.1, `hono` 4.13.11, `@hono/node-server` 2.1.3, `typebox` 1.3.27, `proper-lockfile` 4.1.2, `undici` 8.10.2 — MIT. Jarvy calls Pi's native model, tool, OAuth and refresh APIs rather than copying provider login code.
17
+ - Runtime: `@earendil-works/pi-coding-agent`, `@earendil-works/pi-ai` and `@earendil-works/pi-env` 1.2.0, `hono` 4.13.11, `@hono/node-server` 2.1.3, `typebox` 1.3.27, `proper-lockfile` 4.1.2, `undici` 8.10.2 — MIT. Jarvy calls Pi's native model, tool, OAuth and refresh APIs rather than copying provider login code.
18
18
  - Frontend: React, Tailwind CSS, Radix UI, Lucide React, `cn`, class-variance-authority, react-markdown, remark-gfm, remark-breaks, three.js — under their own licenses, shipped with the installed packages.
19
19
  - Development only: **Agentation** (`agentation` 3.1.2, © Benji Taylor, PolyForm Shield 1.0.0) is loaded only in Vite development builds and is not part of the production build.
20
20