Skip to content

docs: how to open & add the full Makepad catalog - #40

Merged
ymote merged 2 commits into
OctoSense-org:mainfrom
amosarc:docs/open-makepad-apps
Sep 27, 2026
Merged

ymote merged 2 commits into
OctoSense-org:mainfrom
amosarc:docs/open-makepad-apps

Conversation

@amosarc

@amosarc amosarc commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

Adds two how-to guides under docs/ and links them from the README's "Add an app" section:

  • docs/open-apps.md: launch the desktop, open an app in a tile, fix an empty catalog (offline cargo metadata), and add a new catalog entry.
  • docs/add-all-makepad-apps.md: point the desktop at config/apps.makepad.json and open any of the full Makepad catalog.

Both record the exact steps that got Weather (and the rest of the Makepad apps) running inside OctoSense tiles, including the offline cargo metadata cache fix.

🤖 Generated with Claude Code

amosarc and others added 2 commits September 27, 2026 07:27
Two guides under docs/ plus README links:
- open-apps.md: launch the desktop, open an app in a tile, fix an
  empty catalog (offline cargo metadata), add a new catalog entry.
- add-all-makepad-apps.md: point the desktop at apps.makepad.json and
  open any Makepad app.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- The default catalog (config/apps.json) already lists the full Makepad
  set; apps.makepad.json is an identical copy for --apps.
- Makepad's Photos and Mail left the catalogs; the system apps replace
  them (note added).
- Machine-specific paths replaced with the standard layout.
- README points to both guides (Chinese).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ymote
ymote force-pushed the docs/open-makepad-apps branch from b1a6fd2 to f03d239 Compare September 27, 2026 14:27
@ymote
ymote merged commit cea61e8 into OctoSense-org:main Sep 27, 2026
@ymote

ymote commented Sep 27, 2026

Copy link
Copy Markdown
Contributor

Merged — thank you, @amosgeek! I rebased it onto current main and added a follow-up commit: the default config/apps.json already lists the full Makepad set (apps.makepad.json is an identical copy for --apps), Makepad's Photos and Mail left the catalogs because the OctoSense system apps replace them, and machine-specific paths now use the standard layout. Your commit and authorship are unchanged.

🤖 Generated with Claude Code

