@mulmoclaude/core 5.6.0 → 5.6.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.
|
@@ -930,7 +930,7 @@ Notes:
|
|
|
930
930
|
|
|
931
931
|
### Custom views
|
|
932
932
|
|
|
933
|
-
When the built-in views (table / calendar / kanban
|
|
933
|
+
When the built-in views (table / calendar / kanban) don't fit what
|
|
934
934
|
the user wants to _see_ — a year/quarter overview, a Gantt bar, a printable
|
|
935
935
|
report — author a **custom view**: an HTML file the host renders in a sandboxed
|
|
936
936
|
iframe over the records. Register it in `views[]` (above); it becomes a button
|
|
@@ -187,6 +187,30 @@ invalid`), what to check depends on the sandbox:
|
|
|
187
187
|
`~/.claude`. Do not chase the environment variable here — the host login is the one
|
|
188
188
|
that counts.
|
|
189
189
|
|
|
190
|
+
On macOS with the sandbox on, MulmoClaude copies the login from the Keychain into
|
|
191
|
+
`~/.claude/.credentials.json` and, when the token has expired and a refresh token exists,
|
|
192
|
+
launches the `claude` CLI to renew it. Each launch is a real Claude session, so it waits a
|
|
193
|
+
few minutes after a failed renewal and stops after a few failures in a row.
|
|
194
|
+
Look for one of these server log lines:
|
|
195
|
+
|
|
196
|
+
- `Keychain credentials cannot be renewed (<reason>)` — the Keychain item has no
|
|
197
|
+
refresh token (for example an empty item), so no renewal is attempted.
|
|
198
|
+
- `Token renewal failed N times in a row; not trying again` — renewals kept failing, so
|
|
199
|
+
they stopped for this server process.
|
|
200
|
+
- `Access token expired; last renewal failed, next attempt in Ns` — waiting before the
|
|
201
|
+
next try.
|
|
202
|
+
|
|
203
|
+
The fix is the same `claude /login` on the host; the next turn picks the new login up
|
|
204
|
+
without a restart. If the server itself would not start (it exited asking for this, and
|
|
205
|
+
`yarn dev` did not restart it), start it again after `/login`. If `/login` succeeds and
|
|
206
|
+
the "cannot be renewed" line keeps coming back, the Keychain may hold a second, empty
|
|
207
|
+
`Claude Code-credentials` item. MulmoClaude reads both the item under the user's login
|
|
208
|
+
name and whatever a lookup by service name returns, and uses the better one, so a stray
|
|
209
|
+
item only matters when the real login is stored under another account name.
|
|
210
|
+
`security find-generic-password -s "Claude Code-credentials"` prints the account (`acct`)
|
|
211
|
+
of the item a service-only lookup returns; an account such as `unknown` is the stray item,
|
|
212
|
+
removed with `security delete-generic-password -s "Claude Code-credentials" -a <that acct>`.
|
|
213
|
+
|
|
190
214
|
You will usually be reading this AFTER the user re-logged in (a failing turn never
|
|
191
215
|
reaches you); answer "why did that happen" with the cause above rather than
|
|
192
216
|
investigating MulmoClaude's settings.
|
|
@@ -215,7 +239,7 @@ Tell the user to enable the two opt-in mounts on the next agent spawn
|
|
|
215
239
|
```bash
|
|
216
240
|
# Forward the host's SSH agent into the container.
|
|
217
241
|
# Private keys stay on the host; only the signing oracle is exposed.
|
|
218
|
-
|
|
242
|
+
SANDBOX_SSH_AGENT_FORWARD=1 \
|
|
219
243
|
# Mount allowlisted config files/dirs read-only — including ~/.config/gh.
|
|
220
244
|
SANDBOX_MOUNT_CONFIGS=gh \
|
|
221
245
|
yarn dev # or: npx mulmoclaude
|
package/assets/helps/index.md
CHANGED
|
@@ -20,7 +20,7 @@ Under the hood it uses the Claude Code Agent SDK as its LLM core. Claude has ful
|
|
|
20
20
|
|
|
21
21
|
## Key Capabilities
|
|
22
22
|
|
|
23
|
-
- Build **collections** — schema-driven data apps (todo lists, trackers, ledgers, decks) with table / calendar / kanban
|
|
23
|
+
- Build **collections** — schema-driven data apps (todo lists, trackers, ledgers, decks) with table / calendar / kanban views, plus LLM-authored **custom views**; manage a calendar scheduler
|
|
24
24
|
- Present documents and spreadsheets with rich formatting
|
|
25
25
|
- Generate and edit images
|
|
26
26
|
- Create interactive mind maps
|
|
@@ -33,7 +33,7 @@ Under the hood it uses the Claude Code Agent SDK as its LLM core. Claude has ful
|
|
|
33
33
|
|
|
34
34
|
## Collections — Apps from Data
|
|
35
35
|
|
|
36
|
-
Collections are MulmoClaude's most distinctive capability: a **schema-driven data app declared in a single small JSON file**, with no database, ORM, or migration tool. You describe a data model, cross-record relations, computed fields, and per-record action buttons in a `schema.json`; the host reads that DSL and renders a full app — table, calendar
|
|
36
|
+
Collections are MulmoClaude's most distinctive capability: a **schema-driven data app declared in a single small JSON file**, with no database, ORM, or migration tool. You describe a data model, cross-record relations, computed fields, and per-record action buttons in a `schema.json`; the host reads that DSL and renders a full app — table, calendar and kanban board views — over a folder of plain `<id>.json` records. The same primitives power todo lists, recipe boxes, stock portfolios, invoice ledgers, vocabulary decks, and curricula, all without any app-specific host code. This is the core philosophy made concrete: a `schema.json` plus a folder of records **is** the app.
|
|
37
37
|
|
|
38
38
|
Because Claude authors and edits the schema for you in conversation, you build and reshape these apps just by talking — "add a priority field," "track this as a kanban," "make rent recur monthly" — and the collection updates live. We call this **vibe crafting**: the end-user counterpart of a developer's "vibe coding" — you describe the app you want and Claude builds it, with the schema validated and custom views sandboxed so you get the power without the pitfalls. Records stay validated, computed fields (totals, cross-collection lookups) recompute on every render, and completion bells / recurring obligations are declared in the same schema.
|
|
39
39
|
|
|
@@ -41,7 +41,7 @@ See [Collection skills](config/helps/collection-skills.md) for the full schema D
|
|
|
41
41
|
|
|
42
42
|
## Custom Views — Views the Built-ins Don't Cover
|
|
43
43
|
|
|
44
|
-
When the built-in table / calendar / kanban
|
|
44
|
+
When the built-in table / calendar / kanban views don't fit what you want to _see_ — a year-at-a-glance planner, a Gantt bar, a heat-map, a printable report — Claude authors a **custom view**: a single HTML file rendered in a sandboxed iframe over the collection's records. It reads (and optionally writes) records through a scoped token, stays live as the data changes, and can hand work back to a chat — all without any view-specific host code. The view is data, just like the rest of the collection, so you can ask for an entirely new way to look at your data in plain language and get it.
|
|
45
45
|
|
|
46
46
|
See [Custom views](config/helps/custom-view.md) for the authoring contract. A
|
|
47
47
|
view can also target the **mobile remote app** (`target: "mobile"`) — rendered
|
package/assets/helps/sandbox.md
CHANGED
|
@@ -90,7 +90,7 @@ On macOS, the Docker container uses a separate credential store from the host. B
|
|
|
90
90
|
yarn sandbox:login
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
This
|
|
93
|
+
This copies the Claude Code login from the macOS Keychain to `~/.claude/.credentials.json`, which the container reads. The server also does this before each turn while the sandbox is on, and at startup when the file is missing, so the command is only needed when that fails; run `claude /login` on the host first if the login itself has expired.
|
|
94
94
|
|
|
95
95
|
## Building the Image
|
|
96
96
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mulmoclaude/core",
|
|
3
|
-
"version": "5.6.
|
|
3
|
+
"version": "5.6.1",
|
|
4
4
|
"description": "Shared server-side core for MulmoClaude and MulmoTerminal — the always-shipped-together subsystems consolidated behind subpath exports so the two hosts can't drift. Server-only except the browser-safe ./artifacts, ./whisper/client, ./workspace-setup/slug, ./translation/client, ./remote-view, ./remote-host and ./plugin-vue entries. All host specifics are injected.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|