文件最后提交记录最后更新时间
chore: clean up LOBE-XXX code annotations (#15135) * chore: clean up LOBE-XXX annotations from codebase comments - Remove 【LOBE-XXX】 bracket markers - Remove LOBE-XXXX references from inline comments - Clean up test descriptions containing LOBE identifiers - Preserve linear.app URLs and code-level regex patterns - Generated: 2026-05-23 02:30:09 * 🐛 fix(tests): restore () in arrow callbacks broken by annotation cleanup The LOBE-XXX annotation cleanup script over-matched `(LOBE-XXXX', () =>` and stripped the callback `()`, leaving invalid syntax like `describe(..., => {` and `it(..., async => {` across 24 test files. This caused parse failures in Test Packages, Test Desktop App, Test Database lint, and Test App shard runs. Restoring `()` / `async ()` unblocks the suites while keeping the ticket-text cleanup intact. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * 🐛 fix(hintFormat-test): restore label + ellipsis in stripMarkdownLinks fixture The annotation cleanup stripped `LOBE-8516` from a markdown-link's *label* (`[LOBE-8516](/task/T-1)` → `[](/task/T-1)`), which then survived `stripMarkdownLinks` because the pattern requires non-empty link text — the test expected the link to disappear and asserted equality on a LOBE-free output. The same line also lost a `.` from the trailing `...` indicator in both input and expected strings. Substitute a neutral Chinese label (`发布计划`) so the link continues to exercise the multi-link substitution path, and restore the full `...` ellipsis. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Arvin Xu <arvinxx@lobehub.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>18 小时前
✨ feat(review-panel): group review changes by submodule (#15148) * 🐛 fix(claude-code): show task subject in TaskUpdate inspector & header A TaskUpdate that only sets `subject` (no status flip) was falling through to the aggregate `Todos: x/y` chip and burying the per-call signal. Surface the new subject like the status branch already does: "Task updated: <subject>". Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ✨ feat(review-panel): group changes by submodule with per-group collapse Surface dirty submodules as their own groups in the agent Review panel so users working in a parent repo with submodules see each repo's changes clustered together (mirrors WebStorm's per-repo commit grouping). Both Unstaged and Branch modes apply the same grouping — submodules with internal working-tree changes (unstaged) or branch diffs against their own origin/HEAD (branch) surface as separate groups, each tagged with its own branch label and file/diff totals. Backend (`GitCtr`): - `getGitWorkingTreePatches` and `getGitBranchDiff` extracted into private recursive helpers that detect submodules via `git submodule status`, partition pointer-bump entries out of the parent's flat patches, and recurse one level for each dirty submodule's own patches + branch info. - Nested submodules are not traversed (phase 1); revert routes through each group's absolute path so submodule files revert inside the submodule. Renderer: - New `GroupHeader` and `FileRow` subcomponents split out of `Review`. `GroupHeader` is sticky with a chevron + name + file count + diff totals + branch; clicking collapses the group's rows. A hover-revealed `ActionIcon` on the right expands/collapses all file diffs in that group (`e.stopPropagation` keeps it from also collapsing the surrounding header). - Fixed `block-size: 32px` on the header so toggling the fold button on/off doesn't jitter the sticky height. - Single-repo working trees keep the previous flat layout when no submodule groups exist. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ✨ feat(review-panel): scan all submodules in branch mode Previously branch mode only surfaced a submodule group when the parent's diff against base ref contained a `Subproject commit` pointer bump for it. This missed the common case where the user has committed work in a submodule on a feature branch but the parent's pointer hasn't yet moved relative to its base — the submodule's own branch differences stayed invisible in the Review panel. `collectBranchDiff` now recurses into every registered submodule (single level, in parallel) and keeps a group when EITHER its pointer differs in the parent OR its own branch diverges from its own origin/HEAD. Clean-on- both-axes submodules are dropped so the panel stays quiet for repos where the submodule isn't actively being worked on. Submodule count is small in practice (single digits), so the extra per-submodule fetch + diff in parallel is an acceptable cost. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ✨ feat(agent-documents): hide .tool-results archive from user-facing lists Auto-created tool-result archive folder and its children are now filtered out of getAgentDocuments. Agents still discover them via the tool-oriented listDocuments paths. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * 💄 style(review-panel): drop "file not found in project index" toast Reveal-in-tree now silently no-ops when the path isn't indexed (e.g. submodule files) instead of nagging the user with a warning toast. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * 🐛 fix(review-panel): keep submodule groups visible on pointer-only bumps `isEmpty` was derived solely from `totalEntryCount`, which counts file patches across groups. A pointer-only submodule bump (parent patch filtered out, submodule group present but internally clean) produced `totalEntryCount === 0`, so the panel rendered the global empty state and silently skipped the submoduleClean group rendering — even though git was dirty. Now `isEmpty` also requires zero submodule groups, so pointer-only bumps keep their GroupHeader + "submodule clean" line. The fold-all button visibility switches to `totalEntryCount > 0` so it stays hidden when there's nothing foldable. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>11 小时前
🌐 chore: translate non-English strings to English in apps/cli, apps/device-gateway, and apps/desktop scripts (#14626) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>13 天前