diff --git a/Cargo.toml b/Cargo.toml index e64c8479..1dc11f5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,42 +66,42 @@ authors = ["octos-app contributors"] # BEGIN native-apps: pins (generated by tools/native_apps.py from native-apps.json; do not edit) rinx = { git = "https://github.com/hagency-org/Rinx.git", tag = "v1.1.0", default-features = false, features = ["octosense-module"] } octosense-reference = { path = "apps/reference" } -makepad-sheets = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470", default-features = false } -makepad-terminal = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } +makepad-sheets = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf", default-features = false } +makepad-terminal = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } octosense-appcard = { path = "apps/appcard/module" } octosense-app-hub-app = { git = "https://github.com/OctoSense-org/OctoSense-App-Hub", rev = "7bb63ff925d19f9aecbc72b8946679320e53cfa1" } -makepad-calculator = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470", default-features = false } -makepad-clock = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470", default-features = false } -makepad-notes = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470", default-features = false } -makepad-reminders = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470", default-features = false } -makepad-weather = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470", default-features = false } -makepad-task = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } +makepad-calculator = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf", default-features = false } +makepad-clock = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf", default-features = false } +makepad-notes = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf", default-features = false } +makepad-reminders = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf", default-features = false } +makepad-weather = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf", default-features = false } +makepad-task = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } # END native-apps: pins # --- Makepad (OctoSense-org/makepad), the revision Octoscript-Makepad's # runtime.json pins (native-runtime.lock.json); resolved to .sources/makepad. -makepad-widgets = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } +makepad-widgets = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } # The script VM alone: system apps' script tests (News's main.splash). -makepad-script = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-code-editor = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-ai = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-studio-protocol = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-network = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-wm-api = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-ai-services = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-strict-json = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-app-module = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-wm-theme = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470" } -makepad-aichat = { git = "https://github.com/OctoSense-org/makepad.git", rev = "c155f61d0e1600d2ec474209374444a38a09a470", default-features = false } +makepad-script = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-code-editor = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-ai = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-studio-protocol = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-network = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-wm-api = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-ai-services = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-strict-json = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-app-module = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-wm-theme = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf" } +makepad-aichat = { git = "https://github.com/OctoSense-org/makepad.git", rev = "68d1f4ecc111daa90c50530e77df3245f05fc2cf", default-features = false } # --- OctoScript (Octoscript 2e37d9e6) and its Makepad runtime -# (Octoscript-Makepad 27e9c1bf, native-runtime.lock.json). +# (Octoscript-Makepad aa80f72c, native-runtime.lock.json). octoscript-ui-l0 = { git = "https://github.com/OctoSense-org/Octoscript.git", rev = "2e37d9e657a246f16718d9a475e167ccd2d5b5fa" } # The bounded VM, capability-leased host modules and executable JSON schemas # (the system toolbox's workflow templates, crates/toolbox). octoscript-core = { git = "https://github.com/OctoSense-org/Octoscript.git", rev = "2e37d9e657a246f16718d9a475e167ccd2d5b5fa" } octoscript-capabilities = { git = "https://github.com/OctoSense-org/Octoscript.git", rev = "2e37d9e657a246f16718d9a475e167ccd2d5b5fa" } octoscript-schema = { git = "https://github.com/OctoSense-org/Octoscript.git", rev = "2e37d9e657a246f16718d9a475e167ccd2d5b5fa" } -octoscript-makepad = { git = "https://github.com/OctoSense-org/Octoscript-Makepad.git", rev = "27e9c1bfdbf6021bcad87214ae4ebbe6d683b406" } -octoscript-node = { git = "https://github.com/OctoSense-org/Octoscript-Makepad.git", rev = "27e9c1bfdbf6021bcad87214ae4ebbe6d683b406" } +octoscript-makepad = { git = "https://github.com/OctoSense-org/Octoscript-Makepad.git", rev = "aa80f72c509c767faf04822b939d44b2f34fbc81" } +octoscript-node = { git = "https://github.com/OctoSense-org/Octoscript-Makepad.git", rev = "aa80f72c509c767faf04822b939d44b2f34fbc81" } # --- App Hub's host service registry the Mail and llm services register # into; the same revision as App Hub's app crate (a native app, above). octosense-appstore = { git = "https://github.com/OctoSense-org/OctoSense-App-Hub", rev = "7bb63ff925d19f9aecbc72b8946679320e53cfa1" } diff --git a/apps/appcard/app/app/src/app/l0_eval.rs b/apps/appcard/app/app/src/app/l0_eval.rs index e2631291..0d91e1fe 100644 --- a/apps/appcard/app/app/src/app/l0_eval.rs +++ b/apps/appcard/app/app/src/app/l0_eval.rs @@ -279,6 +279,7 @@ fn walk_inner(vm: &mut ScriptVm, value: ScriptValue, depth: usize, remaining: &m pady: f32_prop(vm, value, id!(pady)), padtop: f32_prop(vm, value, id!(padtop)), padleft: f32_prop(vm, value, id!(padleft)), + padright: f32_prop(vm, value, id!(padright)), padbottom: f32_prop(vm, value, id!(padbottom)), spacing: f32_prop(vm, value, id!(spacing)), margin: f32_prop(vm, value, id!(margin)), diff --git a/apps/appcard/native-runtime.lock.json b/apps/appcard/native-runtime.lock.json index e3ad8e44..0b32d232 100644 --- a/apps/appcard/native-runtime.lock.json +++ b/apps/appcard/native-runtime.lock.json @@ -1,5 +1,5 @@ { "schema_version": 1, "url": "https://github.com/OctoSense-org/Octoscript-Makepad.git", - "revision": "2cc5ef37d7d6a3d2992673389ce74488f7bb2d87" + "revision": "aa80f72c509c767faf04822b939d44b2f34fbc81" } diff --git a/docs/architecture.md b/docs/architecture.md index 9806f71d..df97852f 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -495,8 +495,8 @@ Code outside this repository, at the revisions `Cargo.toml` pins: | What | Where | | --- | --- | -| Makepad: the `OctosPeer` client; each native app's agent code | [`libs/ai/services/src/peer.rs`](https://github.com/OctoSense-org/makepad/blob/c155f61d0e1600d2ec474209374444a38a09a470/libs/ai/services/src/peer.rs), `apps//src/view.rs` | -| The Terminal's own-agent link, a reviewed patch this repository applies to Makepad | [`tools/runtime-patches/makepad-terminal-own-agent.patch`](../tools/runtime-patches/makepad-terminal-own-agent.patch) | +| Makepad: the `OctosPeer` client; each native app's agent code | [`libs/ai/services/src/peer.rs`](https://github.com/OctoSense-org/makepad/blob/68d1f4ecc111daa90c50530e77df3245f05fc2cf/libs/ai/services/src/peer.rs), `apps//src/view.rs` | +| The Terminal's own-agent link (Makepad #100) | [`apps/terminal/src/module.rs`](https://github.com/OctoSense-org/makepad/blob/68d1f4ecc111daa90c50530e77df3245f05fc2cf/apps/terminal/src/module.rs) | | octos: the lanes' shared history (20 rows, 16 KiB); `peer_send_input` (64 KiB) | [`crates/octos-cli/src/peers/shared_history.rs`](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/crates/octos-cli/src/peers/shared_history.rs), [`crates/octos-agent/src/tools/peer_send_input.rs`](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/crates/octos-agent/src/tools/peer_send_input.rs) | | octos: host-managed serve, app peers, peer host tools | [`docs/HOST_MANAGED_SERVE.md`](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/HOST_MANAGED_SERVE.md), [UPCR-2026-034](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/OCTOS_UI_PROTOCOL_CHANGE_REQUEST_UPCR_2026_034_HOST_APP_PEERS.md), [UPCR-2026-035](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/OCTOS_UI_PROTOCOL_CHANGE_REQUEST_UPCR_2026_035_PEER_HOST_TOOLS.md), [UPCR-2026-036](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/OCTOS_UI_PROTOCOL_CHANGE_REQUEST_UPCR_2026_036_HOST_MANAGED_SERVE.md) | | App Hub: the kernel tools a script app may keep (`KERNEL_TOOLS`) | [`crates/app-policy/src/policy.rs`](https://github.com/OctoSense-org/OctoSense-App-Hub/blob/0d5b47a2ae9eb98020feca26b7c895a3cf797dc1/crates/app-policy/src/policy.rs) | diff --git a/docs/architecture.zh-CN.md b/docs/architecture.zh-CN.md index 2f665be2..688ef106 100644 --- a/docs/architecture.zh-CN.md +++ b/docs/architecture.zh-CN.md @@ -495,8 +495,8 @@ sequenceDiagram | 内容 | 位置 | | --- | --- | -| Makepad:`OctosPeer` 客户端;各原生应用的 Agent 代码 | [`libs/ai/services/src/peer.rs`](https://github.com/OctoSense-org/makepad/blob/c155f61d0e1600d2ec474209374444a38a09a470/libs/ai/services/src/peer.rs)、`apps//src/view.rs` | -| Terminal 自己的 Agent 链接,本仓库应用到 Makepad 上的一个经审查补丁 | [`tools/runtime-patches/makepad-terminal-own-agent.patch`](../tools/runtime-patches/makepad-terminal-own-agent.patch) | +| Makepad:`OctosPeer` 客户端;各原生应用的 Agent 代码 | [`libs/ai/services/src/peer.rs`](https://github.com/OctoSense-org/makepad/blob/68d1f4ecc111daa90c50530e77df3245f05fc2cf/libs/ai/services/src/peer.rs)、`apps//src/view.rs` | +| Terminal 自己的 Agent 链接(Makepad #100) | [`apps/terminal/src/module.rs`](https://github.com/OctoSense-org/makepad/blob/68d1f4ecc111daa90c50530e77df3245f05fc2cf/apps/terminal/src/module.rs) | | octos:两条通道的共享历史(20 条,16 KiB);`peer_send_input`(64 KiB) | [`crates/octos-cli/src/peers/shared_history.rs`](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/crates/octos-cli/src/peers/shared_history.rs)、[`crates/octos-agent/src/tools/peer_send_input.rs`](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/crates/octos-agent/src/tools/peer_send_input.rs) | | octos:宿主管理的 serve、应用 peer、peer 宿主工具 | [`docs/HOST_MANAGED_SERVE.md`](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/HOST_MANAGED_SERVE.md)、[UPCR-2026-034](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/OCTOS_UI_PROTOCOL_CHANGE_REQUEST_UPCR_2026_034_HOST_APP_PEERS.md)、[UPCR-2026-035](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/OCTOS_UI_PROTOCOL_CHANGE_REQUEST_UPCR_2026_035_PEER_HOST_TOOLS.md)、[UPCR-2026-036](https://github.com/octos-org/octos/blob/056173e85b150e387805fc307fe231064ac1ed35/docs/OCTOS_UI_PROTOCOL_CHANGE_REQUEST_UPCR_2026_036_HOST_MANAGED_SERVE.md) | | App Hub:脚本应用可以保留的内核工具(`KERNEL_TOOLS`) | [`crates/app-policy/src/policy.rs`](https://github.com/OctoSense-org/OctoSense-App-Hub/blob/0d5b47a2ae9eb98020feca26b7c895a3cf797dc1/crates/app-policy/src/policy.rs) | diff --git a/docs/mail-composable-cards.md b/docs/mail-composable-cards.md index 97db811b..3ed8c20c 100644 --- a/docs/mail-composable-cards.md +++ b/docs/mail-composable-cards.md @@ -306,7 +306,7 @@ receipt without a payload fingerprint allows one validated refresh. The [tool schemas](../apps/mail/bundle/tools.json) describe the four draft/proposal tools. Catalog contracts are pinned to Octoscript `2e37d9e657a246f16718d9a475e167ccd2d5b5fa`; Octoscript-Makepad is pinned to -`27e9c1bfdbf6021bcad87214ae4ebbe6d683b406`. Both Mail sources require literal app +`aa80f72c509c767faf04822b939d44b2f34fbc81`. Both Mail sources require literal app identity; this host additionally requires their literal draft ID to match the trusted publication. Draft `to`, `subject`, `body` and `suggestion_body` remain model-tainted for checker purposes: display/edit is allowed, direct reuse in diff --git a/docs/mail-composable-cards.zh-CN.md b/docs/mail-composable-cards.zh-CN.md index 1e8a7c9e..054880f4 100644 --- a/docs/mail-composable-cards.zh-CN.md +++ b/docs/mail-composable-cards.zh-CN.md @@ -114,7 +114,7 @@ Lab **0468** 还验证了拒绝首次助手同意:Enable assistant 按钮消 ## 运行时契约与输入来源 -[工具 schema](../apps/mail/bundle/tools.json)定义四个草稿/提议工具。目录契约固定在 Octoscript `2e37d9e657a246f16718d9a475e167ccd2d5b5fa`,Octoscript-Makepad 固定在 `27e9c1bfdbf6021bcad87214ae4ebbe6d683b406`。两个 Mail 源都要求应用身份为字面量;本宿主还要求草稿 ID 字面量与可信发布绑定一致。检查器将草稿 `to`、`subject`、`body` 和 `suggestion_body` 保守地视为模型文本:可以显示/编辑,不能直接复用为操作载荷或源选择参数。宿主批准授权准确的已保存邮件,不要求用户把未经修改的 AI 草稿重新输入一遍。 +[工具 schema](../apps/mail/bundle/tools.json)定义四个草稿/提议工具。目录契约固定在 Octoscript `2e37d9e657a246f16718d9a475e167ccd2d5b5fa`,Octoscript-Makepad 固定在 `aa80f72c509c767faf04822b939d44b2f34fbc81`。两个 Mail 源都要求应用身份为字面量;本宿主还要求草稿 ID 字面量与可信发布绑定一致。检查器将草稿 `to`、`subject`、`body` 和 `suggestion_body` 保守地视为模型文本:可以显示/编辑,不能直接复用为操作载荷或源选择参数。宿主批准授权准确的已保存邮件,不要求用户把未经修改的 AI 草稿重新输入一遍。 下文的历史真机运行对应 **0416**(`abf06d8f`),当时使用 Octoscript `9ca9545b` 和 Octoscript-Makepad `a950f7fb`。当前固定版本仅对同一份 L0 实现应用 rustfmt,并将该修订同步到包装层。较新的 0427–0432 工作区版本使用当前固定版本,其验证单独记录在上方。 diff --git a/native-apps.json b/native-apps.json index 4fbc404f..748e44a4 100644 --- a/native-apps.json +++ b/native-apps.json @@ -41,7 +41,7 @@ { "id": "sheets", "crate": "makepad-sheets", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/sheets" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/sheets" }, "module": "makepad_sheets::SHEETS_MODULE", "bin": "sheets", "bin_features": ["standalone"], @@ -58,7 +58,7 @@ { "id": "terminal", "crate": "makepad-terminal", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/terminal" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/terminal" }, "module": "makepad_terminal::TERMINAL_MODULE", "bin": "terminal", "default_features": true, @@ -124,7 +124,7 @@ { "id": "calculator", "crate": "makepad-calculator", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/calculator" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/calculator" }, "module": "makepad_calculator::CALCULATOR_MODULE", "bin": "calculator", "bin_features": ["standalone"], @@ -147,7 +147,7 @@ { "id": "clock", "crate": "makepad-clock", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/clock" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/clock" }, "module": "makepad_clock::CLOCK_MODULE", "bin": "clock", "bin_features": ["standalone"], @@ -170,7 +170,7 @@ { "id": "notes", "crate": "makepad-notes", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/notes" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/notes" }, "module": "makepad_notes::NOTES_MODULE", "bin": "notes", "bin_features": ["standalone"], @@ -194,7 +194,7 @@ { "id": "reminders", "crate": "makepad-reminders", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/reminders" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/reminders" }, "module": "makepad_reminders::REMINDERS_MODULE", "bin": "reminders", "bin_features": ["standalone"], @@ -218,7 +218,7 @@ { "id": "weather", "crate": "makepad-weather", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/weather" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/weather" }, "module": "makepad_weather::WEATHER_MODULE", "bin": "weather", "bin_features": ["standalone"], @@ -241,7 +241,7 @@ { "id": "task", "crate": "makepad-task", - "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "c155f61d0e1600d2ec474209374444a38a09a470", "local": ".sources/makepad/apps/task" }, + "source": { "git": "https://github.com/OctoSense-org/makepad.git", "rev": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "local": ".sources/makepad/apps/task" }, "module": null, "bin": "task", "default_features": true, diff --git a/native-runtime.lock.json b/native-runtime.lock.json index 3769bd27..0b32d232 100644 --- a/native-runtime.lock.json +++ b/native-runtime.lock.json @@ -1,5 +1,5 @@ { "schema_version": 1, "url": "https://github.com/OctoSense-org/Octoscript-Makepad.git", - "revision": "27e9c1bfdbf6021bcad87214ae4ebbe6d683b406" + "revision": "aa80f72c509c767faf04822b939d44b2f34fbc81" } diff --git a/phone/docs/build-tool.md b/phone/docs/build-tool.md index 15e12662..0a540264 100644 --- a/phone/docs/build-tool.md +++ b/phone/docs/build-tool.md @@ -73,9 +73,9 @@ move that touches `tools/cargo_makepad` is the usual trigger): cargo install --path .sources/makepad/tools/cargo_makepad --force ``` -The shared release selects Makepad main `c155f61d`, which includes App Hub's +The shared release selects Makepad main `68d1f4ec`, which includes App Hub's isolate containment (#22), contained script apps (#30), the QR scanner -(#31), Splash `reapply_text` (#35) self-confirmed assistant tools (#36) and the one-call-site Slug, cursor and glass shaders (#37, #39), the terminal's confirmed runs (#41), trackpad scrolling (#42), gestures (#46), Chinese text (#48), tabs and installed fonts (#47), and every app's system-font fallback (#49, #51), WebReader's close ending the page (#43), the OpenHarmony packager's workspace target dir (#52), the `sys.dataset` and `sys.news_digest` helpers (#53) the peer-link client (#54), the Linux Vulkan build (#45), the map's hosted-archive source (#55) HTTPS on OpenHarmony (#56) the keyboard's hide after a cancelled search (#57, #59) and the terminal's tab titles, wide-character reflow, non-blocking PTY writes, control-request timeout and running-job close confirmation (#61–#65), and its grapheme clusters, Kitty keyboard and synchronized output, close handshake and rendering polish (#66–#69), text shaping and drag-select (#70–#72), clickable links and scrollback search (#73, #74), keyboard shortcuts (#76) and OpenHarmony run (#91), GL GPU timing (#81), atlas text on phones (#82), the Android touch-down power hint (#83) and Vulkan without a debug messenger (#92), Linux GL remote grabs (#93), a hidden map's idle frame loop (#79), and OpenHarmony's keyboard, Studio, GL lifetimes and idle frames (#84, #85, #87–#89), a library target and an own agent for each Makepad app OctoSense makes native (#94, #95), hosted Notes and Reminders that start empty (#96), Files' read-only chat panel (#97) and a CEF profile under `MAKEPAD_HOME` (#98); the consumer lock +(#31), Splash `reapply_text` (#35) self-confirmed assistant tools (#36) and the one-call-site Slug, cursor and glass shaders (#37, #39), the terminal's confirmed runs (#41), trackpad scrolling (#42), gestures (#46), Chinese text (#48), tabs and installed fonts (#47), and every app's system-font fallback (#49, #51), WebReader's close ending the page (#43), the OpenHarmony packager's workspace target dir (#52), the `sys.dataset` and `sys.news_digest` helpers (#53) the peer-link client (#54), the Linux Vulkan build (#45), the map's hosted-archive source (#55) HTTPS on OpenHarmony (#56) the keyboard's hide after a cancelled search (#57, #59) and the terminal's tab titles, wide-character reflow, non-blocking PTY writes, control-request timeout and running-job close confirmation (#61–#65), and its grapheme clusters, Kitty keyboard and synchronized output, close handshake and rendering polish (#66–#69), text shaping and drag-select (#70–#72), clickable links and scrollback search (#73, #74), keyboard shortcuts (#76) and OpenHarmony run (#91), GL GPU timing (#81), atlas text on phones (#82), the Android touch-down power hint (#83) and Vulkan without a debug messenger (#92), Linux GL remote grabs (#93), a hidden map's idle frame loop (#79), and OpenHarmony's keyboard, Studio, GL lifetimes and idle frames (#84, #85, #87–#89), a library target and an own agent for each Makepad app OctoSense makes native (#94, #95), hosted Notes and Reminders that start empty (#96), Files' read-only chat panel (#97), a CEF profile under `MAKEPAD_HOME` (#98), Calculator's keypad laid out again after every apply (#99), the Terminal's own agent with its read tools only (#100) and the kernel port for an app that is an octos client (#101); the consumer lock needs no `makepad_override`. To see which checkout an installed tool reads its Java from: diff --git a/phone/docs/makepad-fork.md b/phone/docs/makepad-fork.md index 27a6b685..714a723c 100644 --- a/phone/docs/makepad-fork.md +++ b/phone/docs/makepad-fork.md @@ -20,9 +20,9 @@ Makepad and that no fork is required do not. The revision is pinned as a chain, not in one place: 1. `native-runtime.lock.json` here names one revision of - `OctoSense-org/Octoscript-Makepad` (`2cc5ef37`, its main). + `OctoSense-org/Octoscript-Makepad` (`aa80f72c`, its main). 2. That repo's `runtime.json` names the Makepad fork revision - (`c155f61d`, Makepad main: the enforced isolate policy of PR #22, module + (`68d1f4ec`, Makepad main: the enforced isolate policy of PR #22, module windows, the ROM's Splash fixes, the contained script apps and host services of PR #30, the QR scanner of PR #31, Splash `reapply_text` of PR #35, the self-confirmed assistant tools of PR #36, the one-call-site @@ -46,9 +46,12 @@ The revision is pinned as a chain, not in one place: of PRs #84, #85 and #87–#89, a library target and an own agent for each Makepad app OctoSense makes native of PRs #94 and #95, hosted Notes and Reminders that start empty of PR #96, Files' read-only chat panel of - PR #97 and a CEF profile under `MAKEPAD_HOME` of PR #98) and the - Octoscript revision - (`5991dfa`, with the L0 `sys.digest` source of Octoscript #40). OctoSense, AppCard, Rinx and the ROM lock the same release. + PR #97, a CEF profile under `MAKEPAD_HOME` of PR #98, Calculator's keypad + laid out again after every apply of PR #99, the Terminal's own agent with + its read tools only of PR #100 and the kernel port for an app that is an + octos client of PR #101) and the Octoscript revision + (`2e37d9e6`, with the L0 `sys.digest` source of Octoscript #40 and the + Mail draft and review capabilities of Octoscript #58). OctoSense, AppCard, Rinx and the ROM lock the same release. 3. The manifests repeat the Makepad revision as `rev = "…"`: here in `Cargo.toml` and `apps/*/Cargo.toml`. Octoscript-Makepad's unmodified manifests retain their release pin. `[patch]` sections redirect every one diff --git a/runtime-patches.lock.json b/runtime-patches.lock.json index 611db75b..570495c5 100644 --- a/runtime-patches.lock.json +++ b/runtime-patches.lock.json @@ -1,10 +1,10 @@ { "schema_version": 1, "makepad": { - "base_revision": "c155f61d0e1600d2ec474209374444a38a09a470", + "base_revision": "68d1f4ecc111daa90c50530e77df3245f05fc2cf", "patch": "tools/runtime-patches/makepad-settings.patch", "sha256": "b17352ebf59e50ab3db6ff1cb825c4e006bcdff47d83522e372b8fe585e57570", - "tree": "b93c3353b9a33e77adf52b0b03e838e742468501", + "tree": "07accf83864ac912d5b9ef04f785634ad43caa9e", "product_fixes": [ "Settings integration: Android IME synchronization, accessibility and reduced motion, GLES program-cache validation, obscured-gesture cancellation and scroll-position observation.", "Contained-app isolation and secret-input restrictions come from the pinned upstream runtime; the Settings overlay preserves those gates.", @@ -13,8 +13,6 @@ "Windows remote grabs send raw RGBA pixels to the bounded PNG worker before presenting, keeping full-size encoding off the UI thread and scaling before encoding.", "Windows frame completion: backport Makepad work c508ab0c8 GPU completion polls around native and hosted repaint so upload buffers can retire.", "Android application extensions honor the manifest's explicit class name, keeping Back and platform integration active under custom test package ids.", - "Calculator lays its keypad out again after every apply (makepad #99): the phone shell's style reapply after a hosted module's first frame left the DSL's 85-point keys, overflowing a 393-point-wide phone.", - "The Terminal opens its own agent's link and answers it with its read tools only (makepad #100); typing a command stays the host's terminal.run.", "Android physical touchscreen input has scoped host approval provenance; default and nested synthetic input are untrusted. Other platforms remain untrusted; compromised OS/root impersonation is outside this app-level boundary." ], "stacked": [ @@ -38,14 +36,6 @@ "patch": "tools/runtime-patches/makepad-application-extension.patch", "sha256": "133099ee598a9794ec5df61dfbef30bca25df7bc03a66deecdb66355a8b8e6bf" }, - { - "patch": "tools/runtime-patches/makepad-calculator-restyle.patch", - "sha256": "24896908d7b5616dd2ccd6c6fc56e8776cd8cc9a1e3750e8fefba7ea569dc8af" - }, - { - "patch": "tools/runtime-patches/makepad-terminal-own-agent.patch", - "sha256": "5246bcece67298835bff8ab68d9ff7015ba67a976eebb50a26441bcb205cc240" - }, { "patch": "tools/runtime-patches/makepad-trusted-user-input.patch", "sha256": "48ac389a3b0fab5051092539700f63d4d58b7dd21cb60af43c30b0fda60a6b32" diff --git a/tools/runtime-patches/makepad-calculator-restyle.patch b/tools/runtime-patches/makepad-calculator-restyle.patch deleted file mode 100644 index bf81d922..00000000 --- a/tools/runtime-patches/makepad-calculator-restyle.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/apps/calculator/src/view.rs b/apps/calculator/src/view.rs -index 6f5b2c0da..931c2e367 100644 ---- a/apps/calculator/src/view.rs -+++ b/apps/calculator/src/view.rs -@@ -453,7 +453,7 @@ - - const STORAGE_KEY: &str = "calculator.json"; - --#[derive(Script, ScriptHook, Widget)] -+#[derive(Script, Widget)] - pub struct CalculatorView { - #[deref] - view: View, -@@ -495,6 +495,15 @@ pub struct CalculatorView { - chrome_gen: u64, - } - -+impl ScriptHook for CalculatorView { -+ /// Every apply (the first, a hot reload, a host's style reapply) writes -+ /// the DSL's sizes back over the keypad: the next draw lays it out for -+ /// its size again instead of trusting the layout it applied before. -+ fn on_after_apply(&mut self, _vm: &mut ScriptVm, _apply: &Apply, _scope: &mut Scope, _value: ScriptValue) { -+ self.last_layout = None; -+ } -+} -+ - impl CalculatorView { - pub fn set_storage(&mut self, storage: StorageHandle) { - self.storage = Some(storage); diff --git a/tools/runtime-patches/makepad-terminal-own-agent.patch b/tools/runtime-patches/makepad-terminal-own-agent.patch deleted file mode 100644 index b07411fd..00000000 --- a/tools/runtime-patches/makepad-terminal-own-agent.patch +++ /dev/null @@ -1,123 +0,0 @@ -diff --git a/apps/terminal/src/main.rs b/apps/terminal/src/main.rs -index 946f43f88..8c74a7a96 100644 ---- a/apps/terminal/src/main.rs -+++ b/apps/terminal/src/main.rs -@@ -378,5 +378,7 @@ fn open_ai_port(&mut self, cx: &mut Cx) { - } - self.ai_port = AiServicePort::open(cx, ai::manifest()); - self.refresh_ai_context(cx); -+ // Its own agent's link, when the host grants one (read tools only). -+ self.ui.term_tabs(cx, ids!(tabs)).open_agent(cx); - } - } -diff --git a/apps/terminal/src/module.rs b/apps/terminal/src/module.rs -index af756a550..bb910b585 100644 ---- a/apps/terminal/src/module.rs -+++ b/apps/terminal/src/module.rs -@@ -49,6 +49,9 @@ fn create(&self, vm: &mut ScriptVm, _open: ValidatedOpen, _handles: InstanceHand - TermTabs {} - }); - let root = WidgetRef::script_from_value(vm, value); -+ if let Some(mut tabs) = root.borrow_mut::() { -+ tabs.open_agent(vm.cx_mut()); -+ } - InstanceParts { - root: root.clone(), - executor: Box::new(TerminalExecutor { root }), -@@ -59,7 +62,14 @@ fn create(&self, vm: &mut ScriptVm, _open: ValidatedOpen, _handles: InstanceHand - } - - fn capabilities(&self) -> &'static [&'static str] { -- &["process", "clipboard"] -+ &[ -+ "process", -+ "clipboard", -+ "octos.session.open", -+ "octos.session.history", -+ "octos.turn.start", -+ "octos.turn.interrupt", -+ ] - } - - /// Dropping the root SIGHUPs every shell and its jobs: while a job -@@ -108,9 +118,11 @@ fn the_module_describes_itself_and_opens_empty() { - assert_eq!(m.id(), "terminal"); - assert_eq!(m.label(), "Terminal"); - assert!(m.capabilities().contains(&"process"), "it starts a shell"); -- assert!( -- !m.capabilities().iter().any(|c| c.starts_with("octos.")), -- "it asks for no assistant service of its own" -+ let octos: Vec<&str> = m.capabilities().iter().copied().filter(|c| c.starts_with("octos.")).collect(); -+ assert_eq!( -+ octos, -+ ["octos.session.open", "octos.session.history", "octos.turn.start", "octos.turn.interrupt"], -+ "its own agent's conversation and nothing more: the agent reads through the read tools only" - ); - let schema = m.open_schema(); - assert_eq!(schema.version, 1); -diff --git a/apps/terminal/src/tabs.rs b/apps/terminal/src/tabs.rs -index 8a6394b0a..9fafefafe 100644 ---- a/apps/terminal/src/tabs.rs -+++ b/apps/terminal/src/tabs.rs -@@ -537,6 +537,10 @@ pub struct TermTabs { - /// A divider being dragged. - #[rust] - drag: Option, -+ /// The link to the terminal's own agent, when its host grants one: the -+ /// agent may call the read tools only (`run` stays with the host). -+ #[rust] -+ agent: Option, - #[live(30.0)] - bar_height: f64, - -@@ -745,6 +749,15 @@ fn on_after_apply(&mut self, vm: &mut ScriptVm, apply: &Apply, _scope: &mut Scop - } - - impl TermTabs { -+ /// Open the link to the terminal's own agent (a host that grants none -+ /// refuses it, and nothing arrives on it). Once: a second call keeps -+ /// the open link. -+ pub fn open_agent(&mut self, cx: &mut Cx) { -+ if self.agent.is_none() { -+ self.agent = Some(makepad_ai_services::peer::OctosPeer::open(cx)); -+ } -+ } -+ - /// The selected tab's terminal, opening the first tab if none is open - /// yet (so a host can set its `cwd`/`command` before it starts). - pub fn active_term(&mut self, cx: &mut Cx) -> WidgetRef { -@@ -1471,6 +1484,20 @@ fn luminance(c: Vec4f) -> f32 { - - impl Widget for TermTabs { - fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) { -+ // Its own agent's tool calls, answered from the selected tab's -+ // emulator with the read tools only (`answer_read_only` refuses -+ // `run`); the link is set aside so the answer may read the tabs. -+ if let Some(mut agent) = self.agent.take() { -+ let (tabs, active) = (&self.tabs, self.active); -+ agent.serve_tools(cx, event, |call| { -+ let term = tabs.get(active).map(|tab| tab.focused_pane().term.clone()); -+ term.as_ref() -+ .and_then(|term| term.borrow_mut::()) -+ .map(|mut term| crate::ai::answer_read_only(call, &mut *term)) -+ .unwrap_or_else(|| makepad_ai_services::wire::ToolResult::unavailable(&call.call_id, "the terminal has no open tab")) -+ }); -+ self.agent = Some(agent); -+ } - // Changes an earlier event made (shortcuts return early), published - // before this one runs: the key-up follows within milliseconds. - if std::mem::take(&mut self.publish_soon) && self.settings.external_control { -@@ -2705,6 +2732,13 @@ fn fit(&self, cx: &mut Cx2d, text: &str, width: f64) -> String { - } - - impl TermTabsRef { -+ /// See [`TermTabs::open_agent`]; no widget: nothing to open. -+ pub fn open_agent(&self, cx: &mut Cx) { -+ if let Some(mut tabs) = self.borrow_mut() { -+ tabs.open_agent(cx); -+ } -+ } -+ - pub fn active_term(&self, cx: &mut Cx) -> WidgetRef { - self.borrow_mut().map(|mut tabs| tabs.active_term(cx)).unwrap_or_default() - }