chore(release): credit direct v0.9 community merges
This commit is contained in:
@@ -11,6 +11,9 @@
|
||||
hmbown = Hmbown <101357273+Hmbown@users.noreply.github.com>
|
||||
reidliu41 = reidliu41 <61492567+reidliu41@users.noreply.github.com>
|
||||
reid201711@gmail.com = reidliu41 <61492567+reidliu41@users.noreply.github.com>
|
||||
ousamabenyounes = Ben Younes <2910651+ousamabenyounes@users.noreply.github.com>
|
||||
benyounes.ousama@gmail.com = Ben Younes <2910651+ousamabenyounes@users.noreply.github.com>
|
||||
ljm3790865 = ljm3790865 <263429444+ljm3790865@users.noreply.github.com>
|
||||
HUQIANTAO = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
|
||||
Hu Qiantao = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
|
||||
huqiantao@users.noreply.github.com = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
|
||||
|
||||
@@ -217,6 +217,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
Token Plan region endpoints and pay-as-you-go routing, plus dedicated Token
|
||||
Plan env keys for `tp-*` subscriptions (#2621, #2627). Thanks @springeye for
|
||||
the request and @xyuai for the implementation.
|
||||
- Added the first TUI hotbar action registry foundation so future UI controls
|
||||
can dispatch typed app actions instead of growing another command match
|
||||
surface (#2866). Thanks @reidliu41 for the implementation.
|
||||
- Added the narrow multi-tab core and persistence foundation, including tab
|
||||
manager snapshots, delegation/group restore counters, mention parsing,
|
||||
cross-tab events, and corruption-tolerant persisted state, while leaving the
|
||||
broader collaboration UI wiring to follow-up work (#2864). Thanks
|
||||
@ljm3790865 for the tab-core implementation and #2753 direction.
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -335,6 +343,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
now count trusted workspace-local `.codewhale/mcp.json` servers together with
|
||||
the global MCP config, matching `codewhale mcp list` for merged global +
|
||||
project setups (#2787). Thanks @yekern for the detailed reproduction.
|
||||
- AltGr key chords in the composer no longer get swallowed by sidebar shortcuts
|
||||
on AZERTY and other international layouts, so characters such as `@`, `#`,
|
||||
`$`, `!`, and `%` can be entered normally (#2863, #2867). Thanks
|
||||
@ousamabenyounes for the fix and report.
|
||||
- Sub-agent shell completions now refresh the workspace branch/status chip
|
||||
immediately, and `/subagents` plus the Agents sidebar show each sub-agent's
|
||||
current workspace branch when it is running in a child worktree.
|
||||
@@ -386,6 +398,10 @@ settings-path migration work (#2730), **@gaord** for the runtime thread
|
||||
workspace update and completed-thread save APIs (#2640, #2639),
|
||||
**@shenjackyuanjie** for the
|
||||
HarmonyOS/OpenHarmony port and MatePad Edge validation trail (#2634),
|
||||
**@ousamabenyounes** for the AZERTY AltGr composer shortcut fix (#2863,
|
||||
#2867), **@reidliu41** for the hotbar action-registry foundation (#2866), and
|
||||
**@ljm3790865** for the multi-tab core/persistence foundation and broader
|
||||
collaboration direction (#2864, #2753),
|
||||
**@idling11** for the PlanArtifact direction in Plan mode (#2733), the dense
|
||||
tool-call transcript collapse/sidebar detail direction (#2738, #2734, #2692,
|
||||
#2694), and the HarnessPosture config model for provider/model posture (#2741,
|
||||
|
||||
@@ -217,6 +217,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
Token Plan region endpoints and pay-as-you-go routing, plus dedicated Token
|
||||
Plan env keys for `tp-*` subscriptions (#2621, #2627). Thanks @springeye for
|
||||
the request and @xyuai for the implementation.
|
||||
- Added the first TUI hotbar action registry foundation so future UI controls
|
||||
can dispatch typed app actions instead of growing another command match
|
||||
surface (#2866). Thanks @reidliu41 for the implementation.
|
||||
- Added the narrow multi-tab core and persistence foundation, including tab
|
||||
manager snapshots, delegation/group restore counters, mention parsing,
|
||||
cross-tab events, and corruption-tolerant persisted state, while leaving the
|
||||
broader collaboration UI wiring to follow-up work (#2864). Thanks
|
||||
@ljm3790865 for the tab-core implementation and #2753 direction.
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -335,6 +343,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
now count trusted workspace-local `.codewhale/mcp.json` servers together with
|
||||
the global MCP config, matching `codewhale mcp list` for merged global +
|
||||
project setups (#2787). Thanks @yekern for the detailed reproduction.
|
||||
- AltGr key chords in the composer no longer get swallowed by sidebar shortcuts
|
||||
on AZERTY and other international layouts, so characters such as `@`, `#`,
|
||||
`$`, `!`, and `%` can be entered normally (#2863, #2867). Thanks
|
||||
@ousamabenyounes for the fix and report.
|
||||
- Sub-agent shell completions now refresh the workspace branch/status chip
|
||||
immediately, and `/subagents` plus the Agents sidebar show each sub-agent's
|
||||
current workspace branch when it is running in a child worktree.
|
||||
@@ -386,6 +398,10 @@ settings-path migration work (#2730), **@gaord** for the runtime thread
|
||||
workspace update and completed-thread save APIs (#2640, #2639),
|
||||
**@shenjackyuanjie** for the
|
||||
HarmonyOS/OpenHarmony port and MatePad Edge validation trail (#2634),
|
||||
**@ousamabenyounes** for the AZERTY AltGr composer shortcut fix (#2863,
|
||||
#2867), **@reidliu41** for the hotbar action-registry foundation (#2866), and
|
||||
**@ljm3790865** for the multi-tab core/persistence foundation and broader
|
||||
collaboration direction (#2864, #2753),
|
||||
**@idling11** for the PlanArtifact direction in Plan mode (#2733), the dense
|
||||
tool-call transcript collapse/sidebar detail direction (#2738, #2734, #2692,
|
||||
#2694), and the HarnessPosture config model for provider/model posture (#2741,
|
||||
|
||||
@@ -154,27 +154,32 @@ def validate(commits: list[Commit], aliases: dict[str, Identity], check_authors:
|
||||
Identity(match.group("name").strip(), match.group("email").strip())
|
||||
for match in COAUTHOR_RE.finditer(commit.body)
|
||||
]
|
||||
harvested_logins = HARVEST_RE.findall(commit.body)
|
||||
is_harvested_commit = bool(harvested_logins)
|
||||
mapped_author = lookup_identity(aliases, commit.author_email, commit.author_name)
|
||||
|
||||
if check_authors:
|
||||
if is_bot_identity(commit.author_name, commit.author_email):
|
||||
if is_harvested_commit and is_bot_identity(commit.author_name, commit.author_email):
|
||||
errors.append(
|
||||
f"{prefix}: author {commit.author_name} <{commit.author_email}> is a "
|
||||
"bot/tool identity. Human harvested work should preserve the contributor "
|
||||
"as author or use a human co-author trailer."
|
||||
)
|
||||
elif (
|
||||
(expected := lookup_identity(aliases, commit.author_email, commit.author_name))
|
||||
and norm_key(commit.author_email) != norm_key(expected.email)
|
||||
is_harvested_commit
|
||||
and mapped_author
|
||||
and norm_key(commit.author_email) != norm_key(mapped_author.email)
|
||||
):
|
||||
errors.append(
|
||||
f"{prefix}: author {commit.author_name} <{commit.author_email}> "
|
||||
f"matches AUTHOR_MAP but is not canonical. Use author {expected.author()}."
|
||||
f"matches AUTHOR_MAP but is not canonical. Use author {mapped_author.author()}."
|
||||
)
|
||||
|
||||
for coauthor in coauthors:
|
||||
if CANONICAL_NOREPLY_RE.match(coauthor.email):
|
||||
continue
|
||||
if is_bot_identity(coauthor.name, coauthor.email):
|
||||
if is_harvested_commit:
|
||||
errors.append(
|
||||
f"{prefix}: remove bot/tool co-author trailer "
|
||||
f"{coauthor.name} <{coauthor.email}>; contributor trailers are for humans."
|
||||
@@ -194,7 +199,7 @@ def validate(commits: list[Commit], aliases: dict[str, Identity], check_authors:
|
||||
)
|
||||
|
||||
coauthor_emails = {norm_key(coauthor.email) for coauthor in coauthors}
|
||||
for login in HARVEST_RE.findall(commit.body):
|
||||
for login in harvested_logins:
|
||||
expected = lookup_identity(aliases, login)
|
||||
if expected is None:
|
||||
errors.append(
|
||||
|
||||
Reference in New Issue
Block a user