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.
242 lines
15 KiB
YAML
242 lines
15 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 "关注" [ref=e40] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/follow?from_nav=1
|
||
- generic [ref=e43]: 关注
|
||
- link "朋友" [ref=e47] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/friend?from_nav=1
|
||
- generic [ref=e50]: 朋友
|
||
- link "我的" [ref=e54] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/user/self?from_nav=1
|
||
- generic [ref=e57]: 我的
|
||
- link "直播" [ref=e62] [cursor=pointer]:
|
||
- /url: https://live.douyin.com/?from_nav=1
|
||
- generic [ref=e65]: 直播
|
||
- link "放映厅" [ref=e69] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/vs?from_nav=1
|
||
- generic [ref=e72]: 放映厅
|
||
- link "短剧" [ref=e76] [cursor=pointer]:
|
||
- /url: https://www.douyin.com/series?from_nav=1
|
||
- generic [ref=e79]: 短剧
|
||
- generic [ref=e81]:
|
||
- img [ref=e84] [cursor=pointer]
|
||
- img [ref=e88] [cursor=pointer]
|
||
- img [ref=e92] [cursor=pointer]
|
||
- generic [ref=e94]:
|
||
- banner [ref=e97]:
|
||
- generic [ref=e99]:
|
||
- generic [ref=e103]:
|
||
- textbox "搜索你感兴趣的内容" [ref=e105]
|
||
- button "搜索" [ref=e107] [cursor=pointer]:
|
||
- img [ref=e108]
|
||
- generic [ref=e110]: 搜索
|
||
- generic [ref=e114]:
|
||
- generic [ref=e116] [cursor=pointer]:
|
||
- img [ref=e118]:
|
||
- img [ref=e119]
|
||
- paragraph [ref=e121]: 充钻石
|
||
- link "客户端" [ref=e126] [cursor=pointer]:
|
||
- /url: ""
|
||
- generic [ref=e127]:
|
||
- generic [ref=e128]:
|
||
- img [ref=e130]:
|
||
- img [ref=e131]
|
||
- paragraph [ref=e134]: 客户端
|
||
- img [ref=e136]
|
||
- generic [ref=e140] [cursor=pointer]:
|
||
- img [ref=e142]:
|
||
- img [ref=e143]
|
||
- paragraph [ref=e145]: 壁纸
|
||
- list [ref=e146]:
|
||
- generic [ref=e150] [cursor=pointer]:
|
||
- img [ref=e152]:
|
||
- img [ref=e153]
|
||
- paragraph [ref=e156]: 通知
|
||
- generic [ref=e160] [cursor=pointer]:
|
||
- img [ref=e162]:
|
||
- img [ref=e163]
|
||
- paragraph [ref=e165]: 投稿
|
||
- button "登录" [ref=e169] [cursor=pointer]:
|
||
- generic [ref=e170]:
|
||
- img [ref=e171]
|
||
- paragraph [ref=e174]: 登录
|
||
- generic [ref=e177]:
|
||
- tablist [ref=e178]:
|
||
- tab "全部" [selected] [ref=e179]
|
||
- tab "公开课" [ref=e180] [cursor=pointer]
|
||
- tab "游戏" [ref=e181] [cursor=pointer]
|
||
- tab "二次元" [ref=e182] [cursor=pointer]
|
||
- tab "音乐" [ref=e183] [cursor=pointer]
|
||
- tab "影视" [ref=e184] [cursor=pointer]
|
||
- tab "美食" [ref=e185] [cursor=pointer]
|
||
- tab "知识" [ref=e186] [cursor=pointer]
|
||
- tab "小剧场" [ref=e187] [cursor=pointer]
|
||
- tab "生活vlog" [ref=e188] [cursor=pointer]
|
||
- tab "体育" [ref=e189] [cursor=pointer]
|
||
- tab "旅行" [ref=e190] [cursor=pointer]
|
||
- tab "亲子" [ref=e191] [cursor=pointer]
|
||
- tab "动物" [ref=e192] [cursor=pointer]
|
||
- tab "三农" [ref=e193] [cursor=pointer]
|
||
- tab "汽车" [ref=e194] [cursor=pointer]
|
||
- tab "美妆穿搭" [ref=e195] [cursor=pointer]
|
||
- tabpanel "全部" [ref=e197]:
|
||
- generic [ref=e203]:
|
||
- generic [ref=e206] [cursor=pointer]:
|
||
- generic [ref=e208]:
|
||
- 'img "唐人街探案(完整版) 国产悬疑推理剧的巅峰,也是唐探宇宙评分最高的一部。#电影解说 #陈思诚 #王宝强 #刘昊然" [ref=e210]'
|
||
- generic [ref=e213]:
|
||
- generic [ref=e214]: 47:57
|
||
- generic [ref=e215]:
|
||
- img [ref=e216]:
|
||
- img [ref=e217]
|
||
- generic [ref=e219]: 2.8万
|
||
- generic [ref=e221]:
|
||
- generic [ref=e222]: "唐人街探案(完整版) 国产悬疑推理剧的巅峰,也是唐探宇宙评分最高的一部。#电影解说 #陈思诚 #王宝强 #刘昊然"
|
||
- generic [ref=e224]:
|
||
- generic [ref=e225]: "@西诺说影"
|
||
- generic [ref=e226]: · 3月25日
|
||
- generic [ref=e229] [cursor=pointer]:
|
||
- generic [ref=e231]:
|
||
- 'img "最疯狂!最具想象力!NASA绝密核动力飞船项目,靠核爆起飞! #猎户座计划 #核脉冲火箭 #核热火箭 #宇宙飞船 #戴森" [ref=e233]'
|
||
- generic [ref=e236]:
|
||
- generic [ref=e237]: 27:22
|
||
- generic [ref=e238]:
|
||
- img [ref=e239]:
|
||
- img [ref=e240]
|
||
- generic [ref=e242]: 3.7万
|
||
- generic [ref=e244]:
|
||
- generic [ref=e245]: "最疯狂!最具想象力!NASA绝密核动力飞船项目,靠核爆起飞! #猎户座计划 #核脉冲火箭 #核热火箭 #宇宙飞船 #戴森"
|
||
- generic [ref=e247]:
|
||
- generic [ref=e248]: "@空间一号"
|
||
- generic [ref=e249]: · 2月4日
|
||
- generic [ref=e252] [cursor=pointer]:
|
||
- generic [ref=e254]:
|
||
- 'img "在贵阳吃到拉肚子!贵州超长vlog来了! #vlog #贵州 #旅游vlog #美食" [ref=e256]'
|
||
- generic [ref=e259]:
|
||
- generic [ref=e260]: 28:32
|
||
- generic [ref=e261]:
|
||
- img [ref=e262]:
|
||
- img [ref=e263]
|
||
- generic [ref=e265]: 4.3万
|
||
- generic [ref=e267]:
|
||
- generic [ref=e268]: "在贵阳吃到拉肚子!贵州超长vlog来了! #vlog #贵州 #旅游vlog #美食"
|
||
- generic [ref=e270]:
|
||
- generic [ref=e271]: "@聂小倩她老板"
|
||
- generic [ref=e272]: · 4月14日
|
||
- generic [ref=e275] [cursor=pointer]:
|
||
- generic [ref=e277]:
|
||
- 'img "被肯爷爷承包的一日三餐 #炸鸡 #夜宵 #一起吃饭吧 #火鸡面 #汉堡" [ref=e279]'
|
||
- generic [ref=e282]:
|
||
- generic [ref=e283]: 09:12
|
||
- generic [ref=e284]:
|
||
- img [ref=e285]:
|
||
- img [ref=e286]
|
||
- generic [ref=e288]: 74.0万
|
||
- generic [ref=e290]:
|
||
- generic [ref=e291]: "被肯爷爷承包的一日三餐 #炸鸡 #夜宵 #一起吃饭吧 #火鸡面 #汉堡"
|
||
- generic [ref=e293]:
|
||
- generic [ref=e294]: "@吃货老外铁蛋儿"
|
||
- generic [ref=e295]: · 3月5日
|
||
- generic [ref=e298] [cursor=pointer]:
|
||
- generic [ref=e300]:
|
||
- img "挑战在1.5㎡的房子里,生存100个小时! 把自己关进1.5㎡,生存100小时开始!" [ref=e302]
|
||
- generic [ref=e305]:
|
||
- generic [ref=e306]: 24:08
|
||
- generic [ref=e307]:
|
||
- img [ref=e308]:
|
||
- img [ref=e309]
|
||
- generic [ref=e311]: 90.4万
|
||
- generic [ref=e313]:
|
||
- generic [ref=e314]: 挑战在1.5㎡的房子里,生存100个小时! 把自己关进1.5㎡,生存100小时开始!
|
||
- generic [ref=e316]:
|
||
- generic [ref=e317]: "@我是庄小周🐳"
|
||
- generic [ref=e318]: · 2月28日
|
||
- generic [ref=e321] [cursor=pointer]:
|
||
- generic [ref=e323]:
|
||
- 'img "突击位之间的顶级博弈思路 #三角洲行动 #三角洲s8蝶变时刻新赛季 #三角洲行动攻略 #假期结束接着洲#无名教学" [ref=e325]'
|
||
- generic [ref=e328]:
|
||
- generic [ref=e330]:
|
||
- img [ref=e331]
|
||
- generic [ref=e334]: 共创
|
||
- generic [ref=e335]: 03:25
|
||
- generic [ref=e336]:
|
||
- img [ref=e337]:
|
||
- img [ref=e338]
|
||
- generic [ref=e340]: 20.1万
|
||
- generic [ref=e342]:
|
||
- generic [ref=e343]: "突击位之间的顶级博弈思路 #三角洲行动 #三角洲s8蝶变时刻新赛季 #三角洲行动攻略 #假期结束接着洲#无名教学"
|
||
- generic [ref=e345]:
|
||
- generic [ref=e346]: "@安澜(三角洲行动)"
|
||
- generic [ref=e347]: · 3月11日
|
||
- generic [ref=e350] [cursor=pointer]:
|
||
- generic [ref=e352]:
|
||
- 'img "精彩解读《肖申克的救赎》 这部电影不是让你去越狱,而是让你去思考,如何在你自己的‘肖申克’里,活出尊严,活出希望。#了不起的精讲团 #影视经典补完计划 #抖音精选 #励志 #肖申克的救赎" [ref=e354]'
|
||
- generic [ref=e357]:
|
||
- generic [ref=e358]: 27:08
|
||
- generic [ref=e359]:
|
||
- img [ref=e360]:
|
||
- img [ref=e361]
|
||
- generic [ref=e363]: 4.0万
|
||
- generic [ref=e365]:
|
||
- generic [ref=e366]: "精彩解读《肖申克的救赎》 这部电影不是让你去越狱,而是让你去思考,如何在你自己的‘肖申克’里,活出尊严,活出希望。#了不起的精讲团 #影视经典补完计划 #抖音精选 #励志 #肖申克的救赎"
|
||
- generic [ref=e368]:
|
||
- generic [ref=e369]: "@张张说"
|
||
- generic [ref=e370]: · 2月3日
|
||
- generic [ref=e373] [cursor=pointer]:
|
||
- generic [ref=e375]:
|
||
- 'img "小佳:潮汕私生女的19年,4次轻生到自我救赎 小佳,旅行义工。四次求死未遂后,她终于明白烂牌也能慢慢打。19岁的小佳,天生被贴上早夭命格、私生女的标签,13岁确诊重度抑郁,吞安眠药、喝农药、头孢配白酒、上吊,四次奔赴死亡都被命运拉回;原生家庭的暴力与冷漠,精神病院的两个月煎熬,九年义务教育都险些没能读完,却成了她挣脱泥沼的铠甲。她16岁独自北漂,分不清地铁和高铁,打最底层的工,住38元一晚的青旅,用脚步丈量世界,在颠沛中治愈自己,更想让同频的人看见:人生从不是定数,绝境里总有光。从求死到求生,她重塑了自己的人生故事。第900位讲述者,小佳,旅行义工。 #凉子 #访谈 #女性 #人生 #治愈" [ref=e377]'
|
||
- generic [ref=e380]:
|
||
- generic [ref=e381]: 28:42
|
||
- generic [ref=e382]:
|
||
- img [ref=e383]:
|
||
- img [ref=e384]
|
||
- generic [ref=e386]: 9.8万
|
||
- generic [ref=e388]:
|
||
- generic [ref=e389]: "小佳:潮汕私生女的19年,4次轻生到自我救赎 小佳,旅行义工。四次求死未遂后,她终于明白烂牌也能慢慢打。19岁的小佳,天生被贴上早夭命格、私生女的标签,13岁确诊重度抑郁,吞安眠药、喝农药、头孢配白酒、上吊,四次奔赴死亡都被命运拉回;原生家庭的暴力与冷漠,精神病院的两个月煎熬,九年义务教育都险些没能读完,却成了她挣脱泥沼的铠甲。她16岁独自北漂,分不清地铁和高铁,打最底层的工,住38元一晚的青旅,用脚步丈量世界,在颠沛中治愈自己,更想让同频的人看见:人生从不是定数,绝境里总有光。从求死到求生,她重塑了自己的人生故事。第900位讲述者,小佳,旅行义工。 #凉子 #访谈 #女性 #人生 #治愈"
|
||
- generic [ref=e391]:
|
||
- generic [ref=e392]: "@凉子访谈录"
|
||
- generic [ref=e393]: · 3月12日
|
||
- generic [ref=e396] [cursor=pointer]:
|
||
- generic [ref=e398]:
|
||
- 'img "一口气看完香港分段式恐怖天花板《怪谈协会》 舒淇袁咏仪互换身份,昔日好闺蜜让你“众叛亲离”#香港恐怖片 #恐怖片 #抖音午夜放映厅 #了不起的精讲团" [ref=e400]'
|
||
- generic [ref=e403]:
|
||
- generic [ref=e404]: 28:23
|
||
- generic [ref=e405]:
|
||
- img [ref=e406]:
|
||
- img [ref=e407]
|
||
- generic [ref=e409]: 1.7万
|
||
- generic [ref=e411]:
|
||
- generic [ref=e412]: "一口气看完香港分段式恐怖天花板《怪谈协会》 舒淇袁咏仪互换身份,昔日好闺蜜让你“众叛亲离”#香港恐怖片 #恐怖片 #抖音午夜放映厅 #了不起的精讲团"
|
||
- generic [ref=e414]:
|
||
- generic [ref=e415]: "@听雨探影"
|
||
- generic [ref=e416]: · 4月12日
|
||
- generic [ref=e419] [cursor=pointer]:
|
||
- generic [ref=e421]:
|
||
- 'img "《岁月》:忠诚,权衡,背叛,40岁正厅级梁致远今日达成! #电视剧岁月 #沧浪之水 #国产好剧 #了不起的精讲团 #一口气看完" [ref=e423]'
|
||
- generic [ref=e426]:
|
||
- generic [ref=e427]: 28:53
|
||
- generic [ref=e428]:
|
||
- img [ref=e429]:
|
||
- img [ref=e430]
|
||
- generic [ref=e432]: 2.6万
|
||
- generic [ref=e434]:
|
||
- generic [ref=e435]: "《岁月》:忠诚,权衡,背叛,40岁正厅级梁致远今日达成! #电视剧岁月 #沧浪之水 #国产好剧 #了不起的精讲团 #一口气看完"
|
||
- generic [ref=e437]:
|
||
- generic [ref=e438]: "@一头倔驴"
|
||
- generic [ref=e439]: · 6天前 |