Skip to content

Release 0.11.1 - #214

Merged
huhamhire merged 17 commits into
masterfrom
dev
Jul 14, 2026
Merged

Release 0.11.1#214
huhamhire merged 17 commits into
masterfrom
dev

Conversation

@huhamhire

Copy link
Copy Markdown
Owner

Release 0.11.1.

Highlights

  • File-level comments (Bitbucket / GitHub).
  • Replies as deferred drafts — consistent with new comments, persisted across switches, published with the review batch.
  • Project-aware reviews — the review reads the reviewed repo's own AGENTS.md as context.
  • Git LFS status in the diff for binary files.
  • Fix: an in-progress inline comment isn't discarded when the comment list refreshes.

Version bumped to 0.11.1 (apps/desktop/package.json + lockfile); CHANGELOG (EN + ZH) Unreleased → [0.11.1] - 2026-07-14. Gates green (lint/typecheck/test/build).

Tag v0.11.1 on master after merge triggers the release build.

🤖 Generated with Claude Code

huhamhire and others added 17 commits July 7, 2026 16:48
Post-0.11.0 release: bump apps/desktop to the next -dev prerelease marker
(0.11.1-dev) and sync the lockfile, per the -dev version-number rule.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
After a release, master gains a merge commit dev lacks, so the branches
diverge and later dev->master PRs show phantom "behind" commits. Document the
mandatory back-merge of master into dev (verify git log dev..master is empty)
alongside the -dev bump, in both the AGENTS.md release-flow summary and the
packaging-release checklist.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Binary files (images, office docs, PDFs, …) render a "binary, not rendered"
placeholder with no indication of whether they are Git LFS-managed. Detect LFS
and surface the status.

- repo-mirror getFileContent: detect the Git LFS pointer blob (the mirror never
  smudges, so an LFS-managed file's content is the pointer text) and return it
  as binary + the real byte size from the pointer, instead of dumping pointer
  text as a bogus diff
- contract: extend FileContent / DiffFileContent binary variant with an optional
  lfs { size } field
- DiffPane: on the binary placeholder show a "Git LFS · <size>" tag for
  LFS-managed files, or a "⚠ Not LFS" tag for plain inline binaries (per side,
  preferring head); i18n across all four locales
- test: cover LFS pointer detection + size parsing in repo-mirror

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…red)

Comments could only be PR summaries or line-anchored inline comments. Add
file-level comments — anchored to a whole file — which Bitbucket and GitHub
support. Previously such remote comments were silently collapsed to summaries,
losing their file association (notably Bitbucket file comments).

- model: PrCommentAnchor.line/lineType become optional (absent line = file-level);
  comment kind gains 'file'; new capability fileLevelComments
- adapters: Bitbucket maps/publishes a line-less anchor; GitHub uses
  subject_type: "file"; GitLab has no file-level diff-comment API → capability
  false + defensive guard (degrades to local menu / hides the entry)
- ipc: comments:createFile channel + controller (posts via the inline-publish
  path with a line-less anchor)
- renderer: a file-level comment strip above the diff editor shows the file's
  file-level comments (reusing CommentItem for full interaction parity) plus an
  icon "comment on file" entry (capability-gated); the header shows the file's
  project-relative path as a breadcrumb. CommentItem renders a path-only,
  non-clickable chip for file-level anchors and skips the line code context;
  useCommentZones excludes line-less anchors from Monaco line zones
- docs: capability field + per-platform table + a file-level comments section
  in the comment-interactions design

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eased

Recreate the [Unreleased] section (consumed by the 0.11.0 release) with Added
entries for the two features on this branch, in both locales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(diff): Git LFS status on binary diffs + file-level comments
…+ background)

The button reset's `font: inherit` came after `font-size: $fs-md` and reset the size back to the header bar's 12px, so the breadcrumb never matched the file tree node (13px) — order the override after the reset. Also give the breadcrumb bar the tree's $bg-panel background so it reads as one surface with the file tree.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pr-agent 0.39.0 ships a new default `repo_context_files = ["AGENTS.md"]`,
but LocalGitProvider (the only provider meebox uses) inherits the base
no-op `get_repo_file_content`, so the feature is skipped with a per-run
WARNING and never injects project guidance into the review.

Patch LocalGitProvider.get_repo_file_content in the version-guarded shim
to read the blob from the base branch's tree (`git show <target>:<path>`,
never the working tree, so it stays independent of _prepare_repo's /ask
worktree sanitizing). Missing files / git errors degrade to "" so
build_repo_context treats them as "no context" and caches no fetch error.

Result: /review /describe /improve now inject the reviewed repo's
AGENTS.md (capped at repo_context_max_lines) as <instruction_files>, and
the WARNING no longer fires.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…leased

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(agent): support repo_context_files on LocalGitProvider via shim
Inline comment view zones were fully torn down and rebuilt on every
comments:changed (a reply/edit/delete anywhere, or the poller pulling a
new remote comment). Each rebuild unmounted the zones' React roots, so an
open inline reply/edit lost its half-typed text — unlike the activity
timeline, which survives via keyed reconciliation.

Give the inline zones the same "reconcile in place" behaviour: refactor
mountInlineZones into a persistent controller (createInlineZones →
{ update, dispose }) that diffs zones by a stable (side, line) key —
unchanged keys re-render their existing root (CommentZone keys children by
remoteId, so an open editor keeps its state), only added/removed lines
mount/unmount. useCommentZones splits into a structural effect (owns the
controller, recreated only on editor/file/view change) and a content
effect (calls controller.update on comments/props change + rebuilds the
stateless glyph decorations).

The one-shot mountInlineZones wrapper is kept byte-compatible, so the
draft zones (useDraftZones) are unchanged. The activity timeline already
handled this and needs no change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ew comments

Creating a new inline comment records a persisted draft, but replying to a
comment posted immediately with no draft — so an unsubmitted reply was lost
on switching PRs/files/tabs, and the two authoring flows were inconsistent.

Unify replies onto the same draft model:

- ReviewDraft gains kind ('comment' | 'reply', default 'comment' for
  back-compat) + replyTo { parentCommentId, threadId? }; anchor becomes
  optional (a reply snapshots its inline parent's anchor, or has none when
  replying to a summary comment). drafts:create validates the kind
  constraints; publishDraftBatch branches reply -> comments.replyToComment
  vs comment -> publishInlineComment.
- The shared CommentReplyEditor now creates a pending reply-draft instead of
  posting immediately, so every surface (activity timeline + inline diff)
  defers identically. A new shared ReplyDraftList renders a parent's pending
  reply-drafts below it (reusing DraftZone), self-fetching from the drafts
  store, on both surfaces.
- Reply-drafts join the "Publish comments" batch and count; they publish via
  the reply API and, on success, the local draft is dropped and the real
  reply is fetched back as a normal comment.
- useDraftZones excludes reply-kind (they render nested, not as line zones);
  useLineCommentAdder ignores them for '+' occupancy; DraftsPanel /
  PublishReviewModal show a "reply" tag and guard the now-optional anchor;
  PrPanel / DiffView guard anchor too.

Editing an existing comment stays immediate (it mutates a remote comment,
not new authored content). i18n added for 4 locales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(review): make comment replies deferred drafts, consistent with new comments
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@huhamhire huhamhire added the release 发布 PR / 版本发布 label Jul 14, 2026
@huhamhire
huhamhire merged commit fdb1b91 into master Jul 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release 发布 PR / 版本发布

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant