Skip to content

Release 0.11.0 - #210

Merged
huhamhire merged 26 commits into
masterfrom
dev
Jul 7, 2026
Merged

huhamhire merged 26 commits into
masterfrom
dev

Conversation

@huhamhire

Copy link
Copy Markdown
Owner

Release 0.11.0 — merges dev into master.

Release prerequisites (per docs/development/packaging-release.md)

  • ✅ Version: apps/desktop/package.json → 0.11.0 (lockfile synced).
  • ✅ CHANGELOG: [Unreleased] cut to [0.11.0] - 2026-07-07 in both CHANGELOG.md (EN canonical) and CHANGELOG.zh-CN.md (mirror), with a highlights intro block and the [0.11.0] compare link.
  • ✅ Proofread: the [0.11.0] section covers Added / Changed / Fixed merged into dev since 0.10.0, both locales in sync.

Highlights

  • Richer @mention: autocomplete now searches users beyond the PR's participants on the code platform, and mentioning behaves identically across every comment editor (activity, replies, inline diff comments, review drafts).
  • Review engine: embedded pr-agent → 0.39.0.
  • Consistent timestamps: fixed 24-hour yyyy-mm-dd HH:mm:ss display, locale-independent.
  • Plus a batch of review-experience fixes.

After merge

Tag v0.11.0 on master to trigger release.yml (Windows / macOS installers + CLI binaries + GitHub Release). The tag name must equal the package.json version.

🤖 Generated with Claude Code

huhamhire and others added 26 commits July 5, 2026 17:53
From 0.10 on, the GitHub Release body no longer carries the early-preview
caveat. Removes the banner from RELEASE_NOTES.md — it lived only in the
release-notes template (the CHANGELOG and website changelog never had it).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The website-changelog pointer moves to the top of the Release body and becomes
two markdown links — `[English](…) · [简体中文](…)` — each deep-linking to this
version on its locale's changelog (EN root, ZH under /zh/). release.yml fills the
new `%%CHANGELOG_URL_EN%%` / `%%CHANGELOG_URL_ZH%%` placeholders; sync-docs already
emits the `{#v…}` anchor on both locales. packaging-release.md updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Trim the wordy "This release on the website changelog:" lead-in to a concise
"Full changelog:" — the language links and the deep-link anchor already carry
the rest of the meaning.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docs(release): reshape release notes for 0.10+
Post-0.10.0 development marker: bump apps/desktop to the next patch's -dev
prerelease (next release is expected to be a small maintenance version) and
sync the lockfile. Not tagged / not released; a new CHANGELOG [Unreleased]
section is created on the next development-phase change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The zoom-preview close button sat at top: 16px, under the frameless
window's native controls (top-right on Windows/Linux, drawn above web
content). Drop it below the 36px title-bar zone, and replace the `×`
text glyph with the shared CloseIcon SVG so it centers cleanly instead
of sitting off-center from the font metrics.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The default code_suggestion_layout missed the outer square brackets, so
the linked "AI suggestion" label + model prefix rendered unbracketed.
Change the default to [[<TITLE>](<HOME>) (<MODEL>)] and sync both the
English and Chinese config-reference guides.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Inline draft comments passed candidates={[]} to MentionTextarea, so the
@mention menu never opened there (only the activity/reply composers had
it). Extract collectMentionCandidates into a shared util, and thread a
candidate set (loaded comment authors + the PR author) from DiffView
through useDraftZones → DraftZoneList → DraftZone into the editor.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pr-agent emits the security verdict in many surface forms (a terse "否" /
"No", the English template phrase, or a localized "未发现安全风险"), so the
card sometimes read as a bare, ambiguous "安全 · 否". Normalize any
no-concern verdict at parse time to pr-agent's canonical English phrase,
which the renderer's label dictionary maps to one unambiguous localized
string per language. A real concern (descriptive body) is left untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bitbucket Server resolves a mention only when a username containing
characters like a dot is double-quoted (@"first.last"); the bare form
rendered as plain text with no notification. Centralize the mention
syntax in a shared formatMention helper (Bitbucket quotes non-simple
usernames, GitHub/GitLab stay bare) and thread the active platform into
the comment, reply, and inline-draft editors so autocomplete inserts the
platform-correct token.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Opening a commented file from the tree could render the inline comment
box at the wrong width (spilling past the editor) until a manual window
resize. The width was computed from getBoundingClientRect arithmetic that
mixed the editor's DOM rect with the zone's scrolled position — unreliable
during init / a file switch. Derive it instead from Monaco's authoritative
getLayoutInfo() (width - contentLeft - verticalScrollbarWidth), which is
correct as soon as the editor has laid out. A self-terminating rAF settle
loop plus the layout/resize/diff observers re-apply the formula until the
geometry stabilizes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix: a batch of small review-UI and inline-comment bug fixes
…resent

pr-agent renders a single-line file change (VERSION 1.5.2 -> 1.5.3, a
hash/checksum file, any hunk whose old side is exactly one line) so the
review model sees the old value as a still-present unchanged line, then
wrongly reports the file contains both the old and new value.

Root cause: git omits the hunk line-count when it is 1 (`@@ -1 +1 @@`),
and pr-agent's extract_hunk_headers coerces the omitted size to 0 instead
of 1; process_patch_lines' trailing-context slice then re-reads the changed
line itself and appends it as a phantom unchanged line into __new hunk__.