ymote added a commit that referenced this pull request Sep 28, 2026
Terminal was a developer program: built on first launch from the Makepad
checkout, then run as a child process. It now links in-process like Rinx:
the new `app-terminal` feature (on in the desktop's default set) registers
makepad-terminal's TERMINAL_MODULE, and `terminal` joins robrix and finance
as a module hosted in-process by default unless the person switched it
(`terminal: Process` in wm/apps.splash keeps the process form, whose
config/apps.json row stays).

- Opens instantly: no compile on first launch, no swapchain round trip.
- On macOS its PTY helper is `octosense` itself (Cx::pre_start answers
  `--exec-pty`), so nothing ships beside the binary.
- It declares `process` and `clipboard` and no `octos.*` service. The
  assistant gets read_screen and read_scrollback only; `run` (an unsandboxed
  shell, rated Risk::Act) is not offered by a default system app.
- Phone builds are unchanged: `mobile-apps` does not include it.

Builds on the current makepad pin (75e3e24d), which already carries
TERMINAL_MODULE, the PTY-helper fallback and the macOS signal-wake fix
(OctoSense-org/makepad #40, #41); Cargo.toml pins makepad-terminal there.
Tabs, panes, settings and terminal-ctl (makepad #47) arrive with a later
pin bump.

Verified locally with those makepad commits applied under .sources/makepad:
- cargo check --locked -p octosense (and --features mobile-apps)
- bash tools/check-shell-graph.sh -p octosense
- cargo test --locked -p octosense-shell --features app-terminal: 333 passed
- from phone/: cargo test --locked --features mobile-apps -p octosense-shell:
  342 passed
- hidden desktop over MAKEPAD_REMOTE: Terminal opens from the dock as
  "in-process, terminal"; the shell's parent is octosense; octoscode's
  composer stayed clean on 3 of 3 launches; closing the tile ended zsh and
  octoscode and freed the isolate; two Terminals ran two shells.
Rebased onto main: cargo build --locked -p octosense and
tools/check-shell-graph.sh pass against the pinned makepad with the reviewed
runtime patches; cargo test -p octosense-shell --features app-terminal: 345 passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Sep 28, 2026
Terminal was a developer program: built on first launch from the Makepad
checkout, then run as a child process. It now links in-process like Rinx:
the new `app-terminal` feature (on in the desktop's default set) registers
makepad-terminal's TERMINAL_MODULE, and `terminal` joins robrix and finance
as a module hosted in-process by default unless the person switched it
(`terminal: Process` in wm/apps.splash keeps the process form, whose
config/apps.json row stays).

- Opens instantly: no compile on first launch, no swapchain round trip.
- On macOS its PTY helper is `octosense` itself (Cx::pre_start answers
  `--exec-pty`), so nothing ships beside the binary.
- It declares `process` and `clipboard` and no `octos.*` service. The
  assistant gets read_screen and read_scrollback only; `run` (an unsandboxed
  shell, rated Risk::Act) is not offered by a default system app.
- Phone builds are unchanged: `mobile-apps` does not include it.

Builds on the current makepad pin (75e3e24d), which already carries
TERMINAL_MODULE, the PTY-helper fallback and the macOS signal-wake fix
(OctoSense-org/makepad #40, #41); Cargo.toml pins makepad-terminal there.
Tabs, panes, settings and terminal-ctl (makepad #47) arrive with a later
pin bump.

Verified locally with those makepad commits applied under .sources/makepad:
- cargo check --locked -p octosense (and --features mobile-apps)
- bash tools/check-shell-graph.sh -p octosense
- cargo test --locked -p octosense-shell --features app-terminal: 333 passed
- from phone/: cargo test --locked --features mobile-apps -p octosense-shell:
  342 passed
- hidden desktop over MAKEPAD_REMOTE: Terminal opens from the dock as
  "in-process, terminal"; the shell's parent is octosense; octoscode's
  composer stayed clean on 3 of 3 launches; closing the tile ended zsh and
  octoscode and freed the isolate; two Terminals ran two shells.
Rebased onto main: cargo build --locked -p octosense and
tools/check-shell-graph.sh pass against the pinned makepad with the reviewed
runtime patches; cargo test -p octosense-shell --features app-terminal: 345 passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Sep 28, 2026
Terminal was a developer program: built on first launch from the Makepad
checkout, then run as a child process. It now links in-process like Rinx:
the new `app-terminal` feature (on in the desktop's default set) registers
makepad-terminal's TERMINAL_MODULE, and `terminal` joins robrix and finance
as a module hosted in-process by default unless the person switched it
(`terminal: Process` in wm/apps.splash keeps the process form, whose
config/apps.json row stays).

- Opens instantly: no compile on first launch, no swapchain round trip.
- On macOS its PTY helper is `octosense` itself (Cx::pre_start answers
  `--exec-pty`), so nothing ships beside the binary.
- It declares `process` and `clipboard` and no `octos.*` service. The
  assistant gets read_screen and read_scrollback only; `run` (an unsandboxed
  shell, rated Risk::Act) is not offered by a default system app.
- Phone builds are unchanged: `mobile-apps` does not include it.

Builds on the current makepad pin (75e3e24d), which already carries
TERMINAL_MODULE, the PTY-helper fallback and the macOS signal-wake fix
(OctoSense-org/makepad #40, #41); Cargo.toml pins makepad-terminal there.
Tabs, panes, settings and terminal-ctl (makepad #47) arrive with a later
pin bump.

Verified locally with those makepad commits applied under .sources/makepad:
- cargo check --locked -p octosense (and --features mobile-apps)
- bash tools/check-shell-graph.sh -p octosense
- cargo test --locked -p octosense-shell --features app-terminal: 333 passed
- from phone/: cargo test --locked --features mobile-apps -p octosense-shell:
  342 passed
- hidden desktop over MAKEPAD_REMOTE: Terminal opens from the dock as
  "in-process, terminal"; the shell's parent is octosense; octoscode's
  composer stayed clean on 3 of 3 launches; closing the tile ended zsh and
  octoscode and freed the isolate; two Terminals ran two shells.
Rebased onto main: cargo build --locked -p octosense and
tools/check-shell-graph.sh pass against the pinned makepad with the reviewed
runtime patches; cargo test -p octosense-shell --features app-terminal: 345 passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
chrislearn pushed a commit to chrislearn/OctoSense that referenced this pull request Sep 29, 2026
…ecurity

ADR 0002 agentic app security model; ADR 0003 app hub and store
chrislearn pushed a commit to chrislearn/OctoSense that referenced this pull request Sep 29, 2026
docs: how to open & add the full Makepad catalog
chrislearn pushed a commit to chrislearn/OctoSense that referenced this pull request Sep 29, 2026
… Hub 64bd6c01

makepad main 975c5630 adds OctoSense-org#37 (Slug text in one supersample loop), OctoSense-org#39
(cursor and glass shaders with one call site per figure and blur level),
OctoSense-org#38 (PerfGraph quads) and OctoSense-org#40 + OctoSense-org#41 (in-process terminal module; its
`run` needs the person's confirmation). Octoscript-Makepad#49 releases it;
App Hub#21 pins the same set.

The makepad-settings runtime patch reapplies unchanged on the new base
(same sha256); runtime-patches.lock.json records the new base and tree.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 1, 2026
A glance card may declare `sys.digest(app:, id:)` (Octoscript #40); the
glance service fills it in when it realizes the card, from the toolbox run
results the host keeps for the calling app, instead of the card carrying
the findings as text.

- glance_digest.rs: reads `<apps root>/.host/toolbox/<app>/toolbox/runs/
  <template>/<run>.json` (host-owned, outside the app's jail, so an app
  cannot forge a digest) and returns one template-independent record:
  status, topic, language, summary, retrieved_at, count, points {id, text,
  label, cite, citations: [source index]}, sources {id, n, title, source,
  url, published_at}. A source is kept only if the run's host provenance
  lists its id with the same http(s) URL; a point only if it still cites a
  kept source; model text with a URL is dropped. Caps on the file (512 KiB)
  and every field. Missing, expired (48 h after the run), malformed or
  failed digests resolve to an empty record with $state failed.
- glance.rs: `app` must be the caller (its id or launcher id), never an
  argument's say-so; the resolved value and $status replace anything the
  publisher sent; a bound card expires no later than its digest; after a
  publish, each template folder keeps its 8 newest results plus every run
  a live card binds.
- news-brief.card: the M4 News digest card bound to `sys.digest(app:
  "os.news", id: "glance")`; OCTOSENSE_GLANCE_DEMO=digest publishes it.
- Repin Octoscript to 30a21b78 (Octoscript #40 merged) via Octoscript-Makepad
  d8bee94c (Octoscript-Makepad #50; moves to its merge commit once it
  merges).
- glance_digest::digest_root reads under the host storage's apps root
  (octosense_ai_host::toolbox_root), where the toolbox writes its runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
A glance card may declare `sys.digest(app:, id:)` (Octoscript #40); the
glance service fills it in when it realizes the card, from the toolbox run
results the host keeps for the calling app, instead of the card carrying
the findings as text.

- glance_digest.rs: reads `<apps root>/.host/toolbox/<app>/toolbox/runs/
  <template>/<run>.json` (host-owned, outside the app's jail, so an app
  cannot forge a digest) and returns one template-independent record:
  status, topic, language, summary, retrieved_at, count, points {id, text,
  label, cite, citations: [source index]}, sources {id, n, title, source,
  url, published_at}. A source is kept only if the run's host provenance
  lists its id with the same http(s) URL; a point only if it still cites a
  kept source; model text with a URL is dropped. Caps on the file (512 KiB)
  and every field. Missing, expired (48 h after the run), malformed or
  failed digests resolve to an empty record with $state failed.
- glance.rs: `app` must be the caller (its id or launcher id), never an
  argument's say-so; the resolved value and $status replace anything the
  publisher sent; a bound card expires no later than its digest; after a
  publish, each template folder keeps its 8 newest results plus every run
  a live card binds.
- news-brief.card: the M4 News digest card bound to `sys.digest(app:
  "os.news", id: "glance")`; OCTOSENSE_GLANCE_DEMO=digest publishes it.
- Octoscript #40 (sys.digest) is already in main's pins (Octoscript
  5991dfae, Octoscript-Makepad 8f103d0c); rebased onto main, the PR's own
  repin commits are dropped.
- Rebased onto main: composes with the in-card sys.chat (glance_chat.rs):
  digests resolve into the card's data first, then its chat is seeded and
  the card lowered; the card keeps both its digests and its L0 source.
- glance_digest::digest_root reads under the host storage's apps root
  (octosense_ai_host::toolbox_root), where the toolbox writes its runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
A glance card may declare `sys.digest(app:, id:)` (Octoscript #40); the
glance service fills it in when it realizes the card, from the toolbox run
results the host keeps for the calling app, instead of the card carrying
the findings as text.

- glance_digest.rs: reads `<apps root>/.host/toolbox/<app>/toolbox/runs/
  <template>/<run>.json` (host-owned, outside the app's jail, so an app
  cannot forge a digest) and returns one template-independent record:
  status, topic, language, summary, retrieved_at, count, points {id, text,
  label, cite, citations: [source index]}, sources {id, n, title, source,
  url, published_at}. A source is kept only if the run's host provenance
  lists its id with the same http(s) URL; a point only if it still cites a
  kept source; model text with a URL is dropped. Caps on the file (512 KiB)
  and every field. Missing, expired (48 h after the run), malformed or
  failed digests resolve to an empty record with $state failed.
- glance.rs: `app` must be the caller (its id or launcher id), never an
  argument's say-so; the resolved value and $status replace anything the
  publisher sent; a bound card expires no later than its digest; after a
  publish, each template folder keeps its 8 newest results plus every run
  a live card binds.
- news-brief.card: the M4 News digest card bound to `sys.digest(app:
  "os.news", id: "glance")`; OCTOSENSE_GLANCE_DEMO=digest publishes it.
- Octoscript #40 (sys.digest) is already in main's pins (Octoscript
  5991dfae, Octoscript-Makepad 8f103d0c); rebased onto main, the PR's own
  repin commits are dropped.
- Rebased onto main: composes with the in-card sys.chat (glance_chat.rs):
  digests resolve into the card's data first, then its chat is seeded and
  the card lowered; the card keeps both its digests and its L0 source.
- glance_digest::digest_root reads under the host storage's apps root
  (octosense_ai_host::toolbox_root), where the toolbox writes its runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
A glance card may declare `sys.digest(app:, id:)` (Octoscript #40); the
glance service fills it in when it realizes the card, from the toolbox run
results the host keeps for the calling app, instead of the card carrying
the findings as text.

- glance_digest.rs: reads `<apps root>/.host/toolbox/<app>/toolbox/runs/
  <template>/<run>.json` (host-owned, outside the app's jail, so an app
  cannot forge a digest) and returns one template-independent record:
  status, topic, language, summary, retrieved_at, count, points {id, text,
  label, cite, citations: [source index]}, sources {id, n, title, source,
  url, published_at}. A source is kept only if the run's host provenance
  lists its id with the same http(s) URL; a point only if it still cites a
  kept source; model text with a URL is dropped. Caps on the file (512 KiB)
  and every field. Missing, expired (48 h after the run), malformed or
  failed digests resolve to an empty record with $state failed.
- glance.rs: `app` must be the caller (its id or launcher id), never an
  argument's say-so; the resolved value and $status replace anything the
  publisher sent; a bound card expires no later than its digest; after a
  publish, each template folder keeps its 8 newest results plus every run
  a live card binds.
- news-brief.card: the M4 News digest card bound to `sys.digest(app:
  "os.news", id: "glance")`; OCTOSENSE_GLANCE_DEMO=digest publishes it.
- Octoscript #40 (sys.digest) is already in main's pins (Octoscript
  5991dfae, Octoscript-Makepad 8f103d0c); rebased onto main, the PR's own
  repin commits are dropped.
- Rebased onto main: composes with the in-card sys.chat (glance_chat.rs):
  digests resolve into the card's data first, then its chat is seeded and
  the card lowered; the card keeps both its digests and its L0 source.
- glance_digest::digest_root reads under the host storage's apps root
  (octosense_ai_host::toolbox_root), where the toolbox writes its runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote added a commit that referenced this pull request Oct 2, 2026
A glance card may declare `sys.digest(app:, id:)` (Octoscript #40); the
glance service fills it in when it realizes the card, from the toolbox run
results the host keeps for the calling app, instead of the card carrying
the findings as text.

- glance_digest.rs: reads `<apps root>/.host/toolbox/<app>/toolbox/runs/
  <template>/<run>.json` (host-owned, outside the app's jail, so an app
  cannot forge a digest) and returns one template-independent record:
  status, topic, language, summary, retrieved_at, count, points {id, text,
  label, cite, citations: [source index]}, sources {id, n, title, source,
  url, published_at}. A source is kept only if the run's host provenance
  lists its id with the same http(s) URL; a point only if it still cites a
  kept source; model text with a URL is dropped. Caps on the file (512 KiB)
  and every field. Missing, expired (48 h after the run), malformed or
  failed digests resolve to an empty record with $state failed.
- glance.rs: `app` must be the caller (its id or launcher id), never an
  argument's say-so; the resolved value and $status replace anything the
  publisher sent; a bound card expires no later than its digest; after a
  publish, each template folder keeps its 8 newest results plus every run
  a live card binds.
- news-brief.card: the M4 News digest card bound to `sys.digest(app:
  "os.news", id: "glance")`; OCTOSENSE_GLANCE_DEMO=digest publishes it.
- Octoscript #40 (sys.digest) is already in main's pins (Octoscript
  5991dfae, Octoscript-Makepad 8f103d0c); rebased onto main, the PR's own
  repin commits are dropped.
- Rebased onto main: composes with the in-card sys.chat (glance_chat.rs):
  digests resolve into the card's data first, then its chat is seeded and
  the card lowered; the card keeps both its digests and its L0 source.
- glance_digest::digest_root reads under the host storage's apps root
  (octosense_ai_host::toolbox_root), where the toolbox writes its runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants