Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
392 commits
Select commit Hold shift + click to select a range
fad1699
refactor(server): split provider protocols and voice test suites
leoisadev1 Oct 1, 2026
56331e1
refactor(server): use typed predicates for tagged value guards
leoisadev1 Oct 1, 2026
261ad52
style(server): add readable spacing to provider layers
leoisadev1 Oct 1, 2026
c8cb646
merge: swarm/server-core-root cleanup
leoisadev1 Oct 1, 2026
f568df4
refactor(server): retain preview failure causes
leoisadev1 Oct 1, 2026
b9125b3
style(server): apply readable spacing to core modules
leoisadev1 Oct 1, 2026
47df0b0
merge: swarm/desktop-scripts cleanup
leoisadev1 Oct 1, 2026
47a53d5
fix(server): preserve Unicode in bounded activity payloads
leoisadev1 Oct 1, 2026
5f29a57
refactor(server): separate command decisions and projection responsib…
leoisadev1 Oct 1, 2026
883830e
refactor(web): split BotPromptComposer into logic, draft, and keyboar…
leoisadev1 Oct 1, 2026
9056a94
style(web): share bot composer surface classes and use status tokens
leoisadev1 Oct 1, 2026
9979d60
refactor(web): share thread runtime title and attachment helpers
leoisadev1 Oct 1, 2026
34df642
refactor(web): share pending question handling between bot and group …
leoisadev1 Oct 1, 2026
87ac734
test(web): split bot chat selection and retention cases out of runtim…
leoisadev1 Oct 1, 2026
1df47e4
refactor(web): move bot chat timeline assembly and routine receipt ro…
leoisadev1 Oct 1, 2026
7edf0d8
refactor(web): split BotSettingsPage into form, identity, and engine …
leoisadev1 Oct 1, 2026
32e7520
refactor(server): split snapshot and engine tests by behavior
leoisadev1 Oct 1, 2026
a2698c4
style(web): render bot avatar controls and restyled buttons through B…
leoisadev1 Oct 1, 2026
9dd3942
style(web): move the bot side sheet header, title, and panel recipe i…
leoisadev1 Oct 1, 2026
3e5a54b
test(web): read the bot settings model controls from BotEngineFields
leoisadev1 Oct 1, 2026
381a9e3
refactor(web): split channel approval, reaction updater, and row equa…
leoisadev1 Oct 1, 2026
79f6efc
refactor(server): separate bot ownership persistence tests
leoisadev1 Oct 1, 2026
0f75ab2
refactor(server): separate reactor responsibilities and synchronize t…
leoisadev1 Oct 1, 2026
1da39d2
style(server): apply readable orchestration spacing
leoisadev1 Oct 1, 2026
0a89cd1
refactor(web): split desktop onboarding into step, surface, and logic…
leoisadev1 Oct 1, 2026
ccebb2b
refactor(web): split VoiceCall into context, logic, and controls modules
leoisadev1 Oct 1, 2026
93a6e09
refactor(web): split PluginsDialog directory layout and MCP draft logic
leoisadev1 Oct 1, 2026
88ec0fa
refactor(web): split PluginsCatalog and select plugin pill sizes
leoisadev1 Oct 1, 2026
1de4cc5
refactor(web): split the sidebar primitive into context, rail, and me…
leoisadev1 Oct 1, 2026
fc89abc
refactor(web): split toast into state, body, auto-dismiss, and anchor…
leoisadev1 Oct 1, 2026
1f31402
refactor(web): split UsagePage sections and add a faint Skeleton tone
leoisadev1 Oct 1, 2026
4c2a98b
style(web): drop SidebarInset color overrides it already owns on the …
leoisadev1 Oct 1, 2026
da378f1
style(web): add primitive variants for keybindings and diagnostics se…
leoisadev1 Oct 1, 2026
160dab1
refactor(web): split KeybindingsSettings into rows, editors, when-cla…
leoisadev1 Oct 1, 2026
af9fbae
refactor(web): split DiagnosticsSettings and ResourceTelemetryDiagnos…
leoisadev1 Oct 1, 2026
fe9fb65
refactor(server): fix extracted imports and declaration comments
leoisadev1 Oct 1, 2026
c684a51
merge: swarm/server-core-modules cleanup
leoisadev1 Oct 1, 2026
d26d13d
style(web): add presentation variants to primitives for settings call…
leoisadev1 Oct 1, 2026
d372f95
refactor(web): split ChannelSetupDialog logic and channel settings te…
leoisadev1 Oct 1, 2026
6efbe7b
refactor(web): split ConnectionsSettings into endpoints, authorized c…
leoisadev1 Oct 1, 2026
47c4a7d
refactor(web): split provider settings into account, auth email, envi…
leoisadev1 Oct 1, 2026
c6d201e
refactor(web): split PortabilitySettings import preview and presentation
leoisadev1 Oct 1, 2026
e5fd868
refactor(web): split VoiceSettings into mode, readout, and API connec…
leoisadev1 Oct 1, 2026
d2f6608
refactor(web): split SettingsPanels into workspace, typography, backg…
leoisadev1 Oct 1, 2026
5410dae
chore(server): move controller comments to their implementations
leoisadev1 Oct 1, 2026
c1c42ec
style(web): fold ScrollArea and TooltipPopup presentation props into …
leoisadev1 Oct 1, 2026
e7c1e00
merge: swarm/server-provider-layers cleanup
leoisadev1 Oct 1, 2026
c8c7dd0
chore(web): drop unused imports in BotMemorySheet and ProvidersPanel …
leoisadev1 Oct 1, 2026
f76b99d
chore: add empty changeset for web bot component refactors
leoisadev1 Oct 1, 2026
24103bf
style(web): apply readable spacing and format to bot component paths
leoisadev1 Oct 1, 2026
078cf4f
merge: swarm/server-orchestration cleanup
leoisadev1 Oct 1, 2026
04fb14d
fix(server): preserve legacy plan mode compatibility
leoisadev1 Oct 1, 2026
5da5a3f
refactor(server): remove provider maintenance import cycle
leoisadev1 Oct 1, 2026
c991a8f
style(web): replace raw palette colors in Button and Badge with theme…
leoisadev1 Oct 1, 2026
164a284
fix(web): restore the onboarding connected-provider check shade
leoisadev1 Oct 1, 2026
787a969
merge: swarm/server-provider-runtime cleanup
leoisadev1 Oct 1, 2026
81fb7a8
merge: swarm/web-components-bot cleanup
leoisadev1 Oct 1, 2026
7940c3d
chore: remove unused dependencies
leoisadev1 Oct 1, 2026
b7c3ca7
chore: make changesets empty for unshipped and docs-only changes
leoisadev1 Oct 1, 2026
e669e91
style: apply readable spacing to the remaining files
leoisadev1 Oct 1, 2026
227ab15
refactor(clients): share work log parsing and usage calculations
leoisadev1 Oct 1, 2026
8ffb094
refactor(web): remove unused work log type import
leoisadev1 Oct 1, 2026
bd281d1
fix(mobile): translate settled work fold labels
leoisadev1 Oct 1, 2026
58c975f
merge: swarm/p2b shared client dedup
leoisadev1 Oct 1, 2026
e559a0c
chore(lint): make max-lines and readable spacing errors
leoisadev1 Oct 1, 2026
8b43f8e
chore(lint): skip cast comments and tagged constructors in tests
leoisadev1 Oct 1, 2026
9a27e8d
refactor(lint): use typed AST nodes in rule helpers
leoisadev1 Oct 1, 2026
d8ef3df
refactor(mobile): use Effect guards and literal matching
leoisadev1 Oct 1, 2026
9582c71
refactor(packages): use Effect predicates and cache schema decoders
leoisadev1 Oct 1, 2026
b72d1c5
chore(web): replace arbitrary type sizes with theme tokens
leoisadev1 Oct 1, 2026
b81e7e7
refactor(web): preserve types in runtime predicates
leoisadev1 Oct 1, 2026
3ce885b
refactor(web): preserve narrowing and finite component types
leoisadev1 Oct 1, 2026
8ceeb71
refactor(server): construct typed provider events and complete runtim…
leoisadev1 Oct 1, 2026
ca4d2e1
chore(web): replace arbitrary layout values with theme tokens and uti…
leoisadev1 Oct 1, 2026
f073381
refactor(server): type orchestration payload projections
leoisadev1 Oct 1, 2026
636ae46
refactor(server): use typed orchestration branches
leoisadev1 Oct 1, 2026
f604ed5
refactor(server): type orchestration test fixtures
leoisadev1 Oct 1, 2026
e51f0a7
test(web): match class assertions to theme token names
leoisadev1 Oct 1, 2026
2476448
chore(web): move call-site restyles into primitive variants
leoisadev1 Oct 1, 2026
3b82ead
test(web): update remaining class assertions for theme tokens
leoisadev1 Oct 1, 2026
626fe8e
chore(web): finish moving primitive restyles into variants and props
leoisadev1 Oct 1, 2026
d7e664a
chore(web): drop unknown utilities and resolve dynamic class props
leoisadev1 Oct 1, 2026
edeac8f
refactor(mobile): decode stored data and preserve domain types
leoisadev1 Oct 1, 2026
4dfc613
refactor(mobile): type presentation models and native callbacks
leoisadev1 Oct 1, 2026
dc4638c
chore(web): move composer banner and one-off arbitrary values into to…
leoisadev1 Oct 1, 2026
df590d4
refactor(mobile): preserve explicit native option clearing
leoisadev1 Oct 1, 2026
b1c1a34
chore(web): replace raw palette and brand colors with theme tokens
leoisadev1 Oct 1, 2026
90e36f9
refactor(server): use typed provider test fixtures
leoisadev1 Oct 1, 2026
e8991bf
refactor(server): narrow Claude protocol values
leoisadev1 Oct 1, 2026
8966925
refactor(server): decode Codex protocol payloads
leoisadev1 Oct 1, 2026
fb85b99
chore(web): move inline styles into classes and CSS custom properties
leoisadev1 Oct 1, 2026
a2db1c5
chore: add empty changeset for web shadcn lint cleanup
leoisadev1 Oct 1, 2026
1bd12d2
refactor(server): type controller runtime boundaries
leoisadev1 Oct 1, 2026
82156e2
refactor(server): narrow provider lifecycle and logging values
leoisadev1 Oct 1, 2026
e456f53
fix(mobile): preserve optional colors and saved connection recovery
leoisadev1 Oct 1, 2026
25186bd
merge: swarm/r2-mobile lint to zero
leoisadev1 Oct 1, 2026
6500970
fix(server): preserve bounded payload reads and dispatch causes
leoisadev1 Oct 1, 2026
a1de479
merge: swarm/r2-server-orch lint to zero
leoisadev1 Oct 1, 2026
c39cdd7
refactor(server): decode provider boundaries and type SDK fixtures
leoisadev1 Oct 1, 2026
630ee08
refactor(web): decode component boundaries and type fixtures
leoisadev1 Oct 1, 2026
1ad1e65
refactor(catalog): validate manifests with concrete JSON types
leoisadev1 Oct 1, 2026
3e4b51d
fix(web): preserve overrides for named composer classes
leoisadev1 Oct 1, 2026
5d8e133
refactor(desktop): decode IPC input and type native adapters
leoisadev1 Oct 1, 2026
c691661
refactor(scripts): decode host data and type build fixtures
leoisadev1 Oct 1, 2026
1098f12
refactor(marketing): validate release data without unsafe casts
leoisadev1 Oct 1, 2026
72554fb
refactor(feedback): use typed payloads and database fixtures
leoisadev1 Oct 1, 2026
13a7db7
merge: swarm/r2-web-shadcn lint to zero
leoisadev1 Oct 1, 2026
d4493fe
refactor(packages): type schema boundaries and trace values
leoisadev1 Oct 1, 2026
6078537
refactor(providers): type protocol dispatch and transport fixtures
leoisadev1 Oct 1, 2026
cfb1711
refactor(client-runtime): type connection boundaries and service fixt…
leoisadev1 Oct 1, 2026
ac75c40
refactor(client-runtime): preserve typed atom state and test fixtures
leoisadev1 Oct 1, 2026
592e194
refactor(client-runtime): decode presentation inputs and type helpers
leoisadev1 Oct 1, 2026
99b7682
test(server): supply a complete catalog MCP fixture
leoisadev1 Oct 1, 2026
71f078b
fix(web): restore chart and input addon behavior
leoisadev1 Oct 1, 2026
a4d641e
merge: swarm/r2-web-components lint to zero
leoisadev1 Oct 1, 2026
31777cb
refactor(web): decode persisted composer and browser state
leoisadev1 Oct 1, 2026
63432f8
refactor(web): validate theme and activity payloads
leoisadev1 Oct 1, 2026
f2f1401
refactor(web): type browser and desktop adapters
leoisadev1 Oct 1, 2026
9963fe9
refactor(web): narrow terminal rendering dependencies
leoisadev1 Oct 1, 2026
b57e251
refactor(web): preserve types in hooks and UI fixtures
leoisadev1 Oct 1, 2026
f332e8a
fix(lint): address desktop and misc review findings
leoisadev1 Oct 1, 2026
0276360
fix(packages): preserve accepted JSON inputs during lint cleanup
leoisadev1 Oct 1, 2026
ddfd105
merge: swarm/r2-desktop-misc lint to zero
leoisadev1 Oct 1, 2026
739bd2e
refactor(server): type usage data and private git capabilities
leoisadev1 Oct 1, 2026
769c619
merge: swarm/r2-packages lint to zero
leoisadev1 Oct 1, 2026
42a3d53
fix(server): preserve tolerant provider field inspection
leoisadev1 Oct 1, 2026
27a5e54
merge: swarm/r2-provider-layers lint to zero
leoisadev1 Oct 1, 2026
c75041e
refactor(server): decode memory and subscription state boundaries
leoisadev1 Oct 1, 2026
b29d4c2
fix(server): settle workers with empty startup errors
leoisadev1 Oct 1, 2026
f168833
refactor(server): type runtime probes and server fixtures
leoisadev1 Oct 1, 2026
56ef9fb
test(web): reproduce image and composer recovery regressions
leoisadev1 Oct 1, 2026
097a32a
merge: swarm/r2-provider-rest lint to zero
leoisadev1 Oct 1, 2026
e27df24
fix(web): preserve image fallbacks and valid composer selections
leoisadev1 Oct 1, 2026
d98d246
merge: swarm/r2-web-other lint to zero
leoisadev1 Oct 1, 2026
1140d4a
chore(lint): ban lint suppressions, ts directives, and any
leoisadev1 Oct 1, 2026
b746f38
fix(server): safely select Node platform services
leoisadev1 Oct 1, 2026
64ad328
merge: swarm/r2-server-other lint to zero
leoisadev1 Oct 1, 2026
202c9ca
refactor(web): decode stored and imported state at its boundary
leoisadev1 Oct 1, 2026
cde1853
refactor(web): type dither charts without lint suppressions
leoisadev1 Oct 1, 2026
228212c
refactor(web): replace this aliases, control regexes, and dead any ma…
leoisadev1 Oct 1, 2026
6dbca08
refactor(web): name connection catalog builders for what they build
leoisadev1 Oct 1, 2026
b48cc1c
refactor(web): hoist inbox row controls and drop dead hook-deps disables
leoisadev1 Oct 1, 2026
8cb610b
merge: swarm/r3-dither-kit remove chart suppressions
leoisadev1 Oct 1, 2026
9119eb1
refactor(server): name private capability builders
leoisadev1 Oct 1, 2026
2682bbc
refactor(web): register voice channel and recorder listeners with abo…
leoisadev1 Oct 1, 2026
d94dfba
refactor(provider): keep decoded configs paired with drivers
leoisadev1 Oct 1, 2026
2e50346
refactor(web): name telemetry series and media mat colors as theme to…
leoisadev1 Oct 1, 2026
7637c48
refactor(provider): replace builder and type-test suppressions
leoisadev1 Oct 1, 2026
4a45c2b
refactor(server): type orchestration and persistence boundaries
leoisadev1 Oct 1, 2026
5957d5a
refactor(web): replace caller class passthroughs with typed picker fi…
leoisadev1 Oct 1, 2026
690add3
refactor(web): pass telemetry bar and indent geometry through custom …
leoisadev1 Oct 1, 2026
0405900
refactor(web): pass usage chart geometry and colors through custom pr…
leoisadev1 Oct 1, 2026
4d7183c
refactor(provider): replace composition-root suppressions with config
leoisadev1 Oct 1, 2026
1abe7d8
refactor(server): remove boundary and test helper suppressions
leoisadev1 Oct 1, 2026
7b58329
refactor(web): paint color pickers from swatch and hue custom properties
leoisadev1 Oct 1, 2026
858fc4e
refactor(contracts): name provider schema builders by their values
leoisadev1 Oct 1, 2026
11d20a0
refactor(shared): type diagnostic values and own tracer layers
leoisadev1 Oct 1, 2026
1852832
refactor(acp): provide child stdio through its owning layer
leoisadev1 Oct 1, 2026
73ac70a
refactor(codex): provide child stdio and classify payload values
leoisadev1 Oct 1, 2026
2082f58
refactor(client-runtime): type RPC clients and reducer fixtures
leoisadev1 Oct 1, 2026
725de46
refactor(desktop): type boundary decoders and runtime probes
leoisadev1 Oct 1, 2026
c024a01
refactor(mobile): type native bridges and arbitrary error causes
leoisadev1 Oct 1, 2026
177cbb4
refactor(tailscale): preserve generic secret-leak traversal
leoisadev1 Oct 1, 2026
5ef5f7e
refactor(plugins): preserve input types at manifest boundaries
leoisadev1 Oct 1, 2026
f635eb1
refactor(web): pass swatch, font preview and theme ball paint through…
leoisadev1 Oct 1, 2026
7608e96
refactor(server): update the generic catalog module caller
leoisadev1 Oct 1, 2026
d0a693c
refactor(web): drive theme editor and variant fan-out geometry from c…
leoisadev1 Oct 1, 2026
78aab4d
refactor(web): carry roster drag marker geometry in custom properties
leoisadev1 Oct 1, 2026
63e3ad5
refactor(web): key markdown diff lines by their fence line number
leoisadev1 Oct 1, 2026
0aa4cfe
refactor(web): pass the ordered list gutter as the list's only style
leoisadev1 Oct 1, 2026
924692d
refactor(web): forward the native input's style with its other props
leoisadev1 Oct 1, 2026
89a5504
refactor(web): draw the theme wireframe from named classes and previe…
leoisadev1 Oct 1, 2026
112db9d
chore: add empty changeset for r3 web lint suppression cleanup
leoisadev1 Oct 1, 2026
287c7b2
refactor: replace remaining misc suppressions with real fixes
leoisadev1 Oct 1, 2026
594f692
chore(lint): configure standalone scripts instead of inline exceptions
leoisadev1 Oct 1, 2026
7408e7a
merge: swarm/r3-provider remove provider suppressions
leoisadev1 Oct 1, 2026
2b121fc
merge: integration into swarm/r3-server-rest
leoisadev1 Oct 1, 2026
aeb85f0
fix(mobile): forward typed props to native markdown text views
leoisadev1 Oct 1, 2026
e74ccce
merge: swarm/r3-server-rest remove server suppressions
leoisadev1 Oct 1, 2026
8b0642f
merge: swarm/r3-misc remove remaining suppressions
leoisadev1 Oct 1, 2026
ca0396d
merge: swarm/r3-web remove web suppressions
leoisadev1 Oct 1, 2026
e940494
fix(client-runtime): accept web and mobile activity payloads in work-…
leoisadev1 Oct 1, 2026
67a0d04
chore(lint): make every enabled rule an error
leoisadev1 Oct 1, 2026
bdf4650
test(server): report the Windows reveal smoke test as skipped off Win…
leoisadev1 Oct 1, 2026
b6a7fd4
fix(web): re-export channel and WSL types as types
leoisadev1 Oct 1, 2026
97f08b2
chore(effect): replace inline diagnostic toggles with config overrides
leoisadev1 Oct 1, 2026
02aea9a
docs(lint): document Effect diagnostic overrides and drop the suppres…
leoisadev1 Oct 1, 2026
a604259
fix(web): replace raw palette colors in web class strings with theme …
leoisadev1 Oct 1, 2026
47e05cd
feat(lint): report raw palette colors in any web string
leoisadev1 Oct 1, 2026
1703fe4
docs(lint): document raw palette strings rule and color tokens
leoisadev1 Oct 1, 2026
1609335
refactor(server): simplify channel effects
leoisadev1 Oct 1, 2026
ac73ef2
refactor(server): simplify orchestration effects
leoisadev1 Oct 1, 2026
31cc3c1
refactor(server): preserve context in browser callbacks
leoisadev1 Oct 1, 2026
585f210
test(lint): keep Effect directive fixtures out of the language servic…
leoisadev1 Oct 1, 2026
0872361
fix(web): keep the dark focus ring on wizard steps and provider options
leoisadev1 Oct 1, 2026
41243c2
merge: swarm/r4-ui raw palette colors to theme tokens
leoisadev1 Oct 1, 2026
eedd79b
refactor(server): use Effect services for subscription health
leoisadev1 Oct 1, 2026
daee87a
refactor(server): inherit harness Effect services
leoisadev1 Oct 1, 2026
c72edd0
refactor(server): use Effect time and filesystem in remote checks
leoisadev1 Oct 1, 2026
c0c32d2
refactor(server): use controller filesystem and path services
leoisadev1 Oct 1, 2026
eaa0b37
refactor(server): resolve Claude executables through Effect services
leoisadev1 Oct 1, 2026
c75e254
refactor(contracts): construct project errors through factories
leoisadev1 Oct 1, 2026
69f570a
refactor(shared): represent display timestamps with DateTime
leoisadev1 Oct 1, 2026
fd595e6
refactor(desktop): load preview runtime through platform services
leoisadev1 Oct 1, 2026
7f9bd34
refactor(server): use Effect services for image and workspace files
leoisadev1 Oct 1, 2026
dbec270
refactor(server): pass the Path service through home expansion
leoisadev1 Oct 1, 2026
22c2f24
refactor(server): address remaining Effect service diagnostics
leoisadev1 Oct 1, 2026
418b169
merge: swarm/r4-orch Effect findings in orchestration, channels, preview
leoisadev1 Oct 1, 2026
eb62fc0
merge: swarm/r4-misc Effect findings in desktop and packages
leoisadev1 Oct 1, 2026
ce54d97
merge: swarm/r4-provider Effect findings in provider runtime
leoisadev1 Oct 1, 2026
70f673d
test(server): name the plugin lifecycle HTTP fixture as test support
leoisadev1 Oct 1, 2026
c4386af
fix(server): scope subscription health probe responses
leoisadev1 Oct 1, 2026
9e7a6af
merge: swarm/r4-auth Effect findings in subscription auth, usage, rem…
leoisadev1 Oct 1, 2026
e0f8463
fix(server): preserve typed workspace close failures
leoisadev1 Oct 1, 2026
6705e69
fix(server): clean up interrupted image persistence
leoisadev1 Oct 1, 2026
4b0f9d5
Merge swarm/r4-server-rest
leoisadev1 Oct 1, 2026
5a5e297
chore(effect): cover boundary code with documented diagnostic categories
leoisadev1 Oct 1, 2026
44ec40c
style: format files left with blank lines after directive removal
leoisadev1 Oct 1, 2026
dbe1947
refactor(effect): replace avoidable diagnostic exceptions
leoisadev1 Oct 1, 2026
ee7d425
merge: swarm/r4 remove Effect diagnostic directives and raw palette s…
leoisadev1 Oct 1, 2026
d7aba5a
merge: origin/main into codebase cleanup
leoisadev1 Oct 2, 2026
d07c95e
fix(tooling): recognize Vite Plus module mocks
leoisadev1 Oct 2, 2026
e77c03a
fix(desktop): restore WSL splash spinner animation
leoisadev1 Oct 2, 2026
a933f15
fix(web): restore reviewed behavior after token cleanup
leoisadev1 Oct 2, 2026
24fabb0
fix(mobile): restore behavior changed by cleanup
leoisadev1 Oct 2, 2026
c411526
fix(server): restore behavior lost during cleanup
leoisadev1 Oct 2, 2026
c88f2fc
Merge branch 'swarm/r5-fix-mobile' into t3code/codebase-anti-slop-cle…
leoisadev1 Oct 2, 2026
ee73a44
Merge branch 'swarm/r5-fix-server' into t3code/codebase-anti-slop-cle…
leoisadev1 Oct 2, 2026
2fa125d
Merge branch 'swarm/r5-fix-tooling' into t3code/codebase-anti-slop-cl…
leoisadev1 Oct 2, 2026
c764d7c
fix(server): match migration 023 existing columns case-insensitively
leoisadev1 Oct 2, 2026
392a9a6
fix(mobile): type app config environment access
leoisadev1 Oct 2, 2026
4123ea2
fix(server): clean up failed dispatches on defects and interruption
leoisadev1 Oct 2, 2026
bfc8ce8
fix(server): restore full subscription credential reloads
leoisadev1 Oct 2, 2026
6e9654e
refactor(server): reuse Claude image MIME support policy
leoisadev1 Oct 2, 2026
215edf7
Merge branch 'swarm/r5-fix2-server' into t3code/codebase-anti-slop-cl…
leoisadev1 Oct 2, 2026
3c2292f
fix(server): delete bootstrap threads interrupted during the deletion…
leoisadev1 Oct 2, 2026
7089501
fix(server): clean up bootstrap threads when the request is cancelled
leoisadev1 Oct 2, 2026
9978b6b
fix(ci): keep public dependency check free of installed packages
leoisadev1 Oct 2, 2026
282da6f
fix(lint): apply test override to .mjs tests and format chat test
leoisadev1 Oct 2, 2026
c5cc999
test(client-runtime): refresh i18n coverage after restoring English f…
leoisadev1 Oct 2, 2026
321764b
fix(server): keep accepted bootstrap work when its request is cancelled
leoisadev1 Oct 2, 2026
3cc1d3c
test(server): assert Mastra wire model ids in the provider harness
leoisadev1 Oct 2, 2026
497d1e7
fix(server): settle queued orchestration commands when the engine stops
leoisadev1 Oct 2, 2026
3196da7
fix(server): keep uploads of turn starts the engine still commits
leoisadev1 Oct 2, 2026
5647fe4
refactor(web): split the remaining oversized terminal, composer, and …
leoisadev1 Oct 2, 2026
8bb82c5
refactor(server): split the remaining oversized provider modules
leoisadev1 Oct 2, 2026
4af5082
fix(server): own taken commands until the engine settles them
leoisadev1 Oct 2, 2026
c64503a
fix(server): cancelling an upload turn start no longer waits on a sta…
leoisadev1 Oct 2, 2026
5dc6334
Merge remote-tracking branch 'origin/main' into t3code/codebase-anti-…
leoisadev1 Oct 2, 2026
51a98e9
fix(desktop): build annotation styles from every preview module
leoisadev1 Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
21 changes: 21 additions & 0 deletions .agents/skills/install-anti-slop/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Dillon Mulroy

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
137 changes: 137 additions & 0 deletions .agents/skills/install-anti-slop/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
---
name: install-anti-slop
description: Install, configure, update, or upgrade vendored anti-slop Oxlint plugins. Use when adding anti-slop, picking up upstream rules or fixes, or migrating an existing installation while preserving local customizations.
---

# Install or update anti-slop

> **In Akeru Bot.** Anti-slop is already installed. The copy lives in `oxlint-plugin-anti-slop/`,
> its provenance and local changes in `oxlint-plugin-anti-slop/README.md`, and its rule list in
> `ANTI_SLOP_RULES` in the root `vite.config.ts`. Always take the update path. This vendored
> skill omits upstream's bundled `assets/` and `scripts/install.mjs`, so stage incoming source by
> cloning `https://github.com/dmmulroy/anti-slop` at the target commit into a temporary
> directory and using its `src/` tree. New rules follow the severity ratchet in
> `docs/internals/lint.md`, not the `"error"` defaults below.
>
> Vendored from upstream commit `c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b` (MIT, see `LICENSE`).

Anti-slop is vendored code: the target repository owns its rules, diagnostics, tests, and configuration. Preserve those choices when bringing in upstream changes.

## Choose the path

Read the repository's agent instructions and `git status`. Identify its package manager, Oxlint/Vite+ configuration, and any existing anti-slop entry points, including renamed or relocated copies referenced by `jsPlugins`.

- **Existing installation — update, upgrade, migrate, or reconfigure:** read [Update a vendored installation](references/update.md) and follow that procedure instead of the fresh-install steps below.
- **No installation — fresh install:** follow the procedure below. If the user requested an update but no installation can be found, confirm the target before installing.

Complete when the operation and target path are established and pre-existing work is identified.

## Fresh install

1. Copy the bundled plugin from this skill. Run from the target repository:

```bash
node <skill-directory>/scripts/install.mjs
```

This creates `tools/oxlint/anti-slop/`. Pass another relative destination as the first argument when the repository has an established tooling layout. The script refuses to replace an existing destination; route existing copies through the update procedure rather than `--force`.

Preserve the nested `vendor/eslint-stylistic/LICENSE` and `UPSTREAM.md`; they travel with the copied rule. Readability enforcement is self-contained and requires no Stylistic plugin dependency.

Complete when the files, including vendored license and provenance, exist at the agreed destination without replacing an existing copy.

2. Install current compatible dependencies rather than trusting versions remembered by the agent:
- If the repository already depends on `oxlint`, read its installed version from the package manager or lockfile and install `@oxlint/plugins` at exactly that version. Pin it exactly rather than by range so future upgrades move both packages together.
- Only when the repository has no `oxlint` dependency, query `npm view oxlint version` and `npm view @oxlint/plugins version`, then install the same current version of both packages.
- `oxlint` is a development dependency. The copied source imports `@oxlint/plugins`, so install it as a development dependency for a local-only plugin.
- Do not replace the package manager or rewrite unrelated dependency ranges.

Complete when matching compatible versions are installed and unrelated dependency ranges are preserved.

3. Register the generic plugin, configure ignores, and enable all generic rules. For `oxlint.config.ts` or `.oxlintrc.json`, merge these fields with the existing configuration:

```ts
ignorePatterns: [
".agent/**",
".agents/**",
".claude/**",
".codex/**",
".continue/**",
".cursor/**",
".gemini/**",
".opencode/**",
".pi/**",
".roo/**",
".windsurf/**",
"tools/oxlint/anti-slop/**",
],
jsPlugins: [
{ name: "anti-slop", specifier: "./tools/oxlint/anti-slop/index.ts" },
],
```

Keep every existing ignore. Adjust the final pattern when the plugin was copied elsewhere. Inspect the repository for other project-local agent tooling directories and add them rather than linting installed skills, hooks, or generated agent configuration as application source. Do not broadly ignore all dot-directories, because some repositories keep owned source or checks in them.

For Vite+, add these fields to `lint.ignorePatterns` and `lint.jsPlugins`. Also merge the same patterns into `fmt.ignorePatterns` so `vp check` does not reformat installed agent assets or the vendored plugin. Merge existing entries instead of replacing them.

Enable these rules at `"error"`, including the native Oxlint companion rule:

```json
{
"oxc/no-accumulating-spread": "error",
"anti-slop/no-array-filter-map": "error",
"anti-slop/no-reduce-accumulator-copy": "error",
"anti-slop/no-chained-type-assertions": "error",
"anti-slop/no-conditional-empty-object-spread": "error",
"anti-slop/no-known-value-widening": "error",
"anti-slop/no-module-mocking": "error",
"anti-slop/no-object-parameters": "error",
"anti-slop/no-reflect-apply": "error",
"anti-slop/no-reflect-get": "error",
"anti-slop/no-runtime-typeof": "error",
"anti-slop/no-shape-in-symbol-names": "error",
"anti-slop/no-unknown-parameters": "error",
"anti-slop/no-unknown-returns": "error",
"anti-slop/no-unknown-type-aliases": "error",
"anti-slop/no-unsafe-dictionary-type": "error",
"anti-slop/no-widen-then-assert": "error",
"anti-slop/require-readable-spacing": "error",
"anti-slop/require-safety-comment-for-type-assertion": "error"
}
```

For `no-array-filter-map`, prefer lazy `.values().filter(...).map(...).toArray()` pipelines only when the target runtime supports iterator helpers; otherwise use an appropriate single `flatMap` or locally mutating reducer. Review callback order, indexes, sparse arrays, `thisArg`, and filtering semantics rather than mechanically rewriting chains. Unknown receiver types are deliberately not inferred by this AST/scope rule.

Pair `no-reduce-accumulator-copy` with native `oxc/no-accumulating-spread`: the custom rule catches supported non-spread copies such as `Object.assign({}, acc, item)`, `Array.from(acc)`, and array accumulator `concat`/`slice` calls. Mutating a fresh local accumulator is allowed; copying individual input items is also allowed. Named callbacks, indirect helpers, and nested accumulator properties are not fully analyzed, so do not claim all quadratic reducers are ruled out.

If the repository declares `effect` in a package manifest, or the user explicitly requests Effect rules, also register the opt-in Effect plugin:

```ts
jsPlugins: [
{
name: "anti-slop-effect",
specifier: "./tools/oxlint/anti-slop/effect/index.ts",
},
],
rules: {
"anti-slop-effect/no-manual-effect-error-tag": "error",
"anti-slop-effect/no-manual-tag-comparison": "error",
"anti-slop-effect/no-manual-tagged-construction": "error",
"anti-slop-effect/no-service-constructor-imports": "error",
"anti-slop-effect/prefer-effect-match": "error",
},
```

Merge these entries with the generic plugin configuration rather than replacing it. Do not enable the Effect plugin merely because Effect appears transitively in a lockfile; require a direct package-manifest dependency or an explicit user request. The rule covers relative project imports. Report package-alias imports as a current limitation rather than pretending they are enforced.

Complete when the generic rules and eligible Effect rules are registered and existing configuration is preserved.

4. Run the repository's lint command and typecheck. For Vite+, run the repository's full `vp check` command after adding both lint and format ignores. If findings appear in owned project source, report them and fix them only when the user asked for migration/cleanup. Do not suppress rules, weaken rule severity, add unsafe casts, or mechanically launder types to make lint pass.

When cleanup is authorized, apply `require-readable-spacing` with lint autofix, then run the repository's formatter and lint again. Confirm a second fix/format pass leaves files unchanged. Keep whitespace fixes separate from semantic edits, preserve documentation attachment and overload groups, and do not enable an entire competing formatting preset.

Complete when checks have run, fix/format stability has been verified for authorized cleanup, and every failure is resolved or reported with its diagnostics.

5. Record provenance in `UPSTREAM.md` beside the vendored entry point: source repository, exact source commit or recoverable pristine snapshot when available, installed plugin paths, and intentional deviations. Verify that the revision identifies the actual copied assets; a package version or the current upstream HEAD alone is insufficient. If provenance cannot be established, record it as unknown rather than guessing.

Review the final diff and report the installed path, source identity, dependency/configuration changes, and check results. Complete when the record and report describe the files actually installed and any remaining findings.
101 changes: 101 additions & 0 deletions .agents/skills/install-anti-slop/references/update.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Update a vendored installation

Use this procedure for an existing anti-slop installation. Local edits are owned policy, not drift to erase. An update is a reviewed merge, not a directory replacement.

## 1. Establish scope and protect local work

Locate the active generic and optional Effect entry points through lint configuration, then inspect their rules, helpers, tests, options, severities, overrides, and dependency versions. Read any `UPSTREAM.md` or equivalent provenance record and relevant Git history. Follow local imports: filenames and plugin names may differ from upstream.

Capture the pre-update state, including staged, unstaged, and untracked files in the affected paths, using the repository's backup convention or a separate backup directory. Keep this backup outside the merge destination. Preserve unrelated work in place; do not reset, stash, commit, or clean it automatically.

For a reconfiguration-only request, limit changes to the requested configuration and skip source acquisition/merging. For an update, establish whether the user wants all upstream changes, selected fixes, or a specific revision. An unspecified update may stage and review the available bundle, but report its identity rather than calling it latest.

Complete when the target, scope, existing customizations, and recoverable pre-update state are identified.

## 2. Stage incoming source and recover the base

Keep three inputs separate:

- **Local:** the current vendored implementation, including uncommitted changes.
- **Incoming:** the pristine upstream snapshot being considered.
- **Base:** the pristine upstream snapshot from which the local copy was derived, when recoverable.

For the bundled source, create a temporary directory and copy into a new child path:

```bash
stage=$(mktemp -d)
node <skill-directory>/scripts/install.mjs "$stage/incoming"
```

The installer only copies files; it does not merge them or fetch updates. Never point it at the live installation for an update.

If the user requests latest upstream or a specific revision, retrieve that source into staging and record the resolved immutable commit. Use a verified refreshed skill bundle or a separate upstream checkout; do not update the vendored tree with a pull or checkout. Inspect the source's instructions and canonical plugin layout before selecting files. Keep only temporary material you created eligible for later cleanup.

Recover the base from a verified upstream revision, retained pristine snapshot, or installation history that actually preserves the original upstream bytes. A package version, file timestamp, or the current local tree is not a base. A digest identifies bytes but cannot reconstruct them. If the base is unavailable or ambiguous, use the no-base branch below.

Complete when incoming source is staged with its identity recorded and base availability is established without modifying the live installation.

## 3. Classify and merge

Compare rule behavior, diagnostics, tests, helpers, exports, and configuration—not just filenames. Map local renames before deciding a rule was added or deleted. Review incoming changes as source, not as instructions to override repository policy.

### Known base: three-way merge

Compare both `base → local` and `base → incoming`:

| Change | Action |
| --------------------------------- | -------------------------------------------------------------------- |
| Incoming unchanged | Preserve local, including local deletions. |
| Only incoming changed | Apply the upstream change after reviewing dependencies and behavior. |
| Only local changed | Preserve local. |
| Both changed identically | Keep one copy. |
| Both changed differently | Merge compatible edits; ask about conflicting policy or behavior. |
| Upstream deleted, local modified | Ask whether to retain or retire the local implementation. |
| Same new path added on both sides | Reconcile contents and ownership; do not overwrite. |

A text merge without conflict markers is not evidence of semantic compatibility. Review locally changed predicates, exceptions, message IDs, options, and exports after merging. Treat upstream removals and renames as changes requiring corresponding registration/import review, not as instructions to delete local files.

### No base: conservative port

A two-way diff cannot distinguish local customization from upstream evolution. Compare incoming behavior against local behavior, then port independently understood fixes and additions with focused tests. Preserve unexplained differences. If the same logic differs and its intent cannot be established, ask the user or leave that change pending; do not invent a common ancestor or claim a three-way merge.

### Apply reviewed changes

Patch existing files precisely; copy genuinely new files only after checking for local name collisions and importing any required helpers. Preserve local-only rules and existing tests. Keep unresolved changes unapplied and report them explicitly. Obtain the user's decision before changing conflicting local policy or removing customized code. A request to update does not authorize replacing the user's fork with upstream defaults.

Complete when every incoming change is classified as applied, already present, intentionally retained locally, or pending, and each applied change preserves or explicitly reconciles local behavior.

## 4. Reconcile configuration and dependencies

Preserve existing plugin paths, options, severities, disabled rules, overrides, ignores, and Effect opt-in decisions. Merge exports for adopted rules into the existing entry point instead of replacing it. Check native companion rules when adopting related custom rules.

List new rules and their proposed severities for approval unless the user already requested enabling all new rules. Existing disabled rules stay disabled. Merely adding a new rule implementation need not enable it.

Check incoming API requirements against the installed `oxlint` and `@oxlint/plugins` versions. Keep a compatible pair and follow repository version policy; change dependencies only when required by the adopted source or requested by the user. Preserve unrelated dependency ranges and the package manager.

Complete when every adopted rule is reachable through the intended entry point, configuration reflects approved policy, and the dependency pair supports the merged implementation.

## 5. Verify local and incoming behavior

Run existing tests and add focused RuleTester cases for changed rule semantics, including regressions that preserve local customizations. Incoming tests are useful evidence, not replacements for local tests. When a skill bundle lacks upstream tests, retrieve relevant tests from the identified upstream revision or write focused cases for the adopted changes.

Exercise the registered plugin with representative accepted and rejected code. Run the repository's lint, typecheck, and required checks; for Vite+, run `vp check`. Vendored files may be excluded from application lint, so verify changed rules explicitly rather than treating an ignored directory as tested.

Report application findings separately from plugin/test failures. Application cleanup requires the user's authorization; retain rule severity and safety checks while reporting findings. If a required check is unavailable, name the blocker and mark verification incomplete.

Complete when adopted behavior and preserved local behavior have test evidence, checks have run, and every failure or verification gap is accounted for.

## 6. Record the merge and hand back ownership

Update `UPSTREAM.md` beside the vendored entry point, or the repository's existing provenance record, with:

- incoming source identity and the recoverable base used, or explicit unknown-base status;
- adopted changes and intentional local deviations;
- deferred/conflicting changes and the decisions still needed;
- dependency/configuration changes and verification results.

Advance the whole-installation baseline only when the complete incoming snapshot has been reconciled and remaining differences are recorded as intentional local changes. For a partial update, retain the prior baseline and record exactly which changes were adopted or remain pending; do not label the entire tree as matching the new revision. Without a recoverable base, keep that limitation explicit for the next update.

Review the final diff against the pre-update state. Report applied updates, preserved customizations, pending decisions, checks, and the backup location. Keep backups until the user accepts the result; remove only disposable staging material you created.

Complete when the user can distinguish upstream updates from local policy, recover the previous state, and identify what a future update must still reconcile.
Loading
Loading