Repository navigation
v2.0.0
v2.0.0
Fixed
- The gate stood down on every call under DSH 0.1.2, so the Approvals page stayed empty. The
session's permission-preset fold read the log asexec.agent.session.events. DSH 0.1.1 exposed
that array; 0.1.2 made the log private behindSession.snapshotEvents()/ownEvents()and kept
noeventsmember, so the read returnedundefined,presetOfansweredundefined, and
presetInScope(undefined, ['permissive'])madegateActivefalse for every call: no rule,
grant, deny-keyword, classifier, or P0 hard-deny decision, and no audit event — including in
sessions that had selected the gate's own tier, which is why the tab showed "本会话暂无审批记录"
rather than a failure. The fold now reads the log through every known accessor shape
(eventsarray,snapshotEvents(),ownEvents()) and degrades to "no events" only when the host
exposes none; the fold cache keys on the log's length plus its last event's identity, since a
0.1.2 snapshot is a fresh array over the same frozen events on every read.test/preset-scope.spec.ts
pins both shapes: a0.1.2-shaped session must yield a decision (and a recorded event), and a
grown log must re-fold so a preset switch takes effect on the next call.
Changed
- The
mainline's version series is now2.x, tracking the DSH line it serves.1.x
is the DSH<= 0.1.1line and2.xis the DSH0.1.2+line, so a plugin version says
which DSH it was built for;2.0.0is the first release of the new series and the
0.2.xreleases (0.2.0,0.2.1-beta.2…beta.5) are superseded by it. The majors
fence each other —^1.0.0does not resolve2.0.0and^2.0.0does not resolve
1.0.0— so an existing^0.2.1-beta.4install (which also does not resolve2.0.0)
must be bumped deliberately.engines.dshstates the same split
(>=0.1.2-alpha.1 <0.2.0-0here,>=0.1.0-rc.7 <0.1.2-alpha.1onlegacy), but DSH
never reads it: the version ranges and dist-tags are what keep an old DSH on1.x. - The permission tier is labelled 自动审查 on every surface, with no icon. The preset's
name:incordis.patch.ymlis now the Chinese product string, and the General-settings default
row, the composer picker, and the plugin's settings tab all show it. DSH 0.1.2 renders a
plugin-contributed tier'sname:verbatim and localizes only the three built-in values
(仅可查看/工作区内修改/完全权限), so the one host-supplied string is what a zh session sees;
the tier's machine value stayspermissive, which is whatgatePresetsmatches. The
permission-picker icon decoration is removed (src/client/permission-icon.tsdeleted): it existed
to match the retiredautotier's shield glyph, it applied to the settings row through the
0.1.2aria-haspopup="menu"selector, and a plugin tier draws no glyph because the composer's
glyphs are keyed to the built-in values only.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.