Add a version-guarded, self-disabling shim patch that defaults an omitted
hunk size to 1 (an explicit 0, e.g. the new-file @@ -0,0 +1 @@ case, is
left untouched). The shim probes the live function and no-ops if upstream
ever fixes it; a maintenance note documents the removal/upgrade checklist.
Verified against the vendored runtime: the phantom line is gone and normal
multi-line hunks are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(pragent): stop single-line hunks showing the old value as still present
…t it

After rotating a Bitbucket PAT, syncing an existing repo mirror failed
with `fatal: Authentication failed` until the cache dir was cleared: the
token was baked into remote.origin.url at clone time, and every later
`git fetch origin` reused that stale token. getCloneUrl (fresh token) was
consulted only for a brand-new clone.

Re-assemble the authenticated URL fresh from configured inputs for each
remote op and fetch by explicit URL instead of the stored origin (syncMirror
+ fetchRefspecs), so a rotated token applies immediately. Store only a
credential-free origin URL (new stripGitCredentials helper) — never persist
the token in .git/config, and strip it from historical mirrors best-effort.
Existing token-baked mirrors keep working without a re-clone.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(repo-mirror): re-auth git mirror with a fresh token, never persist it
Add an Unreleased section (EN canonical + ZH mirror) covering the fixes
merged after 0.10.0: @mention in inline drafts, Bitbucket mention quoting,
unambiguous no-security-concern verdict, single-line hunk misread, inline
comment width on tree-open, image-preview close button, stale-token mirror
fetch, and the default suggestion-layout brackets.

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

Bump the pinned pr-agent from 0.36.0 to 0.39.0 (runtime manifest +
_EXPECTED_PRAGENT_VERSION in lockstep so the version-guarded shims stay
active). All five shim patches remain compatible and none are removable:
the patched functions are unchanged (git_patch_processing, load_yaml) or
only touched in orthogonal ways (local_git_provider write_output; litellm
Databricks/GPT-5 routing), and the underlying gaps are still present
upstream (single-line-hunk size, new-Claude temperature, community-edition
describe assessment). Verified against the freshly assembled runtime: all
shims apply and behave correctly.

Also switch dev to 0.11.0-dev (the engine upgrade warrants a minor over a
patch) and record the change in the CHANGELOG (EN + ZH).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chore(pragent): upgrade embedded runtime to 0.39.0, bump dev to 0.11.0-dev
…nt format

Displayed timestamps were inconsistent — some hardcoded 24h numeric, others
via toLocaleString() with no locale arg, which followed the OS locale rather
than the app language (so a Japanese UI on a Chinese OS showed Chinese-format
times, and formats differed between machines).

Standardize on one house format: 24-hour, ISO-ordered yyyy-mm-dd HH:mm:ss,
with same-day timestamps showing only HH:mm:ss (the date is redundant for
"today"); exact-time hover tooltips always include the date. Relative time
("3 minutes ago") for recent items is preserved. This is unambiguous and
sortable regardless of language/OS — the right fit for an engineering tool
(mirrors GitHub's relative-first + neutral-absolute approach, without their
locale-driven absolute that many users can't override).

The pure formatters (formatTimestamp/formatDate) live in @meebox/shared so
they are unit-tested (the desktop app has no test target); the renderer
re-exports them and every display site is migrated off toLocale*.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(desktop): standardize displayed timestamps to a locale-independent format
Record the maintenance rule: resolve a Dependabot / npm audit advisory only
by upgrading the real direct/parent dependency, never with npm overrides.
When no clean parent upgrade exists (a transitive vuln pinned by a parent
with no patched release), prefer leaving it unpatched and filing a tracking
issue for runtime deps worth following; dev-server-only tool-chain advisories
that never reach the shipped artifact may be left with no issue.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The @mention autocomplete only offered this PR's already-loaded participants,
so users could not mention people outside the PR without knowing the exact
username. Add a per-platform remote user-search fallback and make every comment
editor behave identically.

- shared: new `userSearch` capability + `connection.searchUsers(query, repo)`
- adapters: Bitbucket `/users?permission=LICENSED_USER&filter=` (the native web
  mention-picker endpoint, callable by any authenticated user); GitHub repo
  `collaborators` with `/search/users` fallback on 401/403; GitLab
  `/projects/:id/users?search=` (project members)
- ipc: `mentions:search` channel + best-effort controller (warn-log then degrade
  to local candidates on any failure, min query length 2)
- renderer: debounced (250ms) remote fallback in MentionTextarea with sequence
  race guard + in-flight cancellation; thread the flag through comment composer,
  reply editor, and draft editor
- unify: the inline diff comment reply editor was missing mention candidates /
  platform / user search entirely; wire the same props through useCommentZones
  -> InlineCommentZone so inline and comments-page reply share one
  CommentReplyEditor with identical behavior
- docs: capability + comment-interactions design; record the "comment
  interactions identical across all surfaces" philosophy in AGENTS.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(review): remote @mention user search across all comment editors
Add an Added entry (EN + zh-CN) for the new remote @mention user search that
lets you mention users beyond the PR's participants across all comment editors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bump apps/desktop to 0.11.0 (sync package-lock.json) and cut the [0.11.0]
CHANGELOG section from Unreleased in both locales (EN canonical + zh-CN mirror),
with release highlights.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@huhamhire huhamhire added the release 发布 PR / 版本发布 label Jul 7, 2026
@huhamhire
huhamhire merged commit b526497 into master Jul 7, 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