Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion apps/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,10 @@ See [capabilities and execution boundaries](../docs/capabilities.md).
on the dev fixture, and the shipped bundle with no engine. In a hidden
desktop shell on Linux (headless weston) with the real `deck` engine of
#503: a deck made from an outline, text edited in place, a format, a chart, a theme, notes, the sorter, save, export and Present, light then dark, then a restart. The model tests pass (`cargo test --locked
-p octosense-shell --lib quickdeck_model`).
-p octosense-shell --lib quickdeck_model`). The inspector's states (#507:
a box's anchor and autofit, a chart's elements, a table's options, the
colour set, font pair and footer, following a change and its undo) were
verified the same day, in `card-host` and with the real engine.
- **Writer** (2026-10-09). In a hidden desktop shell built from this tree
(`MAKEPAD_WM_TEST_APP=writer`, a hidden `--remote` run, light and dark),
with the real `word` engine working in Writer's own storage: a document
Expand Down
4 changes: 3 additions & 1 deletion apps/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,9 @@ WebView 页面、图库导出、邮件、新闻、Glance 或单次模型调用
在 App Hub 的 `card-host` 中(浅色与深色):开发夹具上每个设计过的页面和状态,以及没有
引擎时随 Shell 发布的 bundle。在 Linux 上隐藏运行的桌面 Shell 中(无头 weston),使用
#503 的真实 `deck` 引擎:从大纲生成演示文稿、原地编辑文本、格式、图表、主题、备注、浏览视图、保存、导出和放映,先浅色后深色,然后重启。模型测试通过(`cargo test --locked
-p octosense-shell --lib quickdeck_model`)。
-p octosense-shell --lib quickdeck_model`)。检查器的状态(#507:文本框的垂直对齐和自动调整、
图表的元素、表格的选项、配色方案、字体搭配和页脚,以及它们跟随改动和撤销)于同日在
`card-host` 中和真实引擎上验证。
- **Writer**(2026-10-09)。在用本仓库构建的隐藏桌面 Shell 中(`MAKEPAD_WM_TEST_APP=writer`,
隐藏窗口的 `--remote` 运行,浅色与深色),使用在 Writer 自己存储中工作的真实 `word` 引擎:
通过 instrument 输入的文档被保存为 Word 文档(`word.convert` 转换 Writer 写到 `work/` 的
Expand Down
34 changes: 24 additions & 10 deletions apps/quickdeck/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ review decision that applies.
| Toolbar | Slides and Sorter; Text, Picture, Shape, Table, Chart (each opens its insert strip); Undo and Redo; Save, Export and Present |
| Navigator | New slide, the sections (each folds), numbered thumbnails (the current one outlined, a hidden one dimmed) |
| Canvas | The current slide, the engine's render at the canvas's width, with the selection's frame and handles; the pill: previous, "5 / 12", next, zoom out, the zoom, zoom in, Fit |
| Inspector | Format (what the selection is decides what shows: text, box, shape, picture, table, chart, arrange), Layout (the eleven layouts, background, transition, skip), Theme (themes, colours, fonts, slide size, footer), Notes |
| Inspector | Format (what the selection is decides what shows: text, box, shape, picture, table, chart, arrange), Layout (the eleven layouts, background, transition, skip), Theme (themes, colours, fonts, slide size, footer), Notes. Every switch and mark shows what the deck has: a box's anchor and autofit (`deck.format_state`), a chart's elements and palette and a table's options (`deck.slide`), the colour set, font pair and footer (`deck.open`, `deck.state`); a change shows at once, the service's next answer confirms it, and after Undo or Redo the deck's own come back without reopening |
| Status line | Saved or Edited, "Slide 5 of 12 · 16:9" (in the sorter, "12 slides · 2 selected"), and what the app's storage holds against what it may hold, from the shell's `files.status` |

The designs are drawn at 1536 x 1024, and the manifest asks the desktop to
Expand Down Expand Up @@ -170,9 +170,9 @@ exceeded` in its log); `--budget-ms 1000` raises the shell's budget
| Run | What it covers |
| --- | --- |
| `missing` | `card-host` with the shipped bundle: no engine and no files service, on Home, in a deck's tab and on the outline page with its Draft with AI |
| `fixture` | `card-host` with the dev fixture: every designed screen at the designs' 1536 x 1024, light and dark, each grab beside its design in `compare/` |
| `fixture` | `card-host` with the dev fixture: every designed screen at the designs' 1536 x 1024, light and dark, each grab beside its design in `compare/`, then a table's options and the footer; the inspector's switches and marks are checked against what the stand-in reports, and a table option and the footer's date against what it reports after a change and its Undo |
| `states` | The dev fixture's damaged, protected, held and unsupported presentations, the unsaved-changes bar, storage full and the empty library of a first run |
| `shell` | A deck made from an outline with the real engine, then edited: text in place, bold, a chart, undo and redo, a layout, a theme, notes, the sorter, save, export and Present; light, then dark through the shell's own style menu |
| `shell` | A deck made from an outline with the real engine, then edited: text in place, bold, a chart, undo and redo, a layout, a theme, notes, the sorter, save, export and Present; light, then dark through the shell's own style menu. In the light pass the inspector's states follow real changes and their Undo: a box's anchor and autofit, a chart's data labels, a table's total row, the colour set and the footer, each read again from the engine (the shape chosen again, or the deck's design asked again) |
| `restart` | The same home again: the library, the deck's cover and slides |

The dev fixture never ships. `dev-fixture/engine.splash` is a stand-in for
Expand All @@ -182,8 +182,12 @@ the deck engine that answers SERVICE.md's methods as the service does;
designs' sample deck (the Northwind Q3 board update, its slides drawn as
pictures from the designs' own sample text), five more decks for Home, the
layout pictures, and what the stand-in answers (the engine's real themes,
colour and font schemes, shapes and fonts); `--states`, `--full` and
`--empty` make the other runs' libraries.
colour sets with their colours, font pairs, shapes and fonts, and each box's,
chart's, table's and the deck's states as #507 reports them); the stand-in
keeps an undo history of the deck's data. `--states`, `--full` and `--empty`
make the other runs' libraries. `--bundle DIR --grabs-only` takes the same
frames of another bundle (main's, for a before and after) without checking
the states.

```sh
python3 apps/quickdeck/dev-fixture/make_fixture.py <card-host app data>/os.quickdeck
Expand All @@ -192,7 +196,9 @@ python3 apps/quickdeck/dev-fixture/make_fixture.py <card-host app data>/os.quick
## Status

See [tests/evidence/v2-20261011](tests/evidence/v2-20261011/README.md) for
the frames, side-by-sides and receipt.
v2's frames, side-by-sides and receipt, and
[tests/evidence/inspector-states-20261011](tests/evidence/inspector-states-20261011/README.md)
for the inspector's states (#507).

- **Verified on 11 Oct 2026, in `card-host`** (macOS, Apple silicon, at the
runtime's 64 ms budget): the `missing`, `fixture` and `states` runs, light
Expand All @@ -204,6 +210,14 @@ the frames, side-by-sides and receipt.
overrun. The shell opened Quick Deck at 1296 x 698 points (an app area of
1292 x 662). The model tests pass there (22; 23 with `--features app-hub`,
which adds the manifest's window hint).
- **Verified on 11 Oct 2026, the inspector's states** (#507): in `card-host`,
the `fixture` and `states` runs, light and dark, at the 64 ms budget, the
switches and marks checked against the stand-in; with the real engine on
Linux (shell built from this branch on main eb2fd5d1, which has #507), the
`shell` run's light pass changed a box's anchor and autofit, a chart's
data labels, a table's total row, the colour set and the footer, read each
back from the engine, then undid each and read the deck's own back; then
dark and `restart`. The model tests pass (27).
- **Not verified**: a real import from the device (a hidden window on macOS
has the dialog refused, and the Linux host has no dialog helper), so the
import guard's refusals through the app; Draft with AI with a real provider
Expand All @@ -214,7 +228,7 @@ the frames, side-by-sides and receipt.
- **Known**: the shell's window is smaller than the designs' 1536 x 1024, so
the theme panel, Export and the outline scroll. Theme previews draw the
app's own font (OctoSense bundles no theme fonts). A box being edited
shows plain lines without bullets. The colour schemes no theme is named
after show their names only, and the current colours and fonts are
inferred from the theme: the service doesn't report them yet. Present
fills the app's window, not the screen.
shows plain lines without bullets. A built-in theme's own font pair is
named after the theme, so the pair with the same families is marked (Harbor's
fonts are Classic's); an imported deck's own colours or fonts are named in a
hint. Present fills the app's window, not the screen.
13 changes: 7 additions & 6 deletions apps/quickdeck/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Quick Deck(`os.quickdeck`)是 OctoSense 桌面版的演示文稿应用:演
| 工具栏 | Slides 和 Sorter;Text、Picture、Shape、Table、Chart(各自打开插入条);Undo 和 Redo;Save、Export 和 Present |
| 导航栏 | New slide、各分节(可折叠)、带编号的缩略图(当前幻灯片有外框,隐藏的幻灯片变淡) |
| 画布 | 当前幻灯片,即引擎按画布宽度渲染的图片,以及选中对象的边框和控制点;浮动条:上一张、"5 / 12"、下一张、缩小、缩放比例、放大、Fit |
| 检查器 | Format(显示什么取决于选中的对象:文本、文本框、形状、图片、表格、图表、排列)、Layout(十一种版式、背景、切换效果、放映时跳过)、Theme(主题、配色、字体、幻灯片尺寸、页脚)、Notes |
| 检查器 | Format(显示什么取决于选中的对象:文本、文本框、形状、图片、表格、图表、排列)、Layout(十一种版式、背景、切换效果、放映时跳过)、Theme(主题、配色、字体、幻灯片尺寸、页脚)、Notes。每个开关和标记都显示演示文稿的实际设置:文本框的垂直对齐和自动调整(`deck.format_state`)、图表的元素和配色以及表格的选项(`deck.slide`)、配色方案、字体搭配和页脚(`deck.open`、`deck.state`);改动会立即显示,服务的下一次应答予以确认,撤销或重做后无需重新打开即显示演示文稿自己的设置 |
| 状态栏 | Saved 或 Edited、"Slide 5 of 12 · 16:9"(浏览视图中为 "12 slides · 2 selected"),以及应用存储已用量与上限,数据来自 Shell 的 `files.status` |

设计图按 1536 x 1024 绘制,清单请求桌面以这个尺寸打开窗口(`"window": {"width": 1536, "height": 1024}`,App Hub 的窗口提示,需要 `"schema_minor": 1`)。桌面会按自身大小收窄:在 Linux 上隐藏运行的 Shell(1400 x 900 窗口)中,Quick Deck 以 1296 x 698 点打开。窗口宽度小于 1180 点时,导航栏缩窄到 200 点,检查器改由工具栏中的 Inspector 按钮在画布上方打开(**未验证**:没有任何一次运行使用这么窄的窗口)。
Expand Down Expand Up @@ -88,22 +88,23 @@ python3 apps/quickdeck/tests/ui.py --shell target/debug/octosense --lock <dir> -
| 运行 | 覆盖内容 |
| --- | --- |
| `missing` | `card-host` 加随 Shell 发布的 bundle:没有引擎也没有文件服务,覆盖 Home、演示文稿标签以及大纲页面及其 Draft with AI |
| `fixture` | `card-host` 加开发夹具:每个设计过的页面,按设计图的 1536 x 1024,浅色和深色,每张截图与其设计图并排放在 `compare/` 中 |
| `fixture` | `card-host` 加开发夹具:每个设计过的页面,按设计图的 1536 x 1024,浅色和深色,每张截图与其设计图并排放在 `compare/` 中,然后是表格的选项和页脚;检查器的开关和标记与替身报告的内容核对,一个表格选项和页脚的日期在改动及撤销后与替身报告的内容核对 |
| `states` | 开发夹具中损坏、受保护、被暂缓和不支持的演示文稿,未保存更改提示条,存储已满,以及首次运行时空的演示文稿库 |
| `shell` | 用真实引擎从大纲生成一个演示文稿,然后编辑:原地编辑文本、加粗、图表、撤销和重做、版式、主题、备注、浏览视图、保存、导出和放映;先浅色,再通过 Shell 自己的样式菜单切到深色 |
| `shell` | 用真实引擎从大纲生成一个演示文稿,然后编辑:原地编辑文本、加粗、图表、撤销和重做、版式、主题、备注、浏览视图、保存、导出和放映;先浅色,再通过 Shell 自己的样式菜单切到深色。浅色流程中,检查器的状态跟随真实的改动及其撤销:文本框的垂直对齐和自动调整、图表的数据标签、表格的汇总行、配色方案和页脚,每一项都重新从引擎读取(重新选中形状,或重新查询演示文稿的设计) |
| `restart` | 同一个主目录再次启动:演示文稿库、演示文稿的封面和幻灯片 |

开发夹具不会发布。`dev-fixture/engine.splash` 是 deck 引擎的替身,像服务一样应答 SERVICE.md 中的方法;`tests/ui.py` 在 bundle 的临时副本中用它替换 `engine()`。`dev-fixture/make_fixture.py` 在应用存储中填入已批准设计图中的示例演示文稿(Northwind 第三季度董事会汇报,其幻灯片用设计图自己的示例文字画成图片)、Home 上的另外五个演示文稿、版式图片,以及替身应答的内容(引擎真实的主题、配色和字体方案、形状和字体);`--states`、`--full` 和 `--empty` 生成其他运行使用的演示文稿库。
开发夹具不会发布。`dev-fixture/engine.splash` 是 deck 引擎的替身,像服务一样应答 SERVICE.md 中的方法;`tests/ui.py` 在 bundle 的临时副本中用它替换 `engine()`。`dev-fixture/make_fixture.py` 在应用存储中填入已批准设计图中的示例演示文稿(Northwind 第三季度董事会汇报,其幻灯片用设计图自己的示例文字画成图片)、Home 上的另外五个演示文稿、版式图片,以及替身应答的内容(引擎真实的主题、带颜色的配色方案、字体搭配、形状和字体,以及 #507 报告的每个文本框、图表、表格和演示文稿的状态);替身为演示文稿的数据保留撤销历史。`--states`、`--full` 和 `--empty` 生成其他运行使用的演示文稿库。`--bundle DIR --grabs-only` 为另一个 bundle(例如 main 上的,用于前后对比)截取同样的截图,但不核对状态。

```sh
python3 apps/quickdeck/dev-fixture/make_fixture.py <card-host app data>/os.quickdeck
```

## 状态

截图、并排对比和回执见 [tests/evidence/v2-20261011](tests/evidence/v2-20261011/README.zh-CN.md)。
第 2 版的截图、并排对比和回执见 [tests/evidence/v2-20261011](tests/evidence/v2-20261011/README.zh-CN.md),检查器状态(#507)的见 [tests/evidence/inspector-states-20261011](tests/evidence/inspector-states-20261011/README.zh-CN.md)。

- **2026 年 10 月 11 日在 `card-host` 中验证**(macOS,Apple 芯片,运行时默认的 64 ms 预算):`missing`、`fixture` 和 `states` 三种运行,浅色与深色,日志中没有脚本错误。
- **2026 年 10 月 11 日用真实引擎验证**(Linux,运行在无头 weston 上的隐藏桌面 Shell,由基于 main 202d7cc8 的本分支构建,main 已包含 #503 的 deck 服务):`shell` 运行(先浅色后深色)和 `restart`,使用运行时默认的 64 ms 预算,没有脚本错误也没有超时。Shell 以 1296 x 698 点打开 Quick Deck(应用区域 1292 x 662)。模型测试在那里通过(22 个;加 `--features app-hub` 时 23 个,多出的是清单的窗口提示)。
- **2026 年 10 月 11 日验证检查器的状态**(#507):在 `card-host` 中,`fixture` 和 `states` 运行,浅色与深色,64 ms 预算,开关和标记与替身核对;在 Linux 上用真实引擎(Shell 由基于 main eb2fd5d1 的本分支构建,main 已包含 #507),`shell` 运行的浅色流程改动了文本框的垂直对齐和自动调整、图表的数据标签、表格的汇总行、配色方案和页脚,每一项都从引擎读回,再逐一撤销并读回演示文稿自己的设置;然后是深色流程和 `restart`。模型测试通过(27 个)。
- **未验证**:从本设备真正导入文件(macOS 上隐藏窗口的对话框会被拒绝,Linux 主机没有对话框助手),因此也未验证导入防护经由应用显示的拒绝;用真实提供方的 Draft with AI(只验证了没有提供方时的回答);macOS 上的隐藏 Shell;用真实引擎插入图片、表格、形状库、背景、长备注时的放映备注条以及图片导出(这些页面由开发夹具覆盖);宽度小于 1180 点的窗口;其他屏幕尺寸;手机。
- **已知问题**:Shell 的窗口小于设计图的 1536 x 1024,所以主题面板、导出和大纲页面需要滚动。主题预览用应用自己的字体绘制(OctoSense 不附带主题字体)。正在编辑的文本框显示没有项目符号的纯文本行。没有同名主题的配色方案只显示名称,当前配色和字体由主题推断:服务目前还不报告它们。放映填满的是应用窗口,而不是整个屏幕。
- **已知问题**:Shell 的窗口小于设计图的 1536 x 1024,所以主题面板、导出和大纲页面需要滚动。主题预览用应用自己的字体绘制(OctoSense 不附带主题字体)。正在编辑的文本框显示没有项目符号的纯文本行。内置主题自己的字体搭配以主题命名,所以标记的是字体相同的那组搭配(Harbor 的字体与 Classic 相同);导入的演示文稿自己的配色或字体会在提示中写明名称。放映填满的是应用窗口,而不是整个屏幕。
Loading
Loading