This commit consolidates a large set of host-mode security and UX fixes across backend and frontend. Security / execution model: - Make permission/execution mode switches apply immediately (no deferred pending-only behavior). - Keep runtime mode change notices durable and visible via user-message guidance path. - Add explicit runtime message source taxonomy support and persistence: user / presend / guidance / notify / sub_agent / background_command. - Ensure guidance/notify insertion is batched per tool-cycle so mid-run inserts are committed together. - Separate notify from guidance semantics for mode-change notices. - Add direct-mode auto-fallback handling visibility on frontend. Approval and command gating: - Align run_command approval pre-check logic with docker behavior for approval/auto_approval modes in host execution paths. - Keep approval retry flow and final-result semantics intact when permission errors trigger approval. - Externalize forbidden command keyword list into JSON config: config/forbidden_commands.json. - Update forbidden command rejection message to user-facing wording: 用户不允许执行包含“... ”的指令. Prompt/runtime guidance: - Refine execution-mode runtime rule text to avoid endless workaround loops: one safe alternative first, then request switching to direct mode when truly required. Chat rendering / message UX: - Prevent injected guidance/notify user-messages from incorrectly triggering assistant work header/timer chain. - Restore correct visibility after history reload while preserving runtime-source behavior. - Update user-header icon/label rendering by message source: - guidance -> 引导 + navigation icon - notify/sub_agent/background_command -> 通知 + bell icon - user/presend -> keep normal user header. - Add new icons: static/icons/navigation.svg, static/icons/bell.svg. Approval panel UX: - Convert desktop approval panel from layout-compress sidebar to overlay + blur sheet. - Fix panel transition behavior (remove unintended vertical motion; use dedicated desktop overlay transition). - Improve approval result display: - decision and reason split lines, - green/red status styling, - multiline reason rendering, - auto-collapse delay adjusted to 3s. Execution mode TTL feedback: - When direct mode auto-expires to sandbox, frontend menu state is updated from status snapshot. - Show non-auto-dismiss warning toast to explicitly notify auto-fallback. Misc consistency updates: - Execution mode label text cleanup in composer. - Runtime notice wording normalization (权限模式修改为..., 执行环境修改为...). Build/test notes: - Frontend rebuilt after UI changes. - Smoke tests passed for server refactor path.
256 lines
13 KiB
YAML
256 lines
13 KiB
YAML
- generic [active] [ref=e1]:
|
||
- button "开启读屏标签" [ref=e2]
|
||
- generic: 读屏标签已关闭
|
||
- generic [ref=e4]:
|
||
- generic [ref=e6]:
|
||
- link [ref=e7] [cursor=pointer]:
|
||
- /url: //www.douyin.com/jingxuan
|
||
- generic [ref=e13]:
|
||
- generic [ref=e15]:
|
||
- link "精选" [ref=e19] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/jingxuan?from_nav=1
|
||
- generic [ref=e22]: 精选
|
||
- link "推荐" [ref=e26] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/?recommend=1&from_nav=1
|
||
- generic [ref=e29]: 推荐
|
||
- link "搜索" [ref=e33] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/aisearch?from_nav=1
|
||
- generic [ref=e36]: 搜索
|
||
- link "关注 80" [ref=e40] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/follow?from_nav=1
|
||
- generic [ref=e43]: 关注
|
||
- generic [ref=e44]: "80"
|
||
- link "朋友 3" [ref=e48] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/friend?from_nav=1
|
||
- generic [ref=e51]: 朋友
|
||
- generic [ref=e52]: "3"
|
||
- link "我的" [ref=e56] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/user/self?from_nav=1
|
||
- generic [ref=e59]: 我的
|
||
- link "直播" [ref=e64] [cursor=pointer]:
|
||
- /url: https://live.douyin.com/?from_nav=1
|
||
- generic [ref=e67]: 直播
|
||
- link "放映厅" [ref=e71] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/vs?from_nav=1
|
||
- generic [ref=e74]: 放映厅
|
||
- link "短剧" [ref=e78] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/series?from_nav=1
|
||
- generic [ref=e81]: 短剧
|
||
- generic [ref=e83]:
|
||
- img [ref=e86] [cursor=pointer]
|
||
- img [ref=e90] [cursor=pointer]
|
||
- img [ref=e94] [cursor=pointer]
|
||
- generic [ref=e96]:
|
||
- banner [ref=e99]:
|
||
- generic [ref=e101]:
|
||
- generic [ref=e105]:
|
||
- textbox "搜索你感兴趣的内容" [ref=e107]
|
||
- button "搜索" [ref=e109] [cursor=pointer]:
|
||
- img [ref=e110]
|
||
- generic [ref=e112]: 搜索
|
||
- generic [ref=e116]:
|
||
- generic [ref=e121] [cursor=pointer]:
|
||
- img [ref=e123]:
|
||
- img [ref=e124]
|
||
- paragraph [ref=e126]: 充钻石
|
||
- link "客户端" [ref=e131] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/download/pc/obj/douyin-pc-web/douyin-pc-client/7044145585217083655/releases/344418764/7.7.0/darwin-universal/douyin-v7.7.0-darwin-universal.dmg
|
||
- generic [ref=e132]:
|
||
- generic [ref=e133]:
|
||
- img [ref=e135]:
|
||
- img [ref=e136]
|
||
- paragraph [ref=e139]: 客户端
|
||
- img [ref=e141]
|
||
- generic [ref=e147] [cursor=pointer]:
|
||
- img [ref=e149]:
|
||
- img [ref=e150]
|
||
- generic [ref=e152]: 壁纸
|
||
- list [ref=e153]:
|
||
- listitem [ref=e155]:
|
||
- generic [ref=e158] [cursor=pointer]:
|
||
- img [ref=e160]:
|
||
- img [ref=e161]
|
||
- paragraph [ref=e164]: 通知
|
||
- list [ref=e165]:
|
||
- listitem [ref=e167]:
|
||
- generic [ref=e170] [cursor=pointer]:
|
||
- img [ref=e172]:
|
||
- img [ref=e173]
|
||
- paragraph [ref=e177]: 私信
|
||
- generic [ref=e181] [cursor=pointer]:
|
||
- img [ref=e183]:
|
||
- img [ref=e184]
|
||
- paragraph [ref=e186]: 投稿
|
||
- link [ref=e189] [cursor=pointer]:
|
||
- /url: //www.douyin.com/user/self
|
||
- listitem [ref=e190]
|
||
- generic [ref=e192]:
|
||
- tablist [ref=e193]:
|
||
- tab "全部" [selected] [ref=e194]
|
||
- tab "公开课" [ref=e195] [cursor=pointer]
|
||
- tab "游戏" [ref=e196] [cursor=pointer]
|
||
- tab "二次元" [ref=e197] [cursor=pointer]
|
||
- tab "音乐" [ref=e198] [cursor=pointer]
|
||
- tab "影视" [ref=e199] [cursor=pointer]
|
||
- tab "美食" [ref=e200] [cursor=pointer]
|
||
- tab "知识" [ref=e201] [cursor=pointer]
|
||
- tab "小剧场" [ref=e202] [cursor=pointer]
|
||
- tab "生活vlog" [ref=e203] [cursor=pointer]
|
||
- tab "体育" [ref=e204] [cursor=pointer]
|
||
- tab "旅行" [ref=e205] [cursor=pointer]
|
||
- tab "亲子" [ref=e206] [cursor=pointer]
|
||
- tab "动物" [ref=e207] [cursor=pointer]
|
||
- tab "三农" [ref=e208] [cursor=pointer]
|
||
- tab "汽车" [ref=e209] [cursor=pointer]
|
||
- tab "美妆穿搭" [ref=e210] [cursor=pointer]
|
||
- tabpanel "全部" [ref=e212]:
|
||
- generic [ref=e218]:
|
||
- generic [ref=e221] [cursor=pointer]:
|
||
- generic [ref=e223]:
|
||
- 'img "3万英镑买下事故车宝马m3,性能爆改尝试赢下兰博基尼飓风 #青年创作者成长计划 #马特修车 #宝马M3 #汽车知识分享 #BMW" [ref=e225]'
|
||
- generic [ref=e228]:
|
||
- generic [ref=e229]: 39:48
|
||
- generic [ref=e230]:
|
||
- img [ref=e231]:
|
||
- img [ref=e232]
|
||
- generic [ref=e234]: 3.4万
|
||
- generic [ref=e236]:
|
||
- generic [ref=e237]: "3万英镑买下事故车宝马m3,性能爆改尝试赢下兰博基尼飓风 #青年创作者成长计划 #马特修车 #宝马M3 #汽车知识分享 #BMW"
|
||
- generic [ref=e238]:
|
||
- generic [ref=e239]:
|
||
- generic [ref=e240]: "@carman"
|
||
- generic [ref=e241]: · 3月15日
|
||
- img [ref=e243]
|
||
- generic [ref=e247] [cursor=pointer]:
|
||
- generic [ref=e249]:
|
||
- 'img "知否放大镜 105|中毒第一日,太医的权衡 #知否放大镜 #飞奔啊蜗牛 #知否解说 #知否知否应是绿肥红瘦 #了不起的精讲团" [ref=e251]'
|
||
- generic [ref=e254]:
|
||
- generic [ref=e255]: 44:03
|
||
- generic [ref=e256]:
|
||
- img [ref=e257]:
|
||
- img [ref=e258]
|
||
- generic [ref=e260]: 3.0万
|
||
- generic [ref=e262]:
|
||
- generic [ref=e263]: "知否放大镜 105|中毒第一日,太医的权衡 #知否放大镜 #飞奔啊蜗牛 #知否解说 #知否知否应是绿肥红瘦 #了不起的精讲团"
|
||
- generic [ref=e265]:
|
||
- generic [ref=e266]: "@飞奔啊蜗牛"
|
||
- generic [ref=e267]: · 4天前
|
||
- generic [ref=e270] [cursor=pointer]:
|
||
- generic [ref=e272]:
|
||
- 'img "39分钟伤感DJ音乐合集🎧戴上耳机 效果更佳🎧#音乐 #音乐分享 #音乐推荐 #伤感音乐 #情感" [ref=e274]'
|
||
- generic [ref=e277]:
|
||
- generic [ref=e278]: 38:23
|
||
- generic [ref=e279]:
|
||
- img [ref=e280]:
|
||
- img [ref=e281]
|
||
- generic [ref=e283]: 27.3万
|
||
- generic [ref=e285]:
|
||
- generic [ref=e286]: "39分钟伤感DJ音乐合集🎧戴上耳机 效果更佳🎧#音乐 #音乐分享 #音乐推荐 #伤感音乐 #情感"
|
||
- generic [ref=e288]:
|
||
- generic [ref=e289]: "@暂别"
|
||
- generic [ref=e290]: · 4月17日
|
||
- generic [ref=e293] [cursor=pointer]:
|
||
- generic [ref=e295]:
|
||
- 'img "最好的深夜食堂是那声我饿了之后,朋友家厨房亮起的灯 #发癫吧后浪 #在拍一种很新的vlog" [ref=e297]'
|
||
- generic [ref=e300]:
|
||
- generic [ref=e301]: 38:32
|
||
- generic [ref=e302]:
|
||
- img [ref=e303]:
|
||
- img [ref=e304]
|
||
- generic [ref=e306]: 128.5万
|
||
- generic [ref=e308]:
|
||
- generic [ref=e309]: "最好的深夜食堂是那声我饿了之后,朋友家厨房亮起的灯 #发癫吧后浪 #在拍一种很新的vlog"
|
||
- generic [ref=e311]:
|
||
- generic [ref=e312]: "@发癫吧,后浪!"
|
||
- generic [ref=e313]: · 2月5日
|
||
- generic [ref=e316] [cursor=pointer]:
|
||
- generic [ref=e318]:
|
||
- 'img "太抽象了!金基德《空房间》 #7ero #可爱解说 #了不起的精讲团" [ref=e320]'
|
||
- generic [ref=e323]:
|
||
- generic [ref=e324]: 40:26
|
||
- generic [ref=e325]:
|
||
- img [ref=e326]:
|
||
- img [ref=e327]
|
||
- generic [ref=e329]: 7.0万
|
||
- generic [ref=e331]:
|
||
- generic [ref=e332]: "太抽象了!金基德《空房间》 #7ero #可爱解说 #了不起的精讲团"
|
||
- generic [ref=e334]:
|
||
- generic [ref=e335]: "@-7ero-"
|
||
- generic [ref=e336]: · 4月12日
|
||
- generic [ref=e339] [cursor=pointer]:
|
||
- generic [ref=e341]:
|
||
- img "有缘之人可以逆转时光 回到过去" [ref=e343]
|
||
- generic [ref=e346]:
|
||
- generic [ref=e347]: 44:50
|
||
- generic [ref=e348]:
|
||
- img [ref=e349]:
|
||
- img [ref=e350]
|
||
- generic [ref=e352]: 110.6万
|
||
- generic [ref=e354]:
|
||
- generic [ref=e355]: 有缘之人可以逆转时光 回到过去
|
||
- generic [ref=e357]:
|
||
- generic [ref=e358]: "@觉罗"
|
||
- generic [ref=e359]: · 2月4日
|
||
- generic [ref=e362] [cursor=pointer]:
|
||
- generic [ref=e364]:
|
||
- 'img "突击位之间的顶级博弈思路 #三角洲行动 #三角洲s8蝶变时刻新赛季 #三角洲行动攻略 #假期结束接着洲#无名教学" [ref=e366]'
|
||
- generic [ref=e369]:
|
||
- generic [ref=e371]:
|
||
- img [ref=e372]
|
||
- generic [ref=e375]: 共创
|
||
- generic [ref=e376]: 03:25
|
||
- generic [ref=e377]:
|
||
- img [ref=e378]:
|
||
- img [ref=e379]
|
||
- generic [ref=e381]: 20.1万
|
||
- generic [ref=e383]:
|
||
- generic [ref=e384]: "突击位之间的顶级博弈思路 #三角洲行动 #三角洲s8蝶变时刻新赛季 #三角洲行动攻略 #假期结束接着洲#无名教学"
|
||
- generic [ref=e386]:
|
||
- generic [ref=e387]: "@安澜(三角洲行动)"
|
||
- generic [ref=e388]: · 3月11日
|
||
- generic [ref=e391] [cursor=pointer]:
|
||
- generic [ref=e393]:
|
||
- 'img "最顶级的下饭细糠!越品越有味的养老神剧!《知否》P1 #了不起的精讲团 #影娱漫谈编辑部 #知否 #知否知否应是绿肥红瘦" [ref=e395]'
|
||
- generic [ref=e398]:
|
||
- generic [ref=e399]: 42:46
|
||
- generic [ref=e400]:
|
||
- img [ref=e401]:
|
||
- img [ref=e402]
|
||
- generic [ref=e404]: 1.3万
|
||
- generic [ref=e406]:
|
||
- generic [ref=e407]: "最顶级的下饭细糠!越品越有味的养老神剧!《知否》P1 #了不起的精讲团 #影娱漫谈编辑部 #知否 #知否知否应是绿肥红瘦"
|
||
- generic [ref=e409]:
|
||
- generic [ref=e410]: "@薯条说影"
|
||
- generic [ref=e411]: · 4月2日
|
||
- generic [ref=e414] [cursor=pointer]:
|
||
- generic [ref=e416]:
|
||
- 'img "与你相遇 只记欢喜 不问归期…… #乐山大佛 #爱情片 #约会#恋爱vlog #青年创作者成长计划" [ref=e418]'
|
||
- generic [ref=e421]:
|
||
- generic [ref=e422]: 37:07
|
||
- generic [ref=e423]:
|
||
- img [ref=e424]:
|
||
- img [ref=e425]
|
||
- generic [ref=e427]: 6.0万
|
||
- generic [ref=e429]:
|
||
- generic [ref=e430]: "与你相遇 只记欢喜 不问归期…… #乐山大佛 #爱情片 #约会#恋爱vlog #青年创作者成长计划"
|
||
- generic [ref=e432]:
|
||
- generic [ref=e433]: "@冉十一"
|
||
- generic [ref=e434]: · 1周前
|
||
- generic [ref=e437] [cursor=pointer]:
|
||
- generic [ref=e439]:
|
||
- 'img "日剧《母亲》万字解说全集,大家周末愉快! #日剧母亲 #芦田爱菜 #松雪泰子 #母爱 #了不起的精讲团" [ref=e441]'
|
||
- generic [ref=e444]:
|
||
- generic [ref=e445]: 43:28
|
||
- generic [ref=e446]:
|
||
- img [ref=e447]:
|
||
- img [ref=e448]
|
||
- generic [ref=e450]: 20.1万
|
||
- generic [ref=e452]:
|
||
- generic [ref=e453]: "日剧《母亲》万字解说全集,大家周末愉快! #日剧母亲 #芦田爱菜 #松雪泰子 #母爱 #了不起的精讲团"
|
||
- generic [ref=e455]:
|
||
- generic [ref=e456]: "@生活侧影"
|
||
- generic [ref=e457]: · 4月11日
|
||
- generic [ref=e462]:
|
||
- img [ref=e463] [cursor=pointer]
|
||
- img [ref=e466] [cursor=pointer]
|
||
- img [ref=e472] |