Fetching metadata from the HF Docker repository... 14 days ago
-
shan chu tupian yuchong xiazai, chidu gengxin an zhen he bing
xiaolongmr
15 days ago
-
移除画图页的客服聊天挂件
xiaolongmr
删除 web/src/app/image/page.tsx 里注入 //dh.z-l.top/chat.js 的 useEffect,
普通用户画图页不再加载该挂件。
背景:zh 挂件由 ecf6886b 加入主线;zlcy/li 远端曾用 e0d9a201 单独 revert 掉,
但后续把 zlcy/li 强制同步到主线时又把挂件带回了线上,故在主线一并移除。 -
Revert "失败卡片补兜底「查看官网」入口"
xiaolongmr
This reverts commit 0075c950d9b85b912a12531beb709356550fab2a. -
失败卡片补兜底「查看官网」入口
xiaolongmr
请求在创建上游会话之前就被上游挡掉时(如伪装 404 "Model not found"),
卡片上没有 conversationId,原有的「查看官网对话」取证按钮不渲染。
现在这种卡片会在「重新生成这一张」左边显示一个直达 chatgpt.com 的
「查看官网」链接,方便用户自己去官网核对账号状态;后端明确
canViewOfficial=false(账号配额耗尽)时仍然不渲染。画图页与批量页同步。 -
普通用户画图页加入客服聊天挂件
xiaolongmr
在 web/src/app/image/page.tsx 用 useEffect 注入 //dh.z-l.top/chat.js,
保留原样的 async 与 fold 属性(next/script 会剥掉非标准属性故手动注入),
仅 role=normal 的普通用户加载,管理员/内部账号不挂载。 -
撤回提示词编辑器「图N 引用参考图」与 @ 唤出缩略图功能
xiaolongmr
该功能几轮修复后仍无法稳定使用(@ 选图后立刻用输入法打字时空格丢失、
缩略图与光标行为异常),按用户要求整体撤掉,输入框恢复为普通 textarea。
- prompt-composer.tsx 回到 1b90ec42(功能引入前)的 textarea 版本,
移除 contentEditable chip 编辑器、序列化/光标偏移换算、@ 候选菜单、
缩略图渲染与自动补空格等全部相关代码
- 画图页 / 批量生图页 / 聊天页 / 产品图页 4 个调用方同步移除
referenceTokens 传参与 PromptComposerEditorHandle 类型标注
- 移除画图页的「写『图1』『图片1』或按 @ 都能引用参考图」提示文案
tsc 与 eslint 均通过。
16 days ago
-
提示词编辑器对齐 infinite-canvas 的 chip 输入架构,修「@选图/手打标签后空格丢失」
xiaolongmr
换掉「每次输入都重建 DOM」的做法,迁移 infinite-canvas 的核心机制:
- 输入时只在「DOM 序列化结果 != 目标字符串」才重建 DOM 并按字符串偏移还原光标,
普通打字(含 IME 组字)完全不碰 DOM,输入法不再被冲掉
- 空格以 DOM 为准:chip 集合相同但 DOM 缺空格时(如「的」顶掉空格的那次输入)
也会重建,杜绝「空格只在字符串里、界面看不到」的脱节
- @ 选中插入后光标落进空格文本节点内部(原先悬在节点边界,caret 矩形是 0x0)
- domPointAtOffset 落 chip 边界时优先落进相邻文本节点内部,不再悬空
- 迁移 infinite-canvas 的原子删除:keydown 拦截紧贴 chip 的退格/Delete 并
preventDefault 后整块删除,避免与浏览器原生删除重复执行
真机验证(agent-browser 真实按键):@选图后立刻打字、手打标签、逐字输入、
中文混排、chip 原子边界(左右键/退格/Delete)、双 chip 相邻删除共 14 例全过。 -
提示词引用参考图:同时支持「图片1」写法
xiaolongmr
用户要求除「图1」外也认「图片1」。实现为同义别名,命中任一都渲染同一张缩略图,
插入提示词时仍写主标签「图1」,不改变既有输出。
- PromptReferenceToken 新增可选 aliases;referenceIndexByLabel 与
referenceLabels 都把 label + aliases 一起收录,referenceLabels 继续按长度倒序。
倒序很关键:「图片12」必须先于「图片1」匹配,否则会被拆成「图片1」+「2」。
- 两个 image-composer(画图页 / 批量页)都传 aliases: [`图片${index + 1}`]。
- mentionCandidates 的搜索串也拼上别名,「@图片」能筛出候选。
- 缩略图角标的取号正则放宽成 /^@?图(?:片)?/,否则「图片1」会显示成「片1」。
验证:
- 断言 artifacts/prompt-refs/verify-alias.mjs,23 条全绿:两种写法命中同一张图、
混用不串、越界 图片9 不命中、图片12 优先于图片1、别名在退格/左右键/补空格
四条路径上与主标签完全等价。另回归 verify-cursor.mjs 18 条仍全绿。
- 特别确认「图片1」里的「图1」子串不会被当成独立标签误匹配
(图1 要求「图」紧跟「1」,图片1 中不成立)。
- 真机 artifacts/prompt-refs/alias-check.sh,7 用例全绿:图片1/图片2 各渲染对应
缩略图、与图1 混用正确、越界图片9 不渲染、caret=4 按← 一下跳到 1、
退格整块删成「用 换」、@图片 能筛出候选、@ 回车仍插入「图1」。 -
画图页提示词支持「图N」引用参考图:输入框内直接显示缩略图、可点开大图、可用 @ 唤出候选
xiaolongmr
- PromptComposerTextarea 新增 referenceTokens:高亮层把命中的「图1」「图2」原地画成缩略图。
外层 inline-block 用 visibility:hidden 的文字占位、内层绝对定位铺满那一格,所以缩略图
不改变文本流里的宽高,多行混排时光标也不会错位(复用 $技能 已有的镜像层机制)。
- 缩略图可点击看大图(复用 ImageLightbox);mousedown 阻止默认行为,点击不抢输入框焦点与光标。
- 新增 @ 唤出候选:输入 @ 后在光标处弹出列表(缩略图 + 图N + 文件名),上下键选择、
回车插入、Esc 或点击外部关闭;光标坐标用镜像 div 量算,菜单会按空间自动向上翻。
- 退格 / 删除把「图N」按整体删掉(含可选的 @ 和尾随空格),不会删一半留下孤零零的「图」。
- 输入法组字期间临时关掉高亮层:高亮生效时 textarea 文字是透明的,不关掉中文打字会看不见。
- mention 与选中项的真值放在 ref:textarea 光标一动 React 会补发 onSelect,
只认 state 会让键盘选中的项在与按键同一批事件里被打回第一项。
- 画图页与批量生图页的输入框都接上了(批量页是画图页的副本,保持同步)。 -
撤回画图页内的批量生图,改为后续独立页面承载
xiaolongmr
用户决定不在画图页里做批量(不新增页签/原地展开),改为新页面方案。
代码回到 dec77578 之前的状态:
- image-composer.tsx / page.tsx 完全还原,批量入口、多条目编辑器、
handleBatchSubmit 全部移除,画图页输入区回到原来的单张形态
- 保留 docs/批量生图-方案.md(设计文档,新页面继续沿用第 8 节已确认的需求) -
画图页批量生图前端:一个入口 + 原地展开的多行编辑器
xiaolongmr
- image-composer.tsx:输入卡工具条内新增批量入口(data-testid=batch-toggle),点开后同一张卡
原地展开成多行编辑器(不是新页签、不新增标签)——每行 = 提示词 + 参考图 + 张数 + 参数。
- page.tsx:handleBatchSubmit —— 每行展开成 N 个独立单图任务追加到当前会话,复用现有队列,
后端 0 改动;额度预估按总张数算,不足时走原有充值提示。
- docs/批量生图-方案.md:补第 8 节(需求定稿:参考图与张数无关、不选参考图 = 纯文生图、
结果沿用画图页消息流、不做批次聚合卡片)。
- 按用户要求先只做前端样式与流程,服务端批次模型(第二期)未开始。 -
生图失败:账号配额耗尽当场出池并换号,失败卡片收掉「查看官网对话」
xiaolongmr
上游「你已达到 Free 套餐的图像生成请求上限」这类只回文字、本轮没生图的终局答复,
以前被一律当成 content_policy_violation 抛给用户:账号留在池子里、本地配额对免费号是
「未知」算不到 0 → 后续每个请求都再挑中它,每个用户都吃一次同样的报错。
- conversation.py:新增 is_image_quota_exhausted_message()(中/英文原话)→ 命中时
code=image_quota_exhausted(429/rate_limit_error)、can_view_official=False;号池层
换号重试(预算 max(2, image_poll_max_attempts),本机该配置是 1,直接用等于零换号)。
- account_service.py:新增 mark_image_quota_exhausted() —— 当场置「限流 / quota=0 /
image_quota_unknown=False」,由既有 account-limited-watcher 远程复核后自动回池。
- 号池被这类账号掏空时仍抛内部英文 no available image quota(站长按这串配了报错文案规则)。
- 前端:StoredImage.canViewOfficial ← task.can_view_official(page.tsx 三处映射 + 变更检测,
image-results.tsx 按钮条件加 canViewOfficial !== false;老记录没这字段 = 保持旧行为)。
- 测试:test_image_upstream_note.py +8(配额识别、号池分类、换号拿到图、整池掏空仍报错、
端到端落库断言 can_view_official is False);test_account_image_capabilities.py +2。
全量 pytest 20 failed / 954 passed,FAILED 清单与基线 full-test-6.log 逐行一致。 -
撤回批量生图功能(48b1e94a)
xiaolongmr
用户决定暂不加该功能,代码回到 48b1e94a 之前的状态:
- image-composer.tsx / page.tsx / prompt-composer.tsx 完全还原,
不再有「批量」入口、多行编辑器与 handleBatchSubmit
- 保留 docs/批量生图-方案.md(设计文档,不影响构建与运行) -
画图页新增批量生图:一个入口 + 原地展开的多行编辑器
xiaolongmr
- image-composer: 工具条新增「批量」入口,同一张输入卡原地展开为多行
提示词编辑器(行号 / 行内张数 stepper / @@N 语法 / # 注释 / 回车新增
行 / 粘贴多行自动拆分 / 逐行解析状态点);批量态复用现有参数 chip,
右侧显示「预计 X 积分 + N 行 · 共 M 张 · 忽略 K 行」,提交后自动收起
回单张模式,不新增页面或页签
- page: handleBatchSubmit 按总张数做积分/号池预检后,每行展开为一个
queued turn 交给现有会话队列顺序执行,结果沿用现有消息流渲染
- prompt-composer: SubmitButton 支持 testId,便于真机验证 -
前端撤销存量用户的昵称留空处理,弹窗留空只针对新注册用户
xiaolongmr
- 撤回 nicknameDraftValue:老用户打开个人资料弹窗仍预填现有昵称(名字与展示均不动)
- image/page.tsx、top-nav.tsx 恢复为 profile.name || "" 原逻辑
- 只保留后端新注册分支留空 + _normalize_item 空名豁免(新用户弹窗天然为空)
- 空名展示兜底(dashboard Top 榜、卡密兑换人)仅影响新注册的空名用户 -
微信新注册用户不再预置「微信用户 xxxx」内置昵称
xiaolongmr
- auth_service: 新注册微信用户 name 留空;_normalize_item 对带
wechat_openid 的记录保留空名,避免被兜底成内置默认名
- 前端昵称弹窗初始值改为留空(新增 nicknameDraftValue),存量
临时名用户也不会再被预填
- dashboard Top 榜、卡密兑换人展示补空名兜底 -
在线人数改为全站心跳:覆盖所有页面 + 关闭页面立即下线
xiaolongmr
-
实时在线人数:画图页纯文字展示 + 管理员数据看板
xiaolongmr
-
官网来源取证 + 生图终局判定 + 对话卡片渲染
xiaolongmr
- 官网来源取证:每张结果图可生成 chatgpt.com 官方匿名分享链接自证「确实是官网出的图」;
出图即固化(独立线程,不占积分/额度/并发槽),到期按保留时长自动回收并隐藏上游会话
- 生图失败判定:识别内容策略拒绝(is_error 终局文本)不再白等到超时;同一张图按 id 去重,
修 n=1 出两张重复图;失败卡片补「ChatGPT 官网原话」与「查看官网」
- 提示词比例追加:默认开启,仅用户主动选比例时追加(智能比例不受影响)
- 对话渲染:app_block 裸 JSON 转 html 围栏、官网 DIL 卡片/问卷降级渲染、多题勾选统一作答、
思考摘要不展示
- 内容审核:良性复合词白名单(灵感爆炸/色彩爆炸/爆炸头等),修设计海报误拦
测试:全量 888 passed / 20 failed(与基线一致,零新增);tsc、eslint、next build 均干净
18 days ago
-
签到积分账本与有效期 + 内容审核反绕过加固 + 签到文案配置化
xiaolongmr
签到积分
- 新增 checkin_credit_remaining 真账本:仅 source=checkin 入账,仅在基础池扣减点冲减
- 新增 checkin_credit_valid_days(0=永久,>0 发放成带 expires_at 的限时券,上限 3650)
- 保存设置时若该值变化,自动重算已发放的签到积分(保留各批次原节奏)
- 弹窗「我的积分」底部提示:签到赠送剩余可用 N 积分,有 M 积分将于 K 天后到期,请及时使用~
内容审核
- 繁简归一(services/_zh_t2s.py)、17 语词表、HTML实体/百分号/Unicode/Base64 变形解码
- 否定语境豁免、良性复合词、组合规则间距窗口、ASCII 词边界、弱词机制
其他
- 签到页文案(公告/弹窗/页脚/二维码)改为后台配置 checkin_content
- 新增回归 test/test_checkin_credit_ledger.py
22 days ago
-
fix: harden HF persistence and runtime workflows
xiaolongmr
23 days ago
-
1.07
xiaolongmr
30 days ago
-
测试
xiaolongmr
-
编辑功能(测试)
xiaolongmr
-
添加编辑
xiaolongmr
-
优化
xiaolongmr
-
优化ui
xiaolongmr
-
优化
xiaolongmr
-
优惠
xiaolongmr
-
修复比例bug
xiaolongmr
-
优化1
xiaolongmr
-
内部测试
xiaolongmr
-
迁移上游 v1.8.0 核心能力
xiaolongmr
-
优化
xiaolongmr
-
整合功能更新并排除本地恢复产物
xiaolongmr
-
修复生图时间显示问题
xiaolongmr
-
修复模型切换额度不限时的问题
xiaolongmr
-
页面优化
xiaolongmr
-
添加4kapi支持
xiaolongmr
-
添加api的功能
xiaolongmr
-
更新卡密
xiaolongmr
-
添加 Free 号池死号清理和图片拖拽导入
xiaolongmr
-
Show user credits independently from pool quota
xiaolongmr
-
Update image UI and deployment settings
xiaolongmr
-
Fix image page fixed layout scrolling
xiaolongmr
-
Rename image key dialog title
xiaolongmr
-
Polish image key and memory controls
xiaolongmr
-
Fix account pool quota and conversation cleanup
xiaolongmr
-
Simplify user account pool choices
xiaolongmr
-
Add shared account pool controls
xiaolongmr