ponzu 1.69.0 → 1.71.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/README.md
CHANGED
|
@@ -34,6 +34,8 @@ This clones the repo into `~/Ponzu/north-brook/ponzu` (or reuses the clone there
|
|
|
34
34
|
|
|
35
35
|
Or [download the Mac app](https://ponzu.design/download) (Apple silicon, signed and notarized; it updates itself). Windows (x64) and Linux (x64, an AppImage or a `.deb`) builds are in beta, on the [releases page](https://github.com/north-brook/ponzu/releases/latest); they update themselves too, and the Windows one isn't signed yet, so SmartScreen asks before its first launch. It opens `.design` folders like documents, and on first launch it sets up Claude Code, Codex and Cursor for you. There's nothing else to install or keep running.
|
|
36
36
|
|
|
37
|
+
Its home screen's **Suggested** tab proposes designs for the projects your agents worked in lately. When you open it (at most every ten minutes, and only to top it up to eight), Ponzu runs your own Claude Code (or Codex, without Claude Code) headless and read-only, on your agent's account, in two steps: a glance at each project's file list and readme, with no tools, names a few designs, then one run for each reads the code it starts from and writes its prompt. Claude Code gets only Read, Glob and Grep, Codex its read-only sandbox, and neither gets any MCP servers. You copy the prompt you like into your agent. The ideas are kept in `~/.ponzu/suggestions.json`. Your other Macs' Ponzu show theirs too, for their own projects, over your tailnet, and opening the tab asks each to look again.
|
|
38
|
+
|
|
37
39
|
The app also puts `ponzu` in your terminal, running from inside the app so it updates with it. It links the command into a folder your shell already searches that you can write to (`~/.local/bin`, `~/bin` or `/usr/local/bin`), never over another `ponzu`. If there's no such folder, choose **Ponzu › Install Terminal Command…**, which asks for your password to add it to `/usr/local/bin`.
|
|
38
40
|
|
|
39
41
|
## Connect an agent
|
package/dist/index.js
CHANGED
|
@@ -47009,7 +47009,7 @@ function serve(ws, opts = {}) {
|
|
|
47009
47009
|
return Response.json({ ok: true });
|
|
47010
47010
|
}
|
|
47011
47011
|
if (path === "/api/suggestions" || path === "/api/suggestions/refresh") {
|
|
47012
|
-
if (caller
|
|
47012
|
+
if (caller === "local" && !sameHostOk(req, url))
|
|
47013
47013
|
return new Response("Forbidden", { status: 403 });
|
|
47014
47014
|
const refresh = path === "/api/suggestions/refresh";
|
|
47015
47015
|
if (refresh && req.method !== "POST")
|
|
@@ -47449,7 +47449,7 @@ function serve(ws, opts = {}) {
|
|
|
47449
47449
|
function peerAllowed(req, pathname) {
|
|
47450
47450
|
if (isPage(req))
|
|
47451
47451
|
return false;
|
|
47452
|
-
if (pathname === "/api/shelf" || pathname === "/api/update/install")
|
|
47452
|
+
if (pathname === "/api/shelf" || pathname === "/api/update/install" || pathname === "/api/suggestions/refresh")
|
|
47453
47453
|
return req.method === "POST";
|
|
47454
47454
|
if (req.method !== "GET")
|
|
47455
47455
|
return false;
|
|
@@ -47461,6 +47461,7 @@ function peerAllowed(req, pathname) {
|
|
|
47461
47461
|
"/api/thumb",
|
|
47462
47462
|
"/api/info",
|
|
47463
47463
|
"/api/macs",
|
|
47464
|
+
"/api/suggestions",
|
|
47464
47465
|
"/ws"
|
|
47465
47466
|
].includes(pathname) || /^\/files\/[^/]+\/assets\/.+$/.test(pathname);
|
|
47466
47467
|
}
|
|
@@ -47487,13 +47488,13 @@ function isPage(req) {
|
|
|
47487
47488
|
}
|
|
47488
47489
|
var SHELF_ACTIONS = ["archive", "restore", "scratch", "recent"];
|
|
47489
47490
|
async function relay(req, target) {
|
|
47490
|
-
const
|
|
47491
|
-
if (req.method !== "GET" && !
|
|
47491
|
+
const post = req.method === "POST" && ["/api/shelf", "/api/suggestions/refresh"].includes(new URL(target).pathname);
|
|
47492
|
+
if (req.method !== "GET" && !post)
|
|
47492
47493
|
return new Response("Method not allowed", { status: 405 });
|
|
47493
47494
|
try {
|
|
47494
47495
|
const res = await fetch(target, {
|
|
47495
|
-
signal: AbortSignal.timeout(
|
|
47496
|
-
...
|
|
47496
|
+
signal: AbortSignal.timeout(post ? 5000 : 30000),
|
|
47497
|
+
...post ? {
|
|
47497
47498
|
method: "POST",
|
|
47498
47499
|
headers: { "content-type": "application/json" },
|
|
47499
47500
|
body: await req.text()
|
|
@@ -47638,7 +47639,7 @@ function remoteUpdater(endpoint, token) {
|
|
|
47638
47639
|
// apps/cli/package.json
|
|
47639
47640
|
var package_default = {
|
|
47640
47641
|
name: "ponzu",
|
|
47641
|
-
version: "1.
|
|
47642
|
+
version: "1.71.0",
|
|
47642
47643
|
description: "The open source canvas your agent draws on in HTML and CSS.",
|
|
47643
47644
|
type: "module",
|
|
47644
47645
|
license: "MIT",
|