Repository navigation
v2026.10.19 - #792
Closed
stephamie7 wants to merge 27 commits into
Closed
v2026.10.19#792stephamie7 wants to merge 27 commits into
stephamie7 wants to merge 27 commits into
Conversation
Add a configurable data retention policy under Preferences with three independent periods — log, message, and session retention — each supporting "keep forever" (0 days). Changing the policy triggers an automatic cleanup of the now-expired data. Backend: new flocks/retention package (policy / cleanup / scheduler), storage-authoritative message and session deletion, a log-retention override applied before Log.init, and three admin-only config endpoints plus a guard on the generic config update so the policy cannot be changed without admin. The scheduler runs shortly after startup, every 6 hours, and on each policy change, serialized by a cross-process file lock. Frontend: a DataRetentionSection in Settings (admin-only) with preview, confirmation, cleanup-result polling with timeout and manual refresh, and zh-CN / en-US i18n.
…etes Address the final review round on the data retention policy. - Config: a payload carrying both dataRetention and data_retention could slip a policy change past the admin guard: a null camelCase value read as "unchanged" while the save (validate -> dump -> re-validate) wrote the snake_case one. ConfigInfo now collapses the two spellings into one canonical value, so the guard, the saved value and GET always agree. - Sessions: the retention delete passes a precheck that runs under the tree lifecycle locks before the generation bump, using the full busy check (a running loop, or a non-idle status such as dreaming or compacting). A tree that must be kept is never stopped, cleared, or has its generation bumped. Message trimming uses the same busy check. - WebUI: a failed manual refresh after a polling timeout keeps the "status unknown" state and the refresh button instead of falling into a blank "never ran" view.
The admin guard on the generic config endpoint resolved the incoming
dataRetention through ConfigInfo (which collapses camelCase/snake_case), but
still hand-picked the on-disk value. With {"dataRetention": null,
"data_retention": {...forever...}} on disk the loader enforces "keep forever"
while the guard compared against the default, so a member could save 30/0/0
unchallenged and the scheduler was not notified. Both sides now go through
one resolver; if the on-disk value cannot be resolved, any concrete change
requires admin.
… (INC-E54483E0) The what's-new notice reads GET /api/update/current-release, which only looked up the OSS Core tag on GitHub/Gitee, so a Pro install showed the Core release notes and never the notes published with its Pro bundle. - Record the Console release notes in the Pro install marker. - current-release returns the installed Pro bundle and its notes when the marker names a bundle; markers without notes borrow the Console manifest only when it is the installed release (bundle, component, build and release ids agree; Console core not newer than the recorded core). - Cache Pro lookups by the whole marker so same-number component updates and repacks are picked up at once. - WebUI titles the notice "Flocks Pro vX" and keys it by bundle, core and component versions, like the Pro update dismissal key.
feat(retention): add data retention policy to preferences
…n none is attached Per the REA plugin PRD v0.7 / prototype v0.10: - The Rex shortcut, the plugin square's install / use / repair and the in-conversation status card only fill the install guide, the analysis prompt or the repair request into the message box; no message, conversation or install starts until the user sends it. The prefill goes to the conversation it was clicked in. A failed install continues in its install conversation: the repair request becomes its draft and the conversation opens in Build mode (filled in place when it is the one on screen). - The install guide ends with "安装执行前请再次和我确认你计划安装哪些模块?"; the analysis prompt is now "帮我使用 REA 逆向工具分析上传的附件文件". - New built-in hook flocks/rea/attachment_guard.py: when a message carries that prompt, names no link or path, and the conversation has no file the user attached (archived messages included), Rex is told to ask for the file and every tool call of the conversation is stopped until the user's next message. It blocks before counting, so a failed or timed-out count keeps the block. - rea_analysis status tells the model how many files the user attached; the tool description reads the short prompt as "the attached files". - Drop the install-session reserve / record routes the shortcut no longer calls; the install tool still records the install conversation.
- 有顶栏的页面把 BackendStatusBanner 以 inline 方式放进 Layout 内容列、<main> 之前,占自己的高度把页面往下推,不再和 z-50 的顶栏、抽屉、全屏预览抢层级;App 级的窗口横幅只在没有 Layout 的页面(登录、初始化管理员、强制改密)显示 - 健康检查失败后每 5 秒重查一次,恢复为 connected 或最后一个使用方卸载就停;正常状态仍是每小时一次 - 首次健康检查有结果之前不渲染横幅,加载时不再闪一下黄色「正在连接」 - 深色模式下横幅背景改为不透明色 - 补 BackendStatusBanner、useBackendStatus、Layout 的回归用例
…ack under the threshold (INC-A9A3F82F)
…lling running agent tasks (INC-DEF74BBD)
feat(rea): fill REA guides into the message box and ask for files when none is attached
fix(updater): Pro 实例的更新内容通知改用 Pro bundle 自己的发版说明
…1017 feat(provider): 新增 DeepSeek-V4.1-Flash-1017
fix(webui): 后端断连横幅不再被顶栏压住,恢复后自动消失
fix(webui): 普通用户不再看到只有管理员能用的模型测试入口
fix(session): 长任务压缩生效后清零溢出计数,不再在第 4 次溢出时被终止 (INC-A9A3F82F)
fix(webui): 后台保活页面不再把当前页面整体滚走 (INC-1F823A8D)
fix(task): 任务中心默认 10 个并发,运行中的 agent 任务不再被隐藏上限卡住 (INC-DEF74BBD)
chore(release): bump version to v2026.10.19
…ac96228e0 chore: sync flocksdev dev into dev (2026-10-19)
…n-37505197e688 chore: sync main into dev after main-37505197e688
jamon-bodhi
approved these changes
Oct 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.