k88936
|
86649e50a7
|
重新构建时清除失败忽略指纹
- buildOnce 在 setFailure(null) 前 setDismissedFailure(''),显式重跑失败仍会重新弹出弹窗
|
2026-10-07 14:13:33 +08:00 |
|
k88936
|
8e3f0b8920
|
导出校验改用落盘后的权威表单
- packageAll 的本地校验改用 effectiveFormRef.current ?? form,避免 refresh/flush 后仍用陈旧闭包放行盘上的非法值
|
2026-10-07 14:13:16 +08:00 |
|
k88936
|
e830034d03
|
游戏媒体换签请求支持取消
- getGameDistributionMediaReadUrl / getOwnerGameDistributionMediaReadUrl 增加可选 AbortSignal 并透传
- resolveGamePublishImagePreview 转发 signal;useGameDistributionMediaReadUrl 在 effect 清理时 abort 在途请求
|
2026-10-07 14:11:59 +08:00 |
|
k88936
|
5e5bb19a64
|
发布回填截图签名地址改为并发换签
- applyVersionMediaDefaults 用 Promise.all 并发请求所有截图读地址,并在取消后直接返回,不再串行等待、也不在取消后继续发起请求
|
2026-10-07 14:10:44 +08:00 |
|
k88936
|
3a0d275746
|
购买 E2E 定价边界建游失败时提前退出
- boundsGameId 为空时先记录失败再 process.exit(1),避免后续请求 /undefined 级联掩盖根因
|
2026-10-07 14:10:14 +08:00 |
|
k88936
|
9a653c8382
|
陶泥儿导出收敛为单一发布入口并把线上值内联到字段
- 移除独立「打包」按钮与「发行包」卡片,发布入口不套卡片,内部先跑打包
- 线上值逐字段内联到对应输入框下方,退役 OnlineValuesCard
- 线上值进项目自动读取,失败按固定间隔静默自动重试,去掉「重新读取」手动入口
- 读取失败时提示正在自动重试,发布入口保持停住
- 同步陶泥儿面板测试与技术方案/实施计划文档
|
2026-10-07 14:09:26 +08:00 |
|
k88936
|
11c8c2789a
|
重启校验 E2E 恢复封面前查回当前 coverObjectKey
- 旧 STATE_FILE 只有 coverAssetId(素材对象 ID,不是对象存储 key),恢复续跑时先查游戏当前封面 key,不再拿它冒充 coverObjectKey
|
2026-10-07 14:09:16 +08:00 |
|
k88936
|
28be35239e
|
修 creator-runtime 夹具缺失 price_mud_points
- fixtures 的 game 字典补上必填非 Option 的 price_mud_points=0,避免迁移导入报 missing field
|
2026-10-07 14:09:00 +08:00 |
|
k88936
|
f4582fe5b3
|
游戏分发建游/建版先校验 local_project_id 再上传媒体
- create_game 与 create_version 把 normalize_local_project_id 提前到 resolve_publish_media 之前,避免用户输入非法时提前返回、已上传的封面/截图成为孤儿对象
|
2026-10-07 14:07:52 +08:00 |
|
k88936
|
9512842050
|
发布图片读取改用 no-follow 句柄并限长读入
- read_publish_image 用 OpenOptions + O_NOFOLLOW 打开,按句柄 metadata 判上限后再 take 限长读取,关掉体积与符号链接 TOCTOU
|
2026-10-07 14:06:15 +08:00 |
|
k88936
|
3a67580956
|
项目校验脚本漂移比较忽略首尾空白
- resolve_project_verification_spec 对 actual/expected command 都做 trim,避免 package.json 脚本带首尾空格或换行时被误判成「脚本已变化」
|
2026-10-07 14:04:48 +08:00 |
|
k88936
|
2ab7717a2c
|
陶泥儿构建命令的项目根校验挪到 spawn_blocking
- run_build 不再在 Tokio worker 上做同步文件 IO 与 Windows ACL 修复,与同模块其它 IO 一致
|
2026-10-07 14:03:09 +08:00 |
|
k88936
|
ba9d70a5b6
|
陶泥儿产物读取改用 no-follow 打开
- read_package_bytes 用 OpenOptions + O_NOFOLLOW / FILE_FLAG_OPEN_REPARSE_POINT,关掉 symlink_metadata 检查后到打开之间被换成符号链接的 TOCTOU 窗口
|
2026-10-07 14:02:21 +08:00 |
|
k88936
|
a3cf980000
|
陶泥儿构建收尾超平台上限的产物不再整包读入内存
- conclude 在 std::fs::read 前同时按平台 200MiB 上限过滤,200MiB~512MiB 的产物直接判 artifactMissing
|
2026-10-07 14:00:58 +08:00 |
|
k88936
|
ad08772190
|
仓库上下文扫描忽略 .export 导出目录
- should_ignore_directory 顶层组件匹配补回 .export,避免把生成的导出包/zip 纳入 agent 仓库上下文
|
2026-10-07 14:00:47 +08:00 |
|
k88936
|
5df27afed3
|
预览服务重新把 .export 列为受保护目录
- preview.rs 两处受保护组件列表补回 .export(导出目录由 exports 改名时遗漏),避免 .export/taonier.json 等导出元数据被本地预览读取返回
|
2026-10-07 13:57:56 +08:00 |
|
k88936
|
0f127dbc70
|
移除游戏分发 E2E helper 中无引用的导出
- 删除 coverImagePart:各 E2E 脚本都有自己的本地实现,仓库内无人导入
- COVER_PNG 只作 imagePart 的默认值,收回 export
|
2026-10-07 13:55:05 +08:00 |
|
k88936
|
5b0c416839
|
陶泥儿 H5 打包改用临时文件原子落盘
- writeZipEntries 先写同目录 <zip>.tmp-<pid>,全部成功后再 renameSync 覆盖落点,失败只清理临时文件
- makeZip 失败路径不再删除落点,避免写盘失败时丢掉落点上原有的 zip
|
2026-10-07 13:53:31 +08:00 |
|
k88936
|
bda1bb0814
|
陶泥儿 H5 打包拒绝非普通文件条目
- collectZipEntries 遇到 FIFO/socket/设备文件时抛错,不再静默跳过导致缺文件的包
|
2026-10-07 13:50:14 +08:00 |
|
k88936
|
9c26642896
|
陶泥儿 H5 产物校验覆盖单引号根路径引用
- assertH5Root 的属性正则同时匹配单/双引号并容忍 = 两侧空白,避免手写/插件 HTML 漏检
|
2026-10-07 13:49:07 +08:00 |
|
k88936
|
af752eaa1a
|
陶泥儿 H5 配置合并后钉死 build.outDir
- mergeConfig 不再允许 overrides 静默改写 build.outDir,保证与 pack.mjs 的 --vite-built-dir 默认值一致
|
2026-10-07 13:48:40 +08:00 |
|
k88936
|
003f7cfe95
|
陶泥儿 H5 导出收尾改用 lstatSync 清理空目录
- pruneEmptyDirs 不再跟随符号链接,避免递归走出 dist-taonier 或对指向祖先的链接递归到栈溢出
|
2026-10-07 13:48:10 +08:00 |
|
k88936
|
3f211f12d0
|
游戏媒体换签响应为空时返回可控错误
- readGameDistributionMediaSignedUrl 允许 payload 为空,空响应体不再抛原始 TypeError,而是走既有的「游戏媒体访问地址缺失」友好错误
|
2026-10-07 13:47:13 +08:00 |
|
k88936
|
bff0006eba
|
删除 .gitattributes 中重复的 export/generated 规则
- 移除与第 33 行完全重复的 apps/ai-game-creator-shell/src/view/project-development/export/generated/** 行
|
2026-10-07 13:45:43 +08:00 |
|
k88936
|
61ca2127cf
|
Merge remote-tracking branch 'origin/master' into feat/adapt-taonier-skill
# Conflicts:
# docs/project-memory/shared-memory/pitfalls.md
|
2026-10-07 13:35:15 +08:00 |
|
k88936
|
c171800151
|
发布媒体路径改由发布面板传入,不再回读草稿注册表
- 发布命令新增 coverPath / screenshotPaths 参数,本地图路径与文字字段都取 packageAll 落定的同一份权威表单
- Rust 侧 resolve_publish_media 去掉 read_form,不再读 .export/taonier.json,按面板路径与张数失败关闭
- resolve_publish_media 单元测试改为直接传面板路径,并新增「面板路径优先于磁盘草稿」用例
- 前端 facade 与 useTaonierTab 透传面板路径,补路径透传与空槽位断言
- 同步技术方案中发布媒体来源说明
|
2026-10-07 13:32:24 +08:00 |
|
k88936
|
d5e26a68f5
|
Merge pull request '修复对话设置中「运行配置」被设置浮层遮挡的层级问题' (#667) from fix/setting-modal-zindex into master
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 6m9s
Project CI / AI game creator shell Rust crates (push) Successful in 6m9s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 7m43s
Project CI / Backend tests (push) Successful in 8m3s
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Reviewed-on: #667
|
2026-10-07 13:32:09 +08:00 |
|
k88936
|
50c2c91d4a
|
修复对话设置中「运行配置」被设置浮层遮挡的层级问题
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
调整 .project-chat-settings-backdrop 的 z-index 从 240 降到 210,让二级浮层运行配置(220)与插件面板(230)正常叠在其上
新增 windowChromeOverlayContract 回归测试,约束对话设置 / 运行配置 / 插件面板三层 z-index 严格递增
|
2026-10-07 13:27:08 +08:00 |
|
k88936
|
441be8d621
|
Merge pull request 'Feat/支持fnm nvm' (#663) from feat/support-more-node into master
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 6m22s
Project CI / AI game creator shell Rust crates (push) Successful in 6m25s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 8m27s
Project CI / Frontend tests (push) Successful in 2m41s
Project CI / Backend tests (push) Successful in 10m17s
Project CI / AI game creator shell web tests (push) Failing after 4m26s
Project CI / Repository checks (push) Successful in 7m34s
Project CI / Native shell tests (push) Successful in 9m49s
Reviewed-on: #663
|
2026-10-07 13:08:49 +08:00 |
|
k88936
|
5090bde7f3
|
Merge pull request 'Fix/chat history style' (#662) from fix/chat-history-style into master
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Reviewed-on: #662
|
2026-10-07 13:04:55 +08:00 |
|
k88936
|
2fa7923362
|
合并 origin/master 到 feat/adapt-taonier-skill:保留陶泥儿退役链路并吸收 master 错误详情改动
Project CI / Backend tests (pull_request) Failing after 1m12s
Project CI / Native shell tests (pull_request) Failing after 3m48s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m43s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 6m39s
Project CI / Repository checks (pull_request) Failing after 1m0s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 6m51s
Project CI / Frontend tests (pull_request) Successful in 1m58s
Project CI / AI game creator shell web tests (pull_request) Failing after 54s
- commands/desktop.rs:按本分支「exports 全退役」保留删除,不回填 master 改动的 playtest 打包/读取/列举命令
- project/export.rs:保留本分支删除,旧导出实现已由 export/draft 陶泥儿与小工具链路替换
- useGameDistributionPublishForm.ts:保留本分支删除,发布表单已由 export/state 与 tabs/taonier 面板替换
- game_distribution_publish.rs:保留本分支新增的 owner 媒体读路由与图片直传辅助函数,删除 master 改动的封面生成与 AI 资料建议退役代码
- game_distribution_publish.rs:吸收 master 的错误详情改动(parse_error_payload、response_data、map_http_error、request_json、request_json_for_read、describe_distribution_request_failure、emit_publish_progress 及对应测试)
- resolve_preview_url:合并为本分支 owner_media_read_url 加错误日志
|
2026-10-07 12:57:59 +08:00 |
|
k88936
|
08771d39e8
|
媒体公开读授权按 objectKey 反解 gameId 改 O(1) 查找
- 从 GAME_DISTRIBUTION_MEDIA_PREFIX 后的首段反解 game_id,按主键读那一行核对媒体归属
- 不再逐行扫描全部游戏及其 screenshots_json
- 补充 key 布局(非本前缀、缺 gameId、缺文件名、多级路径)的单测
|
2026-10-07 12:09:20 +08:00 |
|
k88936
|
7aeac536e0
|
游戏分发媒体读写加固为先校验后上传并清理孤儿对象
- 图片 part 改按文件头嗅探 PNG/JPEG/WebP/GIF/AVIF,声明 image/svg+xml 之类主动内容一律拒绝
- 同源字节中转新增内容策略:游戏媒体只放行栅格类型,其余降级为 attachment,并统一加 nosniff
- 同源字节中转复用进程级 OSS HTTP 客户端,不再每次 reqwest::Client::new(),连接复用与超时一并生效
- upload_media_image 取 UploadedImage 所有权,去掉最多 8 MiB 的整段克隆
- 更新资料先按刚读到的游戏行做 revision CAS,再决定是否写图;事务失败或幂等重放时补偿删除本次新传对象
- 媒体内部前缀抽到 shared-contracts,供写路径与只读授权端共用同一常量
|
2026-10-07 12:09:09 +08:00 |
|
k88936
|
05012a85c3
|
删掉滚动回归测试,改为守卫「回到底部」不盖住输入盒弹层
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m39s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 5m59s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m0s
Project CI / Frontend tests (pull_request) Successful in 2m47s
Project CI / Backend tests (pull_request) Successful in 7m42s
Project CI / AI game creator shell web tests (pull_request) Failing after 3m33s
Project CI / Repository checks (pull_request) Successful in 7m2s
Project CI / Native shell tests (pull_request) Successful in 10m2s
- 删除 useConversationScroll.test.tsx 里新增的两条用例:加载行隐藏滞回、内容塌回一屏后收起胶囊
- chatDialogFrameLayout.test.ts:消息列表改为 flex 列容器后 gap 实际为 0,断言由 14px 改为 0 并注明间距仍由子项 margin 提供
- chatDialogFrameLayout.test.ts:新增用例——胶囊的 z-index 必须低于输入盒,模型 / 附件菜单向上展开时盖住胶囊而不是被胶囊盖住
- project-development.suite.ts:输入盒 z-index 断言由 1 改为 30,并注明层叠关系由上面那条用例守卫
|
2026-10-07 11:55:04 +08:00 |
|
k88936
|
680503d2a5
|
导出产物保存收敛成共享 exportArtifactDownload
- 新增 exportArtifactDownload.ts,承载保存对话框 + save_local_project_asset_file + 文件管理器定位
- 删掉逐字重复的 taonierDownload.ts 与 xhsMinitoolDownload.ts
- 两个 ArtifactsPane 改用通用的 saveExportArtifactToDisk / revealExportArtifactInManager
|
2026-10-07 11:53:18 +08:00 |
|
k88936
|
6f0ea03106
|
抽 buildGamePublishMediaSubmission,发布与编辑共用同一份媒体提交
- gamePublishAssets 新增媒体提交合成:槽位 objectKey 去空白、本地新图只进 parts
- GamePublishPage 的 metadata 槽位与 multipart part、GameWorkMetadataEditor 的 payload/media 都改用它
- 补槽位与 part 同源的单测
|
2026-10-07 11:49:59 +08:00 |
|
k88936
|
5ce5cb006a
|
发布/编辑媒体在覆盖与卸载时释放本地预览 blob URL
- applyVersionMediaDefaults 用线上默认值覆盖前先 revoke 被替换的本地预览
- GamePublishPage / GameWorkMetadataEditor 用 ref 跟踪最新图片,卸载时兜底 revoke
- 补「线上默认值覆盖本地选择」的 revoke 断言测试
|
2026-10-07 11:47:14 +08:00 |
|
k88936
|
2a1e7fb373
|
Merge branch 'master' into fix/chat-history-style
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
|
2026-10-07 11:46:42 +08:00 |
|
k88936
|
009a772ebd
|
媒体验证 E2E 去掉对服务端存储前缀的硬编码断言
- 「公开投影只暴露服务端派生的媒体 objectKey」改为结构断言:非空去空白、含路径分隔符、不是客户端 part 文件名
- 不再断言 agc/project-snapshots/v1/game-distribution/media/ 这一内部布局常量
- 与服务端返回键的一致性仍由相邻的 owner/公开投影相等断言覆盖
|
2026-10-07 11:43:17 +08:00 |
|
k88936
|
1f239a96ce
|
游戏分发 E2E 抽出共享 multipart 发布 helper
- 新增 scripts/game-distribution-e2e-helpers.mjs:COVER_PNG、imagePart、coverImagePart、publishFormData、resolveApiRequest
- 11 个 E2E 脚本删除各自的重复实现,改为 import;api() 的 body 分支收敛到 resolveApiRequest
- 各脚本的封面文件名前缀、envelope 与鉴权头合并顺序、返回形状保持不变
|
2026-10-07 11:42:45 +08:00 |
|
k88936
|
ab2af60d30
|
发布用 packageAll 落定的权威表单合成 metadata
- useTaonierExport 维护 effectiveFormRef,refresh 采纳新表单与打包前 flush 成功时同步
- 暴露 getEffectiveForm;publishGame 在 await packageAll() 之后用它,避免旧快照与宿主读盘不一致
- 补两条单测:采纳新表单后权威表单更新、未保存输入先落盘再作为权威表单
|
2026-10-07 11:41:27 +08:00 |
|
k88936
|
800c456804
|
回读版本冻结资料时透传 objectKey 并接受字符串截图数组
- GameDistributionPublicationImageDraft 增加 objectKey,封面/截图回读时带上沿用键
- FrozenPublicationMetadata.screenshots 改按字符串数组解析,删除只认 {assetId,objectKey} 的旧结构
- 前端草稿类型补 objectKey;补字符串数组解析的 Rust 单测
|
2026-10-07 11:39:34 +08:00 |
|
k88936
|
aa946a9304
|
发布命令删掉已失效的 package_relative_path 形参
- Rust 命令与 stage_publish_package 去掉该形参,整包固定读 .export/taonier.zip
- 前端服务类型、invoke 载荷与 useTaonierTab 调用同步删除
- 更新单测与 live 测试,去掉对已忽略形参的断言
|
2026-10-07 11:34:54 +08:00 |
|
kdletters
|
8ceada8690
|
合并 codex/agc-error-convergence-20261004:交付核心以 master 新设计为准并保留分支错误明细
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 5m43s
Project CI / AI game creator shell Rust crates (push) Successful in 4m52s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 5m40s
Project CI / Frontend tests (push) Successful in 2m48s
Project CI / Backend tests (push) Successful in 7m14s
Project CI / AI game creator shell web tests (push) Failing after 3m50s
Project CI / Native shell tests (push) Successful in 8m27s
Project CI / Repository checks (push) Successful in 7m9s
冲突处理:交付合同/租约相关现场取 master(#608 重构),分支侧错误明细在可安全保留处回补
编译修复:direct_tool_bridge 回执结算失败正文、direct_patch 指纹读取、direct_delivery 终态读取按 Result 形状对齐
前端修复:DirectProjectChatView 取 master,其余缺失的错误正文 import/参数回补
重新生成 AuthServiceUnavailable 绑定以匹配 Rust 声明
|
2026-10-07 11:33:18 +08:00 |
|
k88936
|
12d4e8477a
|
发布图片加稳定 id,截图列表不再按 name-index 做 key
- GamePublishImage 新增 id,本地新选图与线上沿用图各自铸一次
- 截图列表 key 改用 image.id,删除/重排时不再因 index 位移重建节点,同名文件也能区分
- 补同名本地图 id 互异的单测
|
2026-10-07 11:13:45 +08:00 |
|
k88936
|
7ed3696959
|
修复nvm默认别名并补真实nvm沙箱验证
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m41s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m1s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m46s
Project CI / Frontend tests (pull_request) Successful in 3m17s
Project CI / Backend tests (pull_request) Successful in 7m25s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m52s
Project CI / Repository checks (pull_request) Successful in 6m9s
Project CI / Native shell tests (pull_request) Successful in 8m28s
- nvm 的 alias/default 只写主版本号(如 22),改为按同一 pin 子集在已安装版本里选最高匹配,避免按 (22,0,0) 精确匹配永远落空
- 新增 opt-in 真机测试 command_sandbox_real_linux_opt_in_runs_nvm_installation_prefix,在 bwrap 内跑真实 nvm 安装前缀的 node 与 npm
- 新增单测 nvm_major_only_default_alias_selects_the_installed_patch 守住主版本号别名
- 里程碑、decision-log 与 pitfalls 记录真实 nvm v0.40.8 + Node v22.23.3 验证与 default 别名口径
|
2026-10-07 11:12:49 +08:00 |
|
k88936
|
9184e92774
|
运维回滚 E2E:封禁态建游请求去掉歧义的沿用封面键
- 带二进制 cover part 时把 metadata.coverObjectKey 显式置 null,与套件其余「新图」语义一致
- 避免同一请求同时携带 objectKey 与 cover 字节,在网关检查顺序变化时结论漂移
|
2026-10-07 11:12:20 +08:00 |
|
k88936
|
152cdc6177
|
可达性 E2E:创建游戏失败时先退出再解引用封面键
- 在 gameId 取值后补 if (!gameId) process.exit(1)
- 创建失败时 created.data 为空,提前取 coverObjectKey 会抛未捕获 TypeError 打崩脚本
|
2026-10-07 11:12:08 +08:00 |
|
k88936
|
9c822c098d
|
重启校验 E2E 续跑兼容旧 STATE_FILE 的 coverAssetId
- runResume 读封面键时回退 state.coverAssetId
- 旧版状态文件没有 coverObjectKey,直接读会得到 undefined 且被 JSON.stringify 丢掉,v3 会缺封面
|
2026-10-07 11:11:58 +08:00 |
|
k88936
|
8e59e11f0d
|
重启校验 E2E:创建游戏失败时先退出再解引用
- 在 check('创建游戏成功') 后补 if (!gameId) process.exit(1)
- check 只记失败不中断,created.data 为空时继续取 coverObjectKey 会抛未捕获 TypeError 打崩脚本
|
2026-10-07 11:11:41 +08:00 |
|