Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings ( #117474 )
2026-08-01 09:11:09 -07:00
Ayaan Gazali
11069c3df5
fix(channels): config validation rejects documented channels.<id>.configWrites on 13 channels ( #117206 )
2026-08-01 15:33:16 +08:00
Peter Steinberger
9e4381eb1c
refactor(channels): unify bundled channel setup contracts ( #117106 )
...
* refactor(channels): canonicalize bundled setup contracts
* test(matrix): use scoped environment fixtures
2026-07-31 16:57:29 -07:00
Peter Steinberger
986e5d1758
refactor(channels): share ingress retention defaults ( #115824 )
2026-07-29 06:24:30 -04:00
Peter Steinberger
bde6b166c0
refactor(channels): deduplicate ingress monitor shells ( #115792 )
...
* refactor(channels): deduplicate ingress monitor shells
* fix(channels): preserve ingress error overload types
* fix(channels): type ingress error overload implementation
* chore(plugin-sdk): ratchet ingress error surface
2026-07-29 05:33:00 -04:00
Peter Steinberger
302f262e6b
refactor: deduplicate extension normalization primitives ( #115650 )
...
* refactor(plugins): reuse SDK normalization primitives
* fix(ci): repair code-mode matrix checks
* fix(ci): satisfy code-mode matrix gates
* fix(ci): use matrix evidence export
* fix(ci): validate matrix evidence artifact
2026-07-29 04:10:06 -04:00
Peter Steinberger
c092ec437c
refactor: remove duplicate runtime and plugin paths ( #115483 )
2026-07-28 22:06:04 -04:00
Peter Steinberger
ca4727e1a1
fix(twitch): use managed runtime dependencies ( #115147 )
2026-07-28 07:08:56 -04:00
Peter Steinberger
08b1ff73e2
refactor(channels): fix account resolution and setup isolation ( #114395 )
...
* refactor(channels): fix account resolution and setup isolation
* fix(channels): keep account resolvers safely destructurable
2026-07-27 03:49:37 -04:00
Peter Steinberger
f6131a4fbf
build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks ( #114006 )
...
* build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks
npm 12 removed shrinkwrap (command + tarball/root loading). Delete all 82
committed npm-shrinkwrap.json files and stop publishing lockfiles; keep
pnpm-lock.yaml as the single reviewed dependency boundary. The generator
becomes scripts/generate-npm-package-lock.mjs and feeds plugin bundling via
a transient package-lock.json + npm ci (works on npm 11 and 12). Tarball
validation treats the published 2026.7.2 beta train as a shrinkwrap
transition; self-update npm detection now uses install topology instead of
the shipped shrinkwrap.
* fix(deps): repair lint, deadcode, and test-type lanes for the npm 12 migration
- sort integrity comparisons with an explicit comparator (oxlint)
- keep resolveBunGlobalNodeModules module-local (knip unused-export gate)
- model npm pack --json as npm<=11 array / npm 12 name-keyed object
- default calver destructuring in the tarball test fixture
2026-07-26 01:29:55 -04:00
Peter Steinberger
446816f751
test: table-drive followup scenarios, centralize sanitizer wiring, remove obsolete negatives ( #113583 )
...
* test(auto-reply): table-drive followup runner scenarios
* test(channels): centralize sanitizer wiring coverage
* test: remove obsolete negative coverage
2026-07-25 02:14:44 -07:00
Peter Steinberger
a5d758e74b
refactor(plugin-sdk): share channel DM policy setup ( #113537 )
2026-07-25 01:00:53 -07:00
Peter Steinberger
acd92f6a3d
chore(deps): refresh repository dependencies ( #112453 )
...
* build(deps): update QA broker dependency
* build(deps): refresh repository dependencies
* build(deps): reconcile rebased shrinkwraps
* test(plugins): remove stale loader test state
* test(deps): stabilize updated dependency coverage
* fix(swift): use caller-isolated TaskLocal overload
* build(deps): regenerate rebased shrinkwraps
* test(msteams): preserve DNS validation in fetch helper
* fix(deps): avoid vulnerable optional image stack
* test(deps): validate generated LRU override
* refactor(ui): extract chat resizable divider
* test(ui): update divider ownership path
* fix(matrix): retain restart-compatible SDK
* style(cron): format update test
2026-07-23 16:17:13 +00:00
Peter Steinberger
b67217ffab
fix(channels): stop leaking markdown on plain-text transports ( #112926 )
...
* fix(channels): unify plain-text markdown projection
* fix(synology-chat): satisfy link formatter lint
* test(ui): repair sidebar catalog activity fixture
2026-07-23 02:13:55 -04:00
Jesse Merhi
4a2a600809
feat(channels): add channel-owned setup contracts ( #112176 )
...
* feat(channels): add channel-owned setup contracts
* test(channels): align legacy setup fixtures
* chore(channels): regenerate config and SDK baselines after rebase
* fix(update): run fresh doctor after current-process core changes
* fix(channels): align add pre-scan with execution precedence
* style(cli): format channels-cli test additions
* fix(channels): restore option-before-positional channel resolution via metadata arity scan
* fix(channels): keep help flags out of metadata arity escalation
* test(update): mock fresh post-update doctor in current-process suites
* style: format review fixes and correct entrypoint mock type
* fix(channels): register only modern contract options for dual-publishing plugins
* test(update): align downgrade suites with fresh-doctor child invocation
* docs(channels): record empty-contract and input-forwarding invariants
* fix(line): keep the shipped --token switch as a channel access token alias
* fix(signal): stop treating exact cross-family loopback endpoints as bind-aligned
* chore(config): regenerate docs config baselines after second rebase
* style: format rebased channels add tests
* fix(channels): enforce field-key and flag-name agreement in setup contracts
* fix(signal): detect container endpoints for bare --http-url setup
* fix(signal): ignore unconfigured accounts in transport collision checks
* fix(channels): validate negated setup flags in contract and normalizer
* fix(signal): preserve existing transport kind when setup detection is unreachable
* style(signal): use direct boolean check in collision guard
* style(signal): type test config literals
* docs(update): record two-read design of fresh-doctor validation gate
* fix(channels): satisfy post-rebase architecture gates
* docs: refresh channel setup map
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-22 19:57:42 -04:00
Peter Steinberger
e1d5d3dc16
refactor(channels): move single-account promotion keys to plugin declarations ( #112293 )
...
* refactor(channels): move single-account promotion keys to plugin declarations
* fix(channels): keep legacy promotion tier for undeclared setup adapters
* fix(channels): keep plugin discovery lazy in setup promotion helpers
* fix(channels): resolve bundled promotion surfaces from setup-only artifacts
* test(matrix): use vi.stubEnv in setup test env helper
2026-07-21 06:48:30 -07:00
Peter Steinberger
c7e7ac2728
refactor: remove expired plugin compatibility surfaces ( #111451 )
...
* docs(secrets): remove retired web credential paths
* refactor(web): remove retired provider compatibility paths
* refactor(providers): delete retired compatibility routes
* refactor(secrets): remove retired credential aliases
* refactor(plugin-sdk): delete retired compatibility surfaces
* docs(plugin-sdk): remove retired migration guidance
* chore(plugin-sdk): refresh rebased surface budgets
* chore(plugin-sdk): refresh API removal baseline
* refactor(compat): migrate retired internal callers
* chore(plugin-sdk): refresh current-main baselines
* test(config): migrate plugin-owned secret assertions
* test(gateway): narrow plugin secret refs
* fix(plugin-sdk): preserve private boundary type identity
* chore(compat): remove stale sweep references
* chore(lint): lower max-lines budget
* refactor(secrets): remove unused web helper
* build(plugin-sdk): drop removed compat entries
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): use Linux API baseline hash
* fix(plugin-sdk): preserve private bundled build entries
* fix(plugin-sdk): package private runtime facades
* fix(plugins): preserve external credential contracts
2026-07-19 11:04:48 -07:00
Peter Steinberger
938e3d5f20
refactor(channels): share durable ingress monitor ( #111186 )
...
* refactor(signal): share durable ingress monitor
* refactor(slack): share durable ingress monitor
* refactor(discord): share durable ingress monitor
* refactor(imessage): share durable ingress monitor
* refactor(twitch): share durable ingress monitor
* refactor(tlon): share durable ingress monitor
2026-07-18 21:33:09 -07:00
Peter Steinberger
e04ea7916c
feat(twitch): preserve accepted chat through local crashes ( #110852 )
...
* feat(twitch): add durable ingress queue
* fix(twitch): satisfy ingress type boundaries
2026-07-18 18:50:56 +01:00
Peter Steinberger
31ed59bdf6
feat: keep main agents aware of group activity ( #110332 )
...
* feat(sessions): auto-watch group activity from main
* feat(sessions): allow watchers to read watched sessions
* fix(sessions): skip group watches for system turns
* fix(sessions): preserve watched session semantics
* fix(channels): propagate effective dm scope
* fix(sessions): canonicalize main watch identity
* fix(sessions): distinguish ambient group watches
* fix(sessions): revoke ineligible ambient watches
* chore: drop CHANGELOG edit (release generation owns it)
2026-07-18 04:06:58 +01:00
Peter Steinberger
0e792b6de3
refactor(channels): centralize inbound orchestration and remove internal compat ( #109716 )
...
* refactor(channels): centralize inbound turn orchestration
* refactor(runtime): remove stale compatibility paths
* chore(guards): reject internal deprecated API use
* refactor(channels): simplify core turn planning
* chore(guards): keep deprecated checks boundary-focused
* refactor(memory): keep modern config off compat barrel
* fix(msteams): preserve feedback learning
* test(channels): align modern inbound fixtures
* refactor(channels): finish modern inbound migration
* refactor(channels): tighten core inbound kernel
* fix(channels): preserve turn assembly narrowing
* test(sdk): keep runtime mock binding immutable
* test(matrix): isolate read policy runtime
* test(msteams): mock canonical reply factory
* test(slack): mock core inbound turn dispatch
* test(telegram): inject core session recorder
* test(signal): inject core session recorder
* test(googlechat): assert canonical inbound routing
* test(synology-chat): align core turn fixture
* fix(sdk): preserve direct DM runtime compat
* refactor(channels): own inbound envelope compat in core
* refactor(channels): trim inbound dispatch seams
* refactor(channels): remove redundant async wrappers
* test(synology-chat): type canonical dispatcher mock
* refactor(channels): remove remaining dead compat seams
* chore(sdk): refresh API baseline after rebase
* fix(channels): preserve direct DM identity metadata
2026-07-17 00:56:46 -07:00
Peter Steinberger
44314c9451
refactor(channels): table-drive setup and control-plane helpers ( #109028 )
...
* refactor(channels): table-drive setup credentials, config schemas, doctor detectors, status issues
* refactor(channels): control-plane tables (rest)
* fix(plugin-sdk): refresh surface budgets after rebase
* style(plugin-sdk): format credential helpers
* fix(channels): preserve generic schema refinement types
* fix(channels): preserve schema input and output inference
* fix(clickclack): forward credential patch fields
* test(plugin-sdk): use redacted credential fixtures
* fix(plugin-sdk): refresh API baseline after inference fix
* fix(channels): keep multi-account envelope optional
* fix(channels): preserve policy validation invariants
* fix(extensions): remove stale awaits from file checks
* style(qqbot): format synchronous file check
* fix(config): refresh bundled channel metadata
* fix(qqbot): reject unsupported pairing policy
2026-07-16 07:17:01 -07:00
VectorPeak
eb31350442
fix(twitch): preserve intraword underscores in outbound text ( #108548 )
...
* fix(twitch): preserve intraword underscores
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
* fix(twitch): tighten underscore emphasis boundaries
Preserve multiline emphasis stripping and combining-mark identifiers.
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
---------
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 02:00:30 -07:00
Peter Steinberger
bae9752c5a
refactor(deadcode): enforce repository hard zero ( #108641 )
2026-07-15 22:40:00 -07:00
Peter Steinberger
b93f4bb3ac
refactor: privatize Twitch and SMS internals ( #107737 )
...
* refactor(twitch): privatize internal plugin surfaces
* refactor(sms): privatize internal plugin surfaces
* chore(deadcode): refresh unused-export baseline
2026-07-14 12:55:35 -07:00
Peter Steinberger
97df597688
fix(twitch): abort timed-out user lookups ( #107360 )
...
Co-authored-by: Alix-007 <li.long15@xydigit.com >
2026-07-14 04:22:34 -07:00
Alix-007
a9c70f3956
fix(twitch): time out Helix user resolution lookups ( #105883 )
...
* fix(twitch): time out Helix user resolution lookups
* test(twitch): satisfy resolver lint guards
* test(twitch): satisfy resolver account typing
* test(twitch): prove resolver recovery after timeout
* test(twitch): use explicit credential placeholder
* chore(changelog): defer Twitch note to release
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 02:56:39 -07:00
Peter Steinberger
774d5249cc
test: eliminate unchecked TypeScript casts ( #105804 )
2026-07-12 18:08:26 -07:00
Peter Steinberger
81941f2d68
test: enable noUncheckedIndexedAccess for extension tests ( #105343 )
2026-07-12 12:48:22 +01:00
Peter Steinberger
e34bff2276
refactor(plugin-sdk): collapse internal config-schema facade usage onto one module ( #104665 )
2026-07-11 13:00:53 -07:00
Peter Steinberger
dba64d574f
chore(release): set version to 2026.7.2
2026-07-11 04:00:49 +01:00
Peter Steinberger
790cd2aff2
fix(twitch): preserve UTF-16 pairs in outbound chunks ( #104030 )
2026-07-10 18:20:29 -07:00
clawsweeper[bot]
90b68536c4
fix(twitch): strip internal tool-trace banners from outbound text ( #103109 )
...
* fix(twitch): strip internal tool-trace banners from outbound text
Co-authored-by: Masato Hoshino <246810661+masatohoshino@users.noreply.github.com >
* fix(twitch): strip internal tool-trace banners from outbound text
---------
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Masato Hoshino <246810661+masatohoshino@users.noreply.github.com >
2026-07-09 22:39:03 +01:00
Peter Steinberger
a2a68d154b
fix(agent): preserve explicit recipient sessions ( #101507 )
...
* fix(agent): honor recipient session routing
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
* fix(agent): preserve canonical recipient routes
* fix(agent): require exact recipient routes
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
* fix(agent): harden recipient route resolution
* fix(imessage): require canonical recipient handles
* fix(agent): refine provider recipient exactness
* fix(agent): bound direct alias session routing
* fix(signal): preserve direct alias route type
* fix(agent): honor binding-scoped recipient sessions
* fix(routing): honor configured main session aliases
* fix(clickclack): align account-owned session routes
* fix(twitch): preserve canonical recipient sessions
* fix(routing): isolate stable outbound identities
* chore: defer recipient session changelog
* fix(sms): use dedicated channel SDK facade
---------
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
2026-07-07 10:07:13 +01:00
Peter Steinberger
614e87cce1
chore: update dependencies ( #100027 )
2026-07-04 14:56:50 -04:00
xingzhou
741d9524be
fix: outbound recovery can replay already sent replies ( #99600 )
...
* fix(outbound): avoid replaying sent recovery deliveries
* fix(outbound): persist recovery send state before ack
Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com >
* fix(outbound): preserve partial send evidence across adapters
* test(line): cover multi-send delivery progress
* fix(outbound): preserve repeated receipt result multiplicity
* test(heartbeat): expect delivery progress callback
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-04 01:09:12 -07:00
Vincent Koc
66e676d29b
chore(release): close out 2026.6.11 on main
2026-06-30 11:31:08 -07:00
Vincent Koc
c16bb8725a
fix(channels): keep text previews UTF-16 safe
2026-06-30 11:04:32 -07:00
Vincent Koc
0671c08900
chore(release): close out 2026.6.10 on main ( #96271 )
...
* chore(release): close out 2026.6.10 on main
* chore(release): align native app metadata for 2026.6.10
* chore(release): sync Android 2026.6.10 notes
* docs(changelog): preserve 2026.6.9 history
* docs(changelog): preserve 2026.6.9 history
2026-06-24 11:51:14 +08:00
Patrick Erichsen
0feffda3fc
fix(plugins): remove simpleicons icon color paths ( #95987 )
2026-06-23 12:16:02 -07:00
Patrick Erichsen
0a97f73402
feat: add bundled plugin icon manifest URLs ( #95845 )
2026-06-22 22:14:18 -07:00
Vincent Koc
b039e949b6
chore(release): close out 2026.6.9
2026-06-21 12:24:15 +08:00
Vincent Koc
f83693490b
fix(twitch): clear status after startup failures
2026-06-17 17:45:16 +02:00
Vincent Koc
00d2452fac
chore(release): refresh npm shrinkwrap versions
2026-06-17 07:32:37 +08:00
Vincent Koc
6774e7f259
chore(release): sync main to 2026.6.8
2026-06-17 07:25:30 +08:00
Shakker
920e6a8eec
chore: set version 2026.6.9
2026-06-16 19:54:07 +01:00
Peter Steinberger
9aa6bfccce
chore: update dependencies
2026-06-08 21:44:57 +01:00
Peter Steinberger
4fa5092cdc
docs: document small extension sources
2026-06-04 21:02:07 -04:00
Peter Steinberger
1878ca0820
chore(release): prepare 2026.6.2 beta
2026-06-04 00:06:52 +01:00
Peter Steinberger
e254346bc2
chore(release): prepare 2026.6.3 beta
2026-06-03 23:42:34 +01:00