Peter Steinberger
8616c0c374
refactor: finish shared test helper migrations ( #120996 )
...
* test: finish shared helper migrations
* test: fix helper migration CI
* style: fix test import ordering
* test(acpx): restore deferred void types
* test: fix helper migrations after rebase
2026-08-09 06:00:06 -07:00
Peter Steinberger
f9d9d1225a
refactor(channels): own the lifecycle status contract in SDK patch factories ( #118795 )
...
* refactor(sdk): add channel lifecycle patch factories
* refactor(channels): adopt lifecycle patches in a-m
* refactor(channels): adopt lifecycle patches in n-z
* refactor(runtime): lifecycle-own ambient registries
* test(slack): assert lifecycle factory fields
* fix(sdk): preserve lifecycle patch extras types
* test(zalouser): widen lifecycle status sink
* test(irc): avoid shadowed status patch
* fix(zalo): reuse account-agnostic media route
* fix(gateway): accept explicit channel ready recovery
* test(qa): assert terminal Slack block fact
* test(qa): restore Slack blocked lifecycle scenario
* test(gateway): lock explicit lifecycle recovery contract
2026-08-03 12:39:48 -07:00
Peter Steinberger
0c32879d45
feat(channels): publish recorded lifecycle from bundled channel transitions ( #118110 )
...
* feat(channels): publish recorded lifecycle from bundled channel transitions
* chore: remove lifecycle changelog entry
2026-08-02 13:04:49 -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
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
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
b40a8da70e
refactor(channels): trim deprecated setup-input fields and legacy promotion keys to published readers ( #112587 )
...
* refactor(channels): trim deprecated setup-input fields and legacy promotion keys to published readers
* ci: retrigger after dropped ready event
* fix(channels): update setup-input guardrails and dead code for the trimmed tier
2026-07-22 01:15:58 -07:00
Peter Steinberger
f236e83de7
refactor(channels): shrink ChannelSetupInput to a generic envelope with a deprecated compatibility tier ( #112319 )
...
* refactor(channels)!: shrink ChannelSetupInput to a generic envelope with a deprecated compatibility tier
* fix(channels): keep ChannelSetupInput structurally assignable without an index signature
* docs: regenerate docs map
2026-07-21 22:17:03 -07: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
c46cc1e2d4
refactor(channels): unify inbound replay protection ( #109117 )
...
* refactor(channels): unify inbound replay-guard orchestration on shared factory
* fix(plugin-sdk): bind replay-guard settlement to claim handles
* fix(plugin-sdk): claim-handle settlement (rest)
* fix(discord): align skipped queue cleanup
* style(feishu): simplify bot menu claim settlement
* refactor(plugin-sdk): extract replay dedupe contracts
2026-07-16 08:46:34 -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
Peter Steinberger
bacad95379
test(raft): guard optional runtime config schema ( #107563 )
2026-07-14 06:59:05 -07:00
Peter Steinberger
e4aa176c82
refactor(raft): privatize config schema ( #107554 )
2026-07-14 06:37:10 -07:00
Peter Steinberger
1edc8b6c27
refactor(security): centralize timing-safe secret comparisons ( #105989 )
...
* refactor(plugins): reuse safe secret comparator
* refactor(security): centralize remaining secret comparisons
* chore(ci): lower refactored file baselines
2026-07-12 22:37:21 -07:00
Peter Steinberger
7bf80dc2c6
chore(tooling): enforce formatting and refresh TypeScript checks ( #104239 )
...
* chore(tooling): enforce current formatter and refresh checks
* chore(tooling): keep release changelog formatter-owned
* chore(tooling): retain compatible Node type surface
* ci: enforce formatting for docs-only changes
* ci: isolate docs formatter check
* chore(tooling): apply updated lint and format rules
* chore(tooling): satisfy updated switch lint
* style(ui): apply Linux formatter layout
* test(doctor): match quiet local audio contribution
* test(doctor): assert quiet output only
* test(doctor): follow restored information contract
2026-07-11 01:09:51 -07:00
Vincent Koc
1a04b8eb98
test(plugins): review channel daemon spawn findings
2026-06-25 03:42:44 +02:00
Vincent Koc
9b4c5822eb
test(raft): satisfy gateway lint
2026-06-22 14:36:12 +08:00
Vincent Koc
b39e905b69
fix(raft): support current bridge protocol
2026-06-22 14:36:12 +08:00
Vincent Koc
df6c71736c
fix(raft): satisfy channel type contracts
2026-06-22 14:36:12 +08:00
Vincent Koc
2b50bbf152
feat(raft): add wake bridge channel
2026-06-22 14:36:12 +08:00