Add bundled bus fonts and shared font favorites
This commit is contained in:
+11
-4
@@ -61,6 +61,7 @@
|
||||
| `WEB-TEXT` | 多文字元素 | 每组文字是可独立选择、编辑、拖动、等比缩放、复制和删除的透明元素。 |
|
||||
| `WEB-TEXT-I18N` | 多语言静态文字 | `default` 自动选择能覆盖全文的字体,支持常见现代语言且不以缺字方框代替失败。 |
|
||||
| `WEB-TEXT-FONTS` | 字体选择与导入 | 文字编辑器使用可搜索的设备字体目录,允许导入受校验的字体文件且不要求用户输入服务器路径。 |
|
||||
| `WEB-BUS-FONT` | 公交窄体 | 系统字体分组可选“类似公交窄体(推荐16px)”与“类似公交窄体(推荐32px)”;旧16px字款直接优化替换,预览、场景、模板共用真实像素,受影响缩略图更新,不改变默认设置及作品结构。 |
|
||||
| `WEB-TEMPLATES` | 可编辑场景模板 | 内容工作区可保存或更新完整场景模板;模板管理统一提供播放、编辑、复制、重命名、删除和混合排序,动图卡片按完整帧序列动态预览,播放与编辑草稿互不影响;动态预览与动图管理共享设备配置的并发上限。 |
|
||||
| `WEB-ANIMATIONS` | 动图文件夹与逐帧编辑 | 把有序 scene v2 帧按独立间隔循环播放;网页负责文件夹、帧顺序、逐帧编辑、复制目标和播放入口,卡片名称单行省略并提供非触摸悬停全名,缩略图按完整帧序列动态预览;动态预览与模板管理共享设备配置的并发上限。 |
|
||||
| `WEB-MEDIA-IMPORT` | 媒体内容转换 | 流式导入常见图片、动图和视频,在设备后台统一裁切、缩放、透明合成和逐帧转换为静态模板或动图。 |
|
||||
@@ -597,7 +598,7 @@ WebSocket 消息示例:
|
||||
- 拖动和缩放过程中使用已缓存的透明层做连续视觉变换;交互结束后提交整数 `x`、`y` 和 `1..64` 的整数字号,再调用后端 Pillow 刷新精确图层。
|
||||
- 数值字段必须保留,作为键盘操作和精确定位的替代入口;画板选择、拖动、缩放均不得阻止触摸页面的必要操作。
|
||||
- 参数变化后防抖请求与实屏一致的透明文字图层;当前元素渲染失败时保留错误状态并禁止应用不完整场景。
|
||||
- 字体字段必须是可搜索的 ARIA combobox,不再提供服务器字体路径的自由文本输入。目录按“自动字体、已导入字体、系统字体”分组并显示字体家族与样式;输入只筛选目录,只有确认选项才修改当前元素。
|
||||
- 字体字段必须是可搜索的 ARIA combobox,不再提供服务器字体路径的自由文本输入。目录按“收藏字体、自动字体、已导入字体、系统字体”分组并显示字体家族与样式;输入只筛选目录,只有确认选项才修改当前元素。
|
||||
- combobox 支持鼠标、触摸和 `ArrowUp`/`ArrowDown`、`Home`/`End`、`Enter`、`Escape`;旧场景中的路径或已失效字体 ID 必须原样保留并显示“当前字体不可用,将自动回退”,不得因目录读取失败把场景改成 `default`。
|
||||
- 字体控件最右侧提供始终可用的“导入字体”按钮。导入成功且存在选中文字时自动选择返回的第一个字体面;没有选中文字时只更新目录,不隐式创建或修改文字元素。
|
||||
- 导入按钮使用共享控件状态区分真正上传、成功、重复文件、格式错误、超限、超时与网络失败;下拉框尚未加载或没有选中文字时也必须给出明确原因,不能留下永久忙碌状态。
|
||||
@@ -1068,7 +1069,7 @@ WebSocket 消息示例:
|
||||
|
||||
### 3.15 字体目录与导入 API(`WEB-TEXT-FONTS`、`CONFIG-FONTS`、`WEB-SECURITY`)
|
||||
|
||||
- `GET /api/fonts` 返回 `items`、`accepted_extensions`、`max_upload_bytes` 和 `warnings`。首项固定为 `id:"default"`;每个目录项只暴露 `id`、`label`、`family`、`style` 和 `source`,不得暴露服务器文件路径。
|
||||
- `GET /api/fonts` 返回 `items`、`favorite_ids`、`accepted_extensions`、`max_upload_bytes` 和 `warnings`。首项固定为 `id:"default"`;每个目录项只暴露 `id`、`label`、`family`、`style` 和 `source`,不得暴露服务器文件路径。
|
||||
- `source` 只允许 `automatic`、`imported`、`system`。系统字体 ID 由规范路径与 Fontconfig face index 的 SHA-256 生成;导入字体 ID 为 `user:<文件SHA-256>:<face-index>`,服务重启后保持稳定。
|
||||
- `POST /api/fonts/import?filename=<UTF-8文件名>` 接收 `application/octet-stream` 原始请求体,只接受 `.ttf`、`.otf`、`.ttc`、`.otc`,最大 `32 MiB`。服务必须同时检查扩展名、流式字节上限、实际字体结构和至少一个带 Unicode cmap 的可用字体面。
|
||||
- 新内容返回 `201` 和 `created:true`;重复内容不重复落盘,返回 `200` 和 `created:false`。两种响应都返回文件中的全部可用字体面。超限、类型不支持、内容无效和空间不足分别返回 `413`、`415`、`422`、`507`。
|
||||
@@ -1080,7 +1081,7 @@ WebSocket 消息示例:
|
||||
|
||||
| 类别 | 位置 | 内容与处理 |
|
||||
|---|---|---|
|
||||
| 持久数据 | `/var/lib/matrix-screen-controller` | `config.json`、`wifi_config.json`、`frp/catalog.json` 与各 UUID 原文配置、模板 JSON、动图记录、`library/order.json`、`fonts/<SHA-256>.font`、用户导入图片、预设及未来用户资源;更新、回滚和清理不得删除、覆盖或以默认值重建。NetworkManager 自身的连接配置由其系统目录管理。 |
|
||||
| 持久数据 | `/var/lib/matrix-screen-controller` | `config.json`、`wifi_config.json`、`frp/catalog.json` 与各 UUID 原文配置、模板 JSON、动图记录、`library/order.json`、`fonts/<SHA-256>.font`、`fonts/favorites.json`、用户导入图片、预设及未来用户资源;更新、回滚和清理不得删除、覆盖或以默认值重建。NetworkManager 自身的连接配置由其系统目录管理。 |
|
||||
| 可再生数据 | 持久根下各模块的专用缓存目录 | 当前包括模板和动图帧缩略图;升级时保留,只有模块能按严格命名和引用关系删除已证明无效的临时、孤立或过期项。 |
|
||||
| 运行期数据 | `/run/matrix-screen-controller` | 开机标记、WiFi 提示会话与操作结果、mock 最新帧、锁和进程级临时状态;整机重启可丢失,systemd restart 可按登记语义保留,不进入迁移清单或更新备份。 |
|
||||
| 更新暂存与事务备份 | 更新工具声明的专用暂存位置 | 成功后删除,不长期累计多代 `.bak`、旧包或解压目录;失败时不得牵连原持久文件。 |
|
||||
@@ -1245,7 +1246,7 @@ WebSocket 消息示例:
|
||||
|
||||
- 动画、滚动文字、时钟、天气、传感器数据展示:归入新的 `WEB-MODE-*` 或扩展 `WEB-TEXT`,必须说明页面入口和元素/图层提供者,并复用 `WEB-COMPOSITION` 与最终 `64x64 RGB` 帧边界。
|
||||
- 把媒体作为可移动场景元素、逐帧独立裁切或网络媒体导入:在现有 `WEB-MEDIA-IMPORT` 基础上另行扩展;当前转换结果只生成像素底层 scene,不新增图片元素。
|
||||
- 字体删除、重命名、全局默认和系统级安装:继续扩展 `WEB-TEXT-FONTS` 与 `CONFIG-FONTS`;当前只提供目录、选择和持久导入。
|
||||
- 字体删除、重命名、全局默认和系统级安装:继续扩展 `WEB-TEXT-FONTS` 与 `CONFIG-FONTS`;当前提供目录、选择、设备共享收藏和持久导入。
|
||||
- 预设场景、启动默认画面、收藏画布:扩展 `CONFIG-BASE` 和 `CONFIG-DATA-LIFECYCLE`,必须说明持久位置、当前 schema、单向迁移和失败保全。
|
||||
- 访问密码、局域网白名单、禁止公网转发提示:扩展 `WEB-SECURITY`,并在测试文档增加允许/拒绝场景。
|
||||
- 多屏、新尺寸屏幕或新硬件映射:网页端只能消费底层暴露的尺寸和能力,不直接写死 GPIO 或 HUB75 细节;先更新硬件资料和 `02_屏幕底层控制接口需求.md`。
|
||||
@@ -1270,3 +1271,9 @@ WebSocket 消息示例:
|
||||
画笔层 `background` 为当前启用的颜色字符串或null(关闭);`backgroundColor` 保存该层在关闭状态下的颜色选择。此已登记可选字段缺省时读取为现有背景颜色或黑色,兼容早期scene v2;新网页保存时包含该值,切层、复制及重载不得借用其他图层颜色。关闭背景不绘制该颜色,擦除/清空/裁切不改变它。
|
||||
|
||||
迁移边界:旧导航只有 `text` 时,移除后使用当前默认导航顺序;其余非空顺序保持不变。旧浏览器草稿同样先严格检查字段、整数坐标及范围;未知字段、损坏或未来格式必须保留旧键并禁用覆盖保存,不能由旧宽松读取器丢弃字段后继续迁移。
|
||||
|
||||
### WEB-FONT-FAVORITES / CONFIG-FONT-FAVORITES:设备共享字体收藏
|
||||
|
||||
字体行样式左侧提供空心/实心五角星,立即收藏,取消收藏必须通过确认对话框。收藏字体固定在自动字体上方,空时显示“暂无收藏字体”;收藏项仍在原分组显示。按字体面ID独立收藏,搜索同时筛选两处,星星操作不选择字体或改变文字。
|
||||
|
||||
GET /api/fonts 增加 favorite_ids;PUT /api/fonts/favorite 接收严格 {id, favorite} 并幂等更新单项,返回最新 favorite_ids。未知ID收藏返回404,取消允许失效ID。设备共享持久文件 fonts/favorites.json 使用严格 schema_version:1 和唯一 favorite_ids 数组;仅不存在时创建空记录,损坏/未来版本保留并拒绝启动。写入复用耐久原子替换,加锁合并;失败不修改内存及界面。失效ID保留但隐藏;部署、回滚保留文件。打开选择器刷新共享状态,无轮询。
|
||||
|
||||
Reference in New Issue
Block a user