Peter Steinberger
f6fff4f7fd
refactor: canonicalize aliases and classify test suites ( #122407 )
...
* refactor: use canonical re-export names
* fix(test): classify suite support as test source
* fix(agents): retarget gateway stub session-entry import
* test(gateway): retarget session-utils mock keys after alias removal
2026-08-11 21:18:34 -07:00
Peter Steinberger
fada067277
feat(browser): add zero-click Chrome extension bootstrap ( #121586 )
...
* feat(browser): add zero-click extension bootstrap
Pre-register deterministic path-derived extension IDs and install a strict native messaging host.
Keep the popup and options UI minimal while removing the obsolete copilot and page-share flows.
* fix(browser): satisfy native bootstrap CI guards
* test(browser): isolate native bootstrap Chrome roots
* test(browser): flush native bootstrap profile before status
* test(browser): seed Linux native bootstrap identity
* fix(browser): preserve native bootstrap upgrade safety
Allow immutable root-owned package inputs while keeping mutable state, manifests, and launchers user-owned. Preserve all retired copilot keys whenever active or unrecognized recovery custody remains.
* fix(browser): preserve pending copilot custody
Retired cleanup now removes copilot state only when the durable registry is exactly empty. Any session, archive, malformed value, future shape, or read failure preserves every retired key.
* fix(browser): guard native bootstrap upgrades
Fail closed while retired copilot custody remains and make discard durable across partial failures.
Require exact launcher-embedded origins and repair full launcher drift without accepting mismatched registrations.
* fix(browser): remove stale layout export
* chore(release): leave changelog to release flow
2026-08-10 19:31:13 -07:00
Peter Steinberger
3ebb0ca3b6
chore(lint): resolve the 40 reserved baseline findings to a zero-noise lint:all ( #118256 )
...
* fix(lint): resolve reserved runtime findings
* chore(lint): scope intentional contract findings
* fix(android): preserve WebMessageListener bridge contract
2026-08-02 16:08:57 -07:00
Peter Steinberger
a1e0c9ea09
refactor(packages): DM-policy contract suite, dead routes, package folds ( #114776 )
...
* test(channels): share DM policy contract suite
* refactor(memory): remove dead host CLI routes
* refactor(acp): use canonical normalization helpers
* refactor(web): fold provider runtime into core
* refactor(packages): remove dead runtime exports
* chore(knip): drop retired ACP entry roots
2026-07-27 20:20:13 -04:00
Peter Steinberger
3dc3370d9e
fix(copilot): keep tool transcript groups structurally complete ( #114403 )
...
* refactor(copilot): make SQLite own transcripts
* fix(copilot): harden transcript event projection
* test(copilot): tighten transcript journal types
* fix(copilot): retain unmatched usage metadata
* refactor(copilot): commit tool groups atomically
* fix(copilot): break journal bridge import cycle
* fix(copilot): preserve grouped transcript replay
* test(copilot): cover opaque replay state
* fix(copilot): invalidate lossy transcript replay
* fix(copilot): guard transcript rewrite topology
* fix(copilot): drain transcript finalization
* fix(copilot): preserve resumed session history
* fix(copilot): dedupe replayed transcript snapshots
* fix(copilot): isolate transcript write hooks
* fix(copilot): track staged transcript identities
* fix(copilot): isolate ephemeral transcript events
* fix(copilot): coalesce assistant snapshots
* fix(copilot): invalidate unprojected SDK context
* fix(copilot): guard resumed transcript replay
* fix(plugin-sdk): expose strict transcript append
* fix(copilot): persist journal provenance safely
* fix(copilot): separate live and durable deltas
* fix(copilot): require durable projection ownership
* fix(copilot): preserve strict append typing
* fix(copilot): gate deferred session deletion
* fix(copilot): preserve transcript replay identity
* fix(copilot): retain cited replay history
* fix(copilot): require complete replay provenance
* fix(copilot): reject ambiguous assistant snapshots
* fix(copilot): return latest assistant snapshot
* chore(copilot): align transcript lint gates
* test(lint): cover Copilot line budgets
* test(ci): dedupe Codex prewarm shard
2026-07-27 15:42:00 -04:00
Peter Steinberger
ec8f6e5e03
feat(browser): add secure per-tab copilot panel ( #109817 )
...
* feat(browser): add copilot security contracts
* fix(gateway): expose verified client identity to handlers
* feat(browser): add secure per-tab copilot panel
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* refactor(browser): separate copilot gateway hint custody
* fix(browser): preserve legacy pairing parse shape
* fix(browser): harden copilot lifecycle custody
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): enforce copilot lifecycle boundaries
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* style(browser): format copilot sources
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): preserve copilot consent revocation
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* refactor(browser): split copilot custody owners
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(browser): normalize websocket array buffers
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* chore(protocol): regenerate Swift gateway models
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* refactor(browser): model copilot runtime entrypoints
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): honor extension build boundaries
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(gateway): assert targeted chat delivery
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(gateway): cover targeted delivery calls
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): declare copilot build dependencies
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(ci): clear browser copilot gate failures
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(ci): cover copilot lint exclusion
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): gate copilot on relay custody
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(browser): bound copilot relay frames
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
---------
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
2026-07-18 01:00:23 +01:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
56e9d3b05f
refactor(browser): scope async route lint exception
2026-07-13 18:37:46 -07:00
Peter Steinberger
3442825e6b
refactor(browser): use Express 5 async routes
2026-07-13 18:21:52 -07:00
Peter Steinberger
4b751ce48a
feat(tooling): complete packages/* noUncheckedIndexedAccess adoption (phase 2) ( #104626 )
...
* feat(tooling): extend strict-ratchet lane to all remaining leaf packages
* fix(packages): burn down indexed-access debt in ai and agent-core
All 196 noUncheckedIndexedAccess errors fixed behavior-identically
(iteration, .at()/slices, DataView byte math, guarded queue peeks) plus
cleanup finds: a sparse-tool diagnostic bug, deduplicated Responses
call/item ID parsing with an honest string|undefined splitter, and a
clearer local failure for redacted-thinking blocks missing signatures.
Removes all 17 remaining non-null assertions across ai, gateway-client,
and llm-core so the assertion ban aligns 1:1 with the ratchet lane.
speech-core joins memory-host-sdk as structurally deferred (imports
src/** via plugin-sdk path mappings).
2026-07-11 11:54:06 -07:00
Peter Steinberger
e686693732
feat(tooling): adopt noUncheckedIndexedAccess via a strict-ratchet lane (phase 1) ( #104577 )
...
* feat(tooling): add noUncheckedIndexedAccess strict-ratchet lane
* fix(packages): make indexed access explicit across ratchet packages
Burns down all 65 noUncheckedIndexedAccess errors in the seven ratchet
packages with behavior-identical restructuring (iteration, charAt/slice,
regex-group guards, validated hextet tuple). net-policy invariant
violations now throw instead of failing open. Adds
@openclaw/normalization-core/expect (expectDefined/first/last) with
subpath export and tests. memory-host-sdk fixes kept but the package
stays out of the lane: it re-exports core src/** so the flag would apply
transitively to all of core.
* fix(lint): keep .oxlintrc.json strict-JSON parseable for extension lint wrappers
2026-07-11 10:26:12 -07:00
Peter Steinberger
ae12413ee2
chore(tooling): enforce no-floating-promises and drop DOM globals from Node-side typechecking ( #104422 )
...
* chore(lint): enforce no-floating-promises repo-wide
* feat(tooling): split DOM globals out of the Node-side typecheck program
tsconfig.core.json now compiles src/ + packages/ with lib ES2023; new
tsconfig.ui.json owns ui/ with DOM. Web-global names used by Node code
alias to canonical undici/stream-web types; highlight.js loads through a
validated narrow API because its d.ts force-includes lib.dom. Boundary,
sparse-guard, changed-lane routing, and profile lanes cover the new ui
graph.
* chore(deps): declare undici-types and teach knip about the highlight.js runtime require
* ci: retrigger dropped pull_request synchronize event
* refactor(types): derive web-global aliases from @types/node fetch globals, drop undici-types dep
* ci: retrigger after dependency guard cleared
* fix(scripts): add ui lane to changed-lanes declaration union
2026-07-11 07:28:20 -07:00
Peter Steinberger
ea5d4b7943
chore: enable array fill lint rule ( #100122 )
...
* chore: enable array fill lint rule
* chore: enable array fill lint rule
* chore: enable array fill lint rule
2026-07-04 21:51:08 -04:00
Peter Steinberger
0427fa35fb
chore: update oxlint tsgolint ( #100083 )
...
* chore: update oxlint tsgolint
* chore: sync Canvas A2UI bundle
2026-07-04 16:41:15 -04:00
Peter Steinberger
27dde7a4d6
chore(lint): enable stricter error rules
2026-06-01 01:12:21 +01:00
Peter Steinberger
22cb7fb6b7
chore(lint): enable no-promise-executor-return
2026-05-31 23:06:13 +01:00
Peter Steinberger
b653d94918
chore(lint): enable no-useless-assignment
2026-05-31 22:40:48 +01:00
Peter Steinberger
2df95c0b10
chore(lint): enable no-misused-promises
2026-05-31 20:42:13 +01:00
Peter Steinberger
304e2c83c0
chore(lint): enable stricter oxlint rules
2026-05-31 18:59:02 +01:00
Peter Steinberger
4ef141d525
fix(agents): prevent embedded runtime shadowing
2026-05-31 16:13:01 +01:00
Peter Steinberger
3950605561
chore(lint): tighten lint exception coverage
2026-05-31 10:42:59 +01:00
Peter Steinberger
f5eca3f84c
chore(lint): enable object and reassignment rules
2026-05-31 09:32:52 +01:00
Peter Steinberger
b81adc6202
fix(ci): keep unsafe assertion lint disabled
2026-05-31 04:09:48 -04:00
Peter Steinberger
59694e86d9
chore(lint): enable structured clone rules
2026-05-31 08:34:28 +01:00
Peter Steinberger
b9fe0894a6
chore(lint): enable additional cleanup rules
2026-05-31 08:16:11 +01:00
Peter Steinberger
4eba3e5d7d
chore(lint): enable more readability rules
2026-05-31 07:38:33 +01:00
Peter Steinberger
deb7bc6539
chore(lint): enable readability lint rules
2026-05-31 07:17:57 +01:00
Shakker
de83e9eb87
fix: lint centralized skills subsystem
2026-05-29 17:35:02 +01:00
Dallin Romney
d638611684
feat: split diffs language pack
...
Split the diffs viewer Shiki language pack into an external publishable plugin.
The diffs plugin keeps the default curated syntax set, while the new @openclaw/diffs-language-pack package carries the extended Shiki languages for npm and ClawHub distribution. The install metadata includes the external ClawHub spec, and the curated C# alias set keeps both c# and cs supported without the language pack.
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
2026-05-27 18:08:40 +01:00
Peter Steinberger
4f4d108639
chore(lint): remove underscore-dangle allow list ( #83542 )
...
* chore(lint): reduce underscore-dangle exceptions
* chore(lint): reduce more underscore exceptions
* chore(lint): remove underscore-dangle allow list
* fix(lint): repair underscore cleanup regressions
* test(lint): track version define suppression
2026-05-18 14:56:06 +01:00
tanshanshan
a51ee5b02d
chore(lint): enable no-underscore-dangle
2026-05-18 10:26:24 +01:00
Peter Steinberger
30e54b839b
build: enable additional oxlint rules
2026-05-11 03:56:34 +01:00
Peter Steinberger
3ff4d926d0
build: expand vitest lint coverage
2026-05-11 03:26:07 +01:00
Peter Steinberger
25a473a48e
build: enable vitest safety lint rules
2026-05-11 02:46:08 +01:00
Peter Steinberger
257383139f
ci: stabilize oxlint unused import policy ( #72101 )
2026-05-09 06:36:20 -04:00
Peter Steinberger
a7b76835d4
ci: ignore generated extension viewer asset in lint
2026-05-03 13:28:30 +01:00
Peter Steinberger
4760ee4055
chore: remove root assets
2026-05-03 13:20:26 +01:00
Peter Steinberger
869103684f
chore: move swabble into apps
2026-05-03 13:10:25 +01:00
Peter Steinberger
bee47a8be9
ci: keep oxlint config cross-version
2026-05-01 19:27:42 +01:00
Vincent Koc
847a9d26f7
fix(ci): allow intentional underscore lint names
2026-05-01 11:26:10 -07:00
Peter Steinberger
cbf4f0f87a
test(ci): fix lint config and speed dispatch tests
2026-05-01 19:16:10 +01:00
Peter Steinberger
83267e99b0
chore: update dependencies
2026-04-29 22:42:45 +01:00
Peter Steinberger
e3caacd530
lint: enforce exhaustive switches
2026-04-23 06:02:12 +01:00
Vincent Koc
ccde1c4707
fix(tooling): drop stale oxlint unicorn rule
2026-04-22 21:46:29 -07:00
Peter Steinberger
fdf97a8784
chore: enable additional oxlint rules
2026-04-23 05:30:49 +01:00
Peter Steinberger
f3c60e9c0d
fix(lint): remove unsupported no-empty-pattern options
2026-04-23 05:22:37 +01:00
Peter Steinberger
9937452405
build: enable more zero-baseline oxlint rules
2026-04-23 05:03:58 +01:00
Peter Steinberger
2e40ca2c15
build: enable additional oxlint rules
2026-04-23 04:42:54 +01:00
Peter Steinberger
576dbdeef7
build: enable new oxlint rules
2026-04-23 04:23:34 +01:00
Peter Steinberger
155162a8cd
chore(lint): enable additional cleanup rules
2026-04-18 20:37:13 +01:00