You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Commit c3ff635 (2026-03-28) reverted 153 commits in a single bulk rollback, restoring master to 1362d69. This revert was necessary at the time, but it also removed bug fixes, features, and improvements that had been reviewed, approved, and merged.
This issue tracks which commits have already been independently re-applied during the microkernel refactor and which are still missing and worth recovering.
Known recovery issues:#5259 (WeChat iLink channel), #2503 (NapCat/OneBot channel)
Note on deleted PRs: Some PR numbers referenced in commit messages return 404 on GitHub. A co-author on several of these commits (SimianAstronaut7, who also authored the revert) had their account blocked, which removed associated PRs and issues. Some external contributor PRs that list SimianAstronaut7 as co-author are also missing β likely opened from that account's fork. Where the PR record is missing, the entry links to the commit instead.
Status key
β Re-applied β verified present in the current codebase
π² Missing β verified absent, candidate for recovery
π Superseded β the underlying code was refactored or the bug no longer applies in the new architecture
βοΈ Skip β merge commit, dep bump, or whitespace-only
20238a26 (commit) β Rust version check for build failures (covered by the current install.sh / installer rewrite path, which validates the Rust toolchain before relying on source builds.) β
961d13ad (commit) β rate-limit cooldown + model compatibility (re-applied by fix(provider): cool down rate-limited fallback entriesΒ #8317 / 6d2ce03: current provider fallback entries cool down after rate-limit responses instead of immediately retrying incompatible or exhausted routes.) β
2d73133d (commit) β feishu transport media (re-applied by feat(channels/lark): restore outbound media markersΒ #8113 / b980e3a: current Lark/Feishu outbound sends parse shared [IMAGE:], [PHOTO:], [DOCUMENT:], [FILE:], [VIDEO:], [AUDIO:], and [VOICE:] markers and route marker-derived attachments through the current Lark upload/send path.) β
8416af7d (commit) β local time for runtime_trace timestamps (production path at line 216 uses Local::now(); remaining Utc calls are temp file naming and tests only) β
1e477f52 (commit) β respect max_history_messages in channel mode (orchestrator/mod.rs:1211) β
b7f3d0c9feat(matrix): add mention_only config for group room filteringΒ #4680 β Matrix mention_only for group room filtering (re-applied by feat(matrix): clean-room rewrite on matrix-rust-sdk 0.16Β #6112 / ce3a968: current MatrixConfig.mention_only gates group rooms through is_group_room plus mention::is_mentioned, using m.mentions.user_ids when present and full MXID/localpart/display-name body fallback otherwise; direct rooms bypass via room.is_direct(). Focused validation passed: cargo test -p zeroclaw-channels mention --features channel-matrix -- --nocapture with 65 passed / 0 failed. The old string-strip helper is superseded by the Matrix SDK rewrite rather than carried as a separate preprocessing step.) β
959057abfeat(tools): wire session tools to composite backend for gateway visibilityΒ #4852 β wire session tools to composite backend for gateway visibility (re-applied by fix(runtime, channels): unify session backend behind one factoryΒ #6384 / c6a0ed7: current runtime session tools, channel orchestrator, and gateway /ws/chat persistence all call zeroclaw_infra::make_session_backend, so [channels].session_backend is the single configured store and gateway sessions are visible to sessions_list, sessions_history, and sessions_send. The old read-time CompositeSessionBackend wrapper is superseded by the factory plus SQLite-default JSONL import path. Focused validation passed: cargo test -p zeroclaw-infra make_session_backend --lib -- --nocapture with 4 passed / 0 failed.) β
96643394feat(channels): precheck reply intent before typing or draft sendΒ #4850 β precheck reply intent before typing/draft (re-applied in current channel orchestration: classify_channel_reply_intent / parse_reply_intent classify visible-reply intent, the no-reply gate runs before draft creation and typing setup in process_channel_message_body, and no-reply outcomes record a history marker plus reaction/log evidence. Focused validation passed: cargo test -p zeroclaw-channels precheck --lib with 2 passed / 0 failed.) β
3ce90480 (commit) β respect path_prefix in get-paircode command (gateway routes nested under prefix at lib.rs:1100) β
a68f2dd3fix(channels): close draft sender after tool loopΒ #4301 β close draft sender after tool loop (current orchestrator drops delta_tx before awaiting the draft updater at crates/zeroclaw-channels/src/orchestrator/mod.rs:3422; original Telegram draft-hang regression is not present) β
798aa936 (commit) β native Firejail/Bubblewrap hardening (re-applied/superseded by fix(runtime): restore native sandbox hardeningΒ #7683 / 34107bb3: current native sandbox wrapping adds supported Firejail seccomp/capability/noroot hardening and Bubblewrap capability drops behind backend support detection, while deliberately avoiding the old invalid bare Bubblewrap --seccomp path and not restoring the older unavailable-backend fail-closed attempt.) β
9fda248c (commit) β preserve web chat history across page reloads (superseded by the current GET /api/sessions/{id}/messages API plus AgentContext hydration/localStorage fallback; the backend also sends session_start and seeds the agent with stored messages on WebSocket resume) π
f17c6dce (commit) β disable responses API fallback for custom OpenAI providers (superseded by the current provider split: custom: uses chat completions through OpenAiCompatibleProvider; /v1/responses is handled by OpenAiCodexProvider / wire_api = "responses" profiles, not a 404 fallback path) π
6aab1288fix(channels): add channel-lark to default features to support Lark/Feishu long connectionΒ #4444 β add channel-lark to default features (covered by current workspace feature graph: root default enables agent-runtime, agent-runtime enables channel-lark, and channel-lark forwards to zeroclaw-channels/channel-lark; Docker builds do not use --no-default-features, so the same default applies there) π
41c0abbf (commit) β whitelist safe shell redirects (covered by fix(security): allow safe device redirect targets in path policyΒ #6236 / ad34fa3f; current policy allows safe /dev redirects and fd redirects while still blocking file redirects and /dev path-boundary bypasses, with focused redirect-policy tests) β
c373d6c9feat: add movie extension with Douban and TMDB supportΒ #4815 β movie extension with Douban + TMDB (superseded as a recovery row: the old extension tree is gone, and replaying the monolithic movie extension would not fit the current crate/plugin shape. A movie/media lookup feature should be scoped fresh if the project still wants it.) π
070a0c20feat: adopt AGENTS.md as primary agent instruction formatΒ #4290 β adopt AGENTS.md as primary instruction format (partially recovered/evolved by the current root/project AGENTS.md guidance and local wrapper-skill model. The old crate-layout assumptions and gates should not be blindly replayed.) π
2252c3bbfeat(security): add per-channel DM pairing managerΒ #4530 β per-channel DM pairing manager (superseded by the current channel-specific pairing architecture: PairingGuard now lives in zeroclaw-config with hashed token persistence, brute-force lockout, code-regeneration controls, and focused tests; Telegram, WeChat, and LINE wire /bind <code> pairing into inbound paths and persist successful identities into channel peer groups via orchestrator-provided config handles. The old standalone DmPairingManager JSON module was foundation-only with no downstream callers, so it should not be restored as a separate security module.) π
d00d5c28feat(channel): add observe_group flag and per-chat session keysΒ #4502 β observe_group flag + per-chat session keys (partially superseded by current channel/session architecture: ChannelMessage now derives Default, session keys are sanitized and channel-alias-aware, and Lark has an explicit per_user_session knob that defaults group chats to shared chat sessions. The old cross-channel per-chat key change is not present and should not be restored as a blind recovery because current non-Lark channels still isolate history by sender. The passive observe_group side is also absent: current mention_only paths drop unmentioned group messages rather than storing them, so any revival should be a fresh design decision.) π
be5e3e9dfeat(channels): add message chunker with per-platform character limitsΒ #4422 β message chunker with per-platform char limits (superseded by current channel-specific send-path chunking: Telegram uses TELEGRAM_MAX_MESSAGE_LENGTH plus send_text_chunks, Discord enforces DISCORD_MAX_MESSAGE_LENGTH through chunks_for_send, IRC splits PRIVMSG payloads by safe UTF-8 byte limit, Slack splits Block Kit text into bounded sections with truncation, and Lark splits interactive-card markdown by byte limit. The old shared src/channels/chunker.rs helper was unused foundation-only code and was not restored as a standalone module. Focused validation passed from detached origin/master: cargo test -p zeroclaw-channels split --features channel-telegram,channel-lark --lib -- --nocapture with 20 passed / 0 failed, cargo test -p zeroclaw-channels discord::tests::split --features channel-discord --lib -- --nocapture with 28 passed / 0 failed, and cargo test -p zeroclaw-channels irc::tests::split --features channel-irc --lib -- --nocapture with 11 passed / 0 failed.) π
da0b083efeat(config): add provider_env for injecting API keys from configΒ #4322 β provider_env for injecting API keys from config (superseded by typed encrypted provider API-key fields plus schema-derived env overrides; current config stores secondary provider credentials directly under providers.models.<family>.<alias>.api-key, encrypts them via SecretStore, and tests provider/custom-slot secret routing, so the old process-wide [provider_env] table is no longer needed.) π
aa419d57feat(security): add path-validation fallback sandboxΒ #4531 β path-validation fallback sandbox (superseded by current application-layer security: shell/file-capable tools are registered through PathGuardedTool, and SecurityPolicy enforces workspace-only plus comprehensive forbidden_paths even when OS sandbox auto-detection falls back to NoopSandbox. The old standalone PathValidationSandbox backend was not restored as a separate sandbox mechanism.) π
002fe4c3 (commit) β upgrade claude-code provider to full agent mode (re-applied by 4919216b) β
ffea087c (commit) β ToolCallCard component for tool call display (re-applied by b08cf79a) β
7a5d6837 (commit) β chat history persistence (superseded by current gateway session APIs, WebSocket session resume, and AgentContext/chat workspace hydration instead of the old one-off web chat storage patch.) π
d4773099 (commit) β web chat history with optimized scroll (superseded by current ChatWorkspace/chatHistoryStorage and session-message hydration behavior.) π
f0ffb2b5 (commit) β WhatsApp config regression test without [cli] (covered by current tests/component/config_schema.rs: config_only_whatsapp_channel_parses exercises [channels.whatsapp.default] with no [cli] and asserts channels.cli defaults true. Source/provenance check only; no local cargo run in this pass.) β
d781fb5bfix(tests): wrap LocalWhisperConfig.bearer_token test values in Some(...)Β #4734 β wrap LocalWhisperConfig.bearer_token fixtures in Some(...) (commit is tree-identical/no-diff in the recovered chain; current LocalWhisperConfig.bearer_token is Option<String> and current LocalWhisperConfig fixtures use Some(...) / None consistently. Source/provenance check only; no local cargo run in this pass.) β
Skipped (17)
Merge commits, dependency bumps, docs-only, chore commits, and items whose target files no longer exist β not worth recovering individually.
a50e2304 (commit) β update blob/mainβblob/master link in movie extension docs (file extensions/movie/CONTRIBUTING_GUIDE.md no longer exists in tree) βοΈ
Pick an unchecked item, verify whether the fix exists in the current crate structure
If missing: open a recovery PR porting the fix to the new architecture
Update the checkbox and note the PR number
Original commits can be viewed with git show <sha>. All were against the old monolithic src/ structure and need porting to crates/.
Attribution: Recovery PRs supersede the original author's merged work. Follow the superseded-PR attribution rules in docs/contributing/pr-discipline.md β include Co-authored-by trailers for the original author and list the original PR in the body.
Summary
Commit c3ff635 (2026-03-28) reverted 153 commits in a single bulk rollback, restoring master to 1362d69. This revert was necessary at the time, but it also removed bug fixes, features, and improvements that had been reviewed, approved, and merged.
This issue tracks which commits have already been independently re-applied during the microkernel refactor and which are still missing and worth recovering.
Known recovery issues: #5259 (WeChat iLink channel), #2503 (NapCat/OneBot channel)
Note on deleted PRs: Some PR numbers referenced in commit messages return 404 on GitHub. A co-author on several of these commits (SimianAstronaut7, who also authored the revert) had their account blocked, which removed associated PRs and issues. Some external contributor PRs that list SimianAstronaut7 as co-author are also missing β likely opened from that account's fork. Where the PR record is missing, the entry links to the commit instead.
Status key
Completed recovery / coverage PRs (5)
58353504feat(channels): persist per-chat model switch to routes.jsonΒ #4648 model_switch recovery merged ase147e491. β78833057feat(mattermost): add WebSocket-based real-time listenerΒ #4845 Mattermost WebSocket listener recovery merged as0de7f340. β3f229c85feat(calendar): add calendar-driven no-show detection triggersΒ #4527 calendar no-show SOP trigger recovery merged as3278d76f. β2dba7fe0feat(hooks): fire message_sent hook after successful channel deliveryΒ #4493 message_sent hook recovery merged as8c080dd3. β359c8006Docker CI file consolidation recovery merged as8ac9565f. βVerified re-applied (77)
4eb9cbe4feat(nodes): add mDNS local peer discoveryΒ #4428 β mDNS/local peer discovery (re-applied by feat(gateway): add LAN peer discovery hintsΒ #8325 /344a158: current opt-in[nodes.mdns]publishes runtime-derived gateway hints, bounds and expires unauthenticated LAN peers, exposes them through authenticated status without auto-connecting or bypassing node registration.) βThese fixes have been independently re-implemented in the current crate structure:
4022879bfeat(channels): add room creation and user invite API to Channel traitΒ #4504 β Matrix room creation + invite recovery (re-applied by feat(channels): restore Matrix room management toolΒ #8068 / Matrix room-management tool recovery: typed Matrix room-management APIs plus the agent-facingchannel_roompath are now merged. No live Matrix homeserver smoke test was claimed in the recovery row.) β99f0b528feat(channels): add /thinking runtime command for per-sender reasoning toggleΒ #4325 β per-sender/thinkingchannel override recovery (re-applied by feat(channels): restore per-sender /thinking overridesΒ #8011: current channel command support restores the user-facing override on top ofThinkingLevelplumbing instead of the old provider-clonereasoning_enabledpath.) βac680041feat(security): add shared SsrfValidator with CIDR blocking and homograph detectionΒ #4421 β http_request SSRF DNS-answer validation / request pinning (re-applied by fix(tools): pin http_request requests to vetted DNS addressesΒ #7902: currenthttp_requestpins requests to vetted DNS addresses while leaving the old unwiredSsrfValidatorAPI and custom-CIDR config surface behind.) β7f08d4b0feat(service): detect missing loginctl linger and prompt userΒ #4285 β detect missing loginctl linger + prompt (re-applied/evolved by fix(runtime): warn when systemd user lingering is disabledΒ #8249 and the current installer/systemd preflight path: missing linger state is detected before service setup instead of surfacing as a later runtime/service failure.) βdf129feafix(service): detect missing loginctl enable-linger and warn usersΒ #4336 β detect missing loginctl enable-linger (re-applied/evolved by fix(runtime): warn when systemd user lingering is disabledΒ #8249 and the current installer/systemd preflight path, which reports the missing enable-linger requirement explicitly.) β1ff39882fix(service): detect missing loginctl enable-linger on installΒ #4435 β detect enable-linger on install (re-applied/evolved by fix(runtime): warn when systemd user lingering is disabledΒ #8249 and the current installer/systemd setup checks.) β20238a26(commit) β Rust version check for build failures (covered by the currentinstall.sh/ installer rewrite path, which validates the Rust toolchain before relying on source builds.) β961d13ad(commit) β rate-limit cooldown + model compatibility (re-applied by fix(provider): cool down rate-limited fallback entriesΒ #8317 /6d2ce03: current provider fallback entries cool down after rate-limit responses instead of immediately retrying incompatible or exhausted routes.) β56c7d605feat: add Tavily as configurable web search providerΒ #4685 β Tavily web search provider (covered by feat(tools/web_search): implement Tavily search backendΒ #6185 and the current web search provider/tool routing; the old standalone row is no longer a missing recovery target.) βdd147dd0feat: addzeroclaw config reloadfor hot-reloading configΒ #3571 β zeroclaw config reload / hot-reload (superseded by the current admin/RPC reload path and live config reload wiring, not the old monolithic command shape.) βf685de05fix(tests): serialize Bedrock env-var tests to prevent parallel raceΒ #4883 β serialize Bedrock env-var tests (covered by currentenv_lock()/EnvGuardtest utility inzeroclaw-providers; Bedrock env-var tests now take the shared lock before mutating process environment.) β74a211a5test(pushover): add unit tests and improve documentationΒ #3830 β pushover unit tests + docs (covered by the currentzeroclaw-toolsPushover unit tests plus test(tools): cover pushover notification shape overlapΒ #8356, including schema overlap, credential parsing, priority/sound, read-only, and rate-limit behavior.) β20c589eeci: add deployment environments to release workflowsΒ #4839 β deployment environments in release workflows (re-applied/evolved by ci: add deployment environments to release workflowsΒ #4839/feat(ci): add GitHub deployment environmentsΒ #5073 and currentrelease-stable-manual.ymlenvironment-gated publish/redeploy jobs.) β2d73133d(commit) β feishu transport media (re-applied by feat(channels/lark): restore outbound media markersΒ #8113 /b980e3a: current Lark/Feishu outbound sends parse shared[IMAGE:],[PHOTO:],[DOCUMENT:],[FILE:],[VIDEO:],[AUDIO:], and[VOICE:]markers and route marker-derived attachments through the current Lark upload/send path.) β58ad2092feat(knowledge): add client relationship node types and tool actionsΒ #4507 β client relationship node types (re-applied by feat(knowledge): restore client relationship graph actionsΒ #8182 /c6906da: current knowledge graph restoresClient,Contact, andInteractionnode types, client relationship relations,graph_neighbors,client_network, andinteraction_logknowledge tool actions, Postgres conversion, and localized tool descriptions.) β2ddf7dcbfix(agent): add web_search_tool to default_param_for_tool mappingΒ #4544 β web_search_tool in default_param_for_tool mapping (tool-call-parser/lib.rs:807) β49e994a3fix(channels): handle list message type in Feishu/Lark channelΒ #4702 β Lark list message type handling (lark.rs:986, test at :2766) βffb015b3fix(security): make command allowlist matching case-insensitive on UnixΒ #4552 β case-insensitive command allowlist matching (policy.rs:824) β143b34ea(commit) β SearXNG search provider config (schema.rs:2977) βa4e6d772feat(slack): migrate audio transcription to TranscriptionManagerΒ #4314 β Slack audio file transcription (slack.rs:39) βa3da42b1β mention_only arg + voice_wake feature-gated errors (telegram.rs:367) β2a5866ecfix(update): extract binary from .tar.gz release assetsΒ #4297 β extract binary from .tar.gz release assets (update.rs:212) β490c54e8fix(security) allow high risk command executionΒ #4750 β allow high risk command execution (whitespace-only, no functional change) β8416af7d(commit) β local time for runtime_trace timestamps (production path at line 216 uses Local::now(); remaining Utc calls are temp file naming and tests only) β1e477f52(commit) β respect max_history_messages in channel mode (orchestrator/mod.rs:1211) βa993c96ffix(agent): use stream_chat in turn_streamed to fix WS/webhook streamingΒ #4690 β use stream_chat in turn_streamed for WS/webhook streaming (loop_.rs:547, ws.rs:467) β3b9c184efix(provider): use no_responses_fallback for Z.AI and add Bailian aliasΒ #4317 β Z.AI no_responses_fallback + Bailian alias (provider_aliases.rs:89, lib.rs:1293) βe9c99f92fix(matrix): preserve thread context on first follow-up messageΒ #4805 β preserve matrix thread context on first follow-up (matrix.rs:256-292) βb7f3d0c9feat(matrix): add mention_only config for group room filteringΒ #4680 β Matrix mention_only for group room filtering (re-applied by feat(matrix): clean-room rewrite on matrix-rust-sdk 0.16Β #6112 /ce3a968: currentMatrixConfig.mention_onlygates group rooms throughis_group_roomplusmention::is_mentioned, usingm.mentions.user_idswhen present and full MXID/localpart/display-name body fallback otherwise; direct rooms bypass viaroom.is_direct(). Focused validation passed:cargo test -p zeroclaw-channels mention --features channel-matrix -- --nocapturewith 65 passed / 0 failed. The old string-strip helper is superseded by the Matrix SDK rewrite rather than carried as a separate preprocessing step.) β959057abfeat(tools): wire session tools to composite backend for gateway visibilityΒ #4852 β wire session tools to composite backend for gateway visibility (re-applied by fix(runtime, channels): unify session backend behind one factoryΒ #6384 /c6a0ed7: current runtime session tools, channel orchestrator, and gateway/ws/chatpersistence all callzeroclaw_infra::make_session_backend, so[channels].session_backendis the single configured store and gateway sessions are visible tosessions_list,sessions_history, andsessions_send. The old read-timeCompositeSessionBackendwrapper is superseded by the factory plus SQLite-default JSONL import path. Focused validation passed:cargo test -p zeroclaw-infra make_session_backend --lib -- --nocapturewith 4 passed / 0 failed.) β96643394feat(channels): precheck reply intent before typing or draft sendΒ #4850 β precheck reply intent before typing/draft (re-applied in current channel orchestration:classify_channel_reply_intent/parse_reply_intentclassify visible-reply intent, the no-reply gate runs before draft creation and typing setup inprocess_channel_message_body, and no-reply outcomes record a history marker plus reaction/log evidence. Focused validation passed:cargo test -p zeroclaw-channels precheck --libwith 2 passed / 0 failed.) β3ce90480(commit) β respect path_prefix in get-paircode command (gateway routes nested under prefix at lib.rs:1100) β516a9cfbfix(config): resolve temp directory canonicalization for non-existentβ¦Β #4529 β resolve temp dir canonicalization on macOS (schema.rs:9418, seatbelt.rs:151) βa279f5dafix(gateway): improve web dashboard unavailable message for Homebrew usersΒ #4438 β improve dashboard unavailable message for Homebrew (service/mod.rs:582-620) β9ce1b67a(commit) β prevent duplicate tool call notifications (superseded by fix(agent): drop redundant narration push before AssistantToolCallsΒ #6093; dedup_exempt infra in schema.rs:1487) β15a630e4fix(gateway): clarify public bind error messageΒ #4763 β clarify public bind error message (gateway/lib.rs:413-422) β6044fa23fix(tools): resolve agent-browser npm shim on WindowsΒ #4557 β resolve agent-browser npm shim on Windows (browser.rs:247-250) β59c9a2d1fix: resolve claude-code test flakiness and update security policyΒ #4181 β resolve claude-code test flakiness (superseded by fix(agent): drop redundant narration push before AssistantToolCallsΒ #6093; agent.rs:2400-2410) βac355d40feat: add GitHub copilot to onboardingΒ #4897 β add GitHub Copilot to onboarding (re-merged as feat: github copilot onboardingΒ #5321,9f245539f) β20593311(commit) β enable MCP tools in webhook endpoint (re-applied by fix(gateway): enable tool support in webhook endpointΒ #6080,be106b681) β59ad6da0fix(memory): add closing tag to memory context injectionΒ #4687 β add closing tag to memory context injection (re-applied by fix(memory): add closing tag to memory context in cron and daemonΒ #6082,3b24f817) β3e0a08c1(commit) β add missing bind paths for bubblewrap sandbox (re-applied by fix: recover 4 small fixes lost in bulk revert c3ff635Β #6169,62728c1ceb) βdf43e516fix(gateway): respect path_prefix in get-paircode and shutdown commandsΒ #4555 β respect path_prefix in paircode + shutdown commands (re-applied by fix: recover 4 small fixes lost in bulk revert c3ff635Β #6169,62728c1ceb) β8c3c890c(commit) β add timeout to Mattermost HTTP client (re-applied by fix: recover 4 small fixes lost in bulk revert c3ff635Β #6169,62728c1ceb) βbabe7f1efix(heartbeat): inject current datetime into scheduler decision promptΒ #4554 β inject current datetime into scheduler decision prompt (re-applied by fix: recover 4 small fixes lost in bulk revert c3ff635Β #6169,62728c1ceb) β74a94a1cfix(channels): skip tools summary for native toolsΒ #4499 β skip tools summary for native tools (re-applied by fix(runtime): omit native tool prompt catalogΒ #6544,3821550c) β4995c184fix(update): use exact arch triple matching to prevent wrong-binary downloadsΒ #4337 β exact arch triple matching for update downloads (re-applied by fix(update): tighten release asset selectionΒ #6585,ed9bd52) β4f872ccafix(provider): restrict reasoning_effort to known openai models (#4296)Β #4310 β restrict reasoning_effort to known openai models (re-applied by fix(provider): restrict compatible reasoning effort modelsΒ #6631,d2dd45a) β7882897efix(gemini): propagate token usage from Gemini provider to cost trackerΒ #4573 β propagate Gemini token usage to cost tracker (re-applied by fix(gemini): propagate token usage to cost trackerΒ #6575,f8221ce) βe7467e0afix(provider): fallback to non-streaming when OpenAI Codex streaming failsΒ #4538 β fallback to non-streaming when Codex streaming fails (re-applied by fix(provider): recover Codex non-streaming fallbackΒ #6668,ea825ce) βd4ab8a47feat(debug): add --log-llm flag to dump LLM provider message payloadsΒ #4213 β add --log-llm flag to dump LLM provider payloads (re-applied by feat(debug): restore --log-llm payload tracingΒ #6709,3e27b58) βda742938fix(multimodal): gracefully skip unresolvable images instead of failingΒ #4316 β gracefully skip unresolvable images instead of failing (re-applied by fix(providers): skip unresolvable multimodal imagesΒ #6743,f6b90124) β46ca9364fix(onboard): restore --interactive flag for TTY overrideΒ #4410 β restore --interactive CLI compatibility; current bare onboarding is already interactive (re-applied by fix(onboard): restore interactive flag compatibilityΒ #6673,f1ced29e) βef9e52f3fix(security): respect wildcard opt-out for subshell/redirect guardsΒ #4803 β respect wildcard opt-out for subshell/redirect guards (re-applied by fix(shell): guard bypassΒ #5773,247e2e18) β5b6d0585Feat/vision support for kimi codeΒ #4108 β enable vision support for kimi-code provider (re-applied by fix(providers): restore Kimi Code vision capabilityΒ #6809,7f9271cb) βce6dd7cafix(security): mask Groq API key and transcription provider keys in web UIΒ #4688 β mask Groq API key + transcription keys in web UI (web config masking is already covered by current schema-derived secret masking; remaining Groq leak-detector pattern re-applied by fix(security): detect Groq API keys in leak scannerΒ #6812,84413ff7) βaabf2327fix(ollama): preserve :cloud model tag for private remote Ollama serversΒ #4173 β preserve :cloud model tag for private remote Ollama servers (re-applied by fix(providers): preserve Ollama cloud suffix for private remotesΒ #6863,9c2522c4) βecd68febfix(onboarding): detect Homebrew install and use correct config pathΒ #3526 β detect Homebrew install, use correct config path (re-applied by fix(onboarding): restore Homebrew config dir detectionΒ #6896,cc1a66b) βf12c1761fix(providers): add streaming support to RouterProviderΒ #4533 β add streaming support to RouterProvider (remaining system-streaming delegation re-applied by fix(providers): route system streaming through RouterModelProviderΒ #6935,f4d17ea; current master already coveredsupports_streaming,stream_chat_with_history, and structuredstream_chat) βc96bd63efix(update): verify download checksum against SHA256SUMSΒ #4434 β verify download checksum against SHA256SUMS (re-applied by fix(update): verify self-update downloads against SHA256SUMSΒ #6900,ec4d0f7) βa68f2dd3fix(channels): close draft sender after tool loopΒ #4301 β close draft sender after tool loop (current orchestrator dropsdelta_txbefore awaiting the draft updater atcrates/zeroclaw-channels/src/orchestrator/mod.rs:3422; original Telegram draft-hang regression is not present) β6469a262fix(providers): unify OpenAI-compatible native tool response parsingΒ #4149 β accept compatible typed content arrays (re-applied by fix(provider): accept compatible typed content arraysΒ #7010,58c24e2c) β31737b16fix(prompt): timestamp channel turns and use date-only promptsΒ #3271 β timestamp channel turns, use date-only prompts (re-applied by fix(channels): restore date-only channel prompt contextΒ #6931,9651e13) β371c59d1(commit) β unify path resolution for file tools (remainingimage_infopath-resolution side re-applied by fix(tools): resolve image_info paths through policyΒ #6972,708f1f6) βb58d18d5fix(agent): fallback to non-streaming when stream errors (#4670)Β #4675 β fallback to non-streaming when stream errors (re-applied by fix(runtime): fall back before visible stream errorsΒ #6983,4ed0334) β51fd8ba5feat(qq): add TranscriptionManager wiring for audio attachmentsΒ #4315 β QQ audio attachment transcription (re-applied by fix(qq): restore audio attachment transcriptionΒ #7109,f8641d2) βad48c1defeat(config): add configurable global max_audio_bytes to TranscriptionConfigΒ #4114 β configurable global max_audio_bytes (re-applied by feat(config): restore transcription max_audio_bytesΒ #7303,81ce4f91) β753d4fc6feat(tool): add SecretStore integration to http_requestΒ #3637 β SecretStore integration in http_request tool (re-applied by feat(tools): add http_request auth secretsΒ #7354,d064ac36) β21e23bd2feat(channel): add interrupt_on_new_message support for WhatsAppΒ #4371 β interrupt_on_new_message for WhatsApp (re-applied by fix(channel): restore WhatsApp interrupt_on_new_messageΒ #7040,67acda2) βa54e9257feat(security): add 1Password secret resolution via op:// referencesΒ #4796 β 1Password secret resolution via op:// references (re-applied by fix(config): restore 1Password op secret refsΒ #7085,f3c8c77) βd07f4208feat: support forwarded messages in Telegram channel (#4118)Β #4254 β Telegram forwarded-message attribution (re-applied by fix(channels/telegram): restore forward origin attributionΒ #7251,feb5776) β49620636feat(voice): add unified VoicePipeline facade for STT+TTS channelsΒ #4427 β voice pipeline facade for shared channel STT/TTS use (re-applied by feat(channels): add voice pipeline facadeΒ #7394,4169c163) β4fe1f1fdfeat(matrix): populate media attachments and add outgoing media supportΒ #4865 β Matrix media attachments + outgoing media (re-applied/superseded by feat(matrix): clean-room rewrite on matrix-rust-sdk 0.16Β #6112 /ce3a968: current Matrix persists inbound media into workspace-backed media markers viaattach_media/with_workspace_dir, parses outbound[IMAGE:]/[DOCUMENT:]/[VIDEO:]/[AUDIO:]/[VOICE:]markers through the shared channel marker parser, uploads marker-derived bytes and structuredSendMessage.attachmentswith thread anchoring, and feat(matrix): upload attachments when finalizing partial draftsΒ #6200 /b699f5dplus fix(matrix): include attachment media metadataΒ #6610 /3afb545hardened partial-draft attachment finalization and attachment metadata. Source/provenance check only in this pass; focused local cargo was not run because the SSD Cargo target root was unavailable and internal-disk fallback was not approved.) βb69e5ff5fix(tools): improve file_read robustness for large/binary filesΒ #4320 β reject binary/image files in defaultfile_readinstead of returning lossy text (re-applied by fix(tools): reject binary/image files in default file_read instead of lossy textΒ #7522 /91b0bd7: current default UTF-8 reads reject image signatures and confident binary content with guidance to useimage_infoorencoding="base64", while explicit base64 reads and conservative non-UTF-8 text handling remain available.) β798aa936(commit) β native Firejail/Bubblewrap hardening (re-applied/superseded by fix(runtime): restore native sandbox hardeningΒ #7683 /34107bb3: current native sandbox wrapping adds supported Firejail seccomp/capability/noroot hardening and Bubblewrap capability drops behind backend support detection, while deliberately avoiding the old invalid bare Bubblewrap--seccomppath and not restoring the older unavailable-backend fail-closed attempt.) β64043d64feat(channels): parse media attachment markers in WhatsApp Web sendΒ #4403 β parse media markers in WhatsApp Web send (re-applied by feat(channels/whatsapp): send Web media markers nativelyΒ #7811 /b1831f9: current WhatsApp Web outbound sends parse shared[IMAGE:],[PHOTO:],[DOCUMENT:],[FILE:],[VIDEO:],[AUDIO:], and[VOICE:]markers, constrain local marker paths to the configured WhatsApp workspace, and send native WhatsApp image/video/audio/voice/document messages through the currentwhatsapp-rustupload/send API.) βChecked / superseded small fixes (4)
44eb057ffix(gateway): replay session history on WebSocket reconnectΒ #4696 β replay session history on WebSocket reconnect (superseded by feat(web): persist Agent Chat history across navigation and refreshΒ #4792 /5c7eccband feat(webui): hot-switch model & preserve chat context across page navigationΒ #6101 /d145a24: current master exposesGET /api/sessions/{id}/messages, andAgentContexthydrates chat from that endpoint before the shared WebSocket takes over) π39891105fix: issue 4855Β #4895 β fix [Bug]: Channels API not workingΒ #4855 / Channels API returning HTML instead of JSON (covered by fix(gateway): add missing /api/channels routeΒ #6069 /eebd7b6: current master routesGET /api/channels; the dashboard helper also accepts the current wrapped{ "channels": [...] }response shape) β933f7a25fix: sessions pageΒ #4858 β fix sessions (re-applied bybf7380b5) β9fda248c(commit) β preserve web chat history across page reloads (superseded by the currentGET /api/sessions/{id}/messagesAPI plusAgentContexthydration/localStorage fallback; the backend also sendssession_startand seeds the agent with stored messages on WebSocket resume) πChecked / superseded medium fixes (13)
a51620b4fix(prompt): expose autonomy constraints to the modelΒ #3296 β expose autonomy constraints to the model (superseded by the current risk-profile prompt path: fix(prompt): respect autonomy level in SafetySection (Agent/gateway WS path)Β #4037 /96f25ac7wires autonomy level intoSafetySection, fix(prompt): rewrite safety section to reduce AI conservatismΒ #4615 /671577b4keeps the model-facing wording direct, and feat!: multi-agent runtime and schema V3Β #6398 /18622d91routes channel/webhook runs through per-agentrisk_profileso prompts include runtime autonomy plus active security-policy constraints instead of the old standalone## Autonomy Constraintsblock) π6335a0d4fix(channel/discord): download image and video attachments for agent processingΒ #4871 β download Discord image/video attachments for agent processing (re-applied by fix(discord): preserve inbound image attachments for providersΒ #6184 /213b01ddand broadened by fix(channels): close Discord media send/receive gapsΒ #6572 /ccb6beb29: current Discord preprocessing admits attachment-only messages, downloads non-text attachments once, emits IMAGE/VIDEO markers, storesMediaAttachmentbytes onChannelMessage, and the media pipeline classifies image/video MIME types for provider handling) β03d345b5fix(providers): skip responses fallback on transport errorsΒ #4501 β skip responses fallback on transport errors (superseded by feat!: multi-agent runtime and schema V3Β #6398 /18622d91b:compatible.rsno longer haschat_via_responsesorsupports_responses_fallback; chat transport errors return directly, and/responsesis isolated toOpenAiCodexModelProvider) π80a91856fix: prevent panic on UTF-8 multi-byte char boundary in slug truncationΒ #4148 β prevent panic on UTF-8 multi-byte boundary in slug truncation (behavior present incrates/zeroclaw-runtime/src/skills/creator.rs; original CJK regression test not present) βe2022f9efix(agent): consolidate multiple messages into single responseΒ #4436 β consolidate multiple messages into single response (superseded by current AgentContext/AgentChat tool-activity toggle; tool activity is hidden from the conversation by default) πf17c6dce(commit) β disable responses API fallback for custom OpenAI providers (superseded by the current provider split:custom:uses chat completions throughOpenAiCompatibleProvider;/v1/responsesis handled byOpenAiCodexProvider/wire_api = "responses"profiles, not a 404 fallback path) πc74824a3fix(tools): make shell timeout configurable via config.tomlΒ #4334 β make shell timeout configurable via config.toml (covered by later feat: make shell tool timeout configurable via config.tomlΒ #4468 /ea9eccfe8; current master exposes[shell_tool].timeout_secs, wires it through the tool registry, and applies it inShellToolexecution) β735a1336feat(ollama): allow configurable context size via ZEROCLAW_OLLAMA_NUM_CTXΒ #3518 β configurable Ollama context size (superseded by feat(providers/ollama): add num_ctx/num_predict/temperature tuningΒ #6178 /e6cbb33d; current master exposes config-backedollama_num_ctx,ollama_num_predict, and temperature override) πf78a6d32fix(agent): separate draft tool narration linesΒ #4349 β separate draft tool narration lines (covered by fix(channels): ensure newline between narration and draft status linesΒ #4394 /0d2b57ee; current master still appends a missing newline before native tool-call narration is sent to draft-capable channels, with runtime regression coverage) π6aab1288fix(channels): add channel-lark to default features to support Lark/Feishu long connectionΒ #4444 β add channel-lark to default features (covered by current workspace feature graph: root default enablesagent-runtime,agent-runtimeenableschannel-lark, andchannel-larkforwards tozeroclaw-channels/channel-lark; Docker builds do not use--no-default-features, so the same default applies there) π41c0abbf(commit) β whitelist safe shell redirects (covered by fix(security): allow safe device redirect targets in path policyΒ #6236 /ad34fa3f; current policy allows safe /dev redirects and fd redirects while still blocking file redirects and /dev path-boundary bypasses, with focused redirect-policy tests) β88d77ce3fix(channels): prevent draft streaming hang after tool loop completionΒ #4359 β prevent draft streaming hang after tool loop completion (covered by fix(channels): prevent draft streaming hang after tool loop completionΒ #4393 /b85a44595; fix(channels): prevent draft streaming hang after tool loop completionΒ #4359βs commit carries no file diff, and current orchestrator dropsdelta_txbefore awaitingdraft_updaterso the draft update task can observe channel close and exit) π3c592593(commit) β bound conversation history with LRU sender cap (re-applied by709b867f) βChecked / superseded large fixes (4)
9528678e(commit) β trim oldest images instead of hard-failing when limit exceeded (re-applied by541b273b) β61c32424(commit) β preserve existing channel config when re-configuring (re-applied by351986c2) βdc05efa9fix(channels): use reversible percent-encoding for session file keysΒ #4811 β reversible percent-encoding for session file keys (superseded by fix: sanitize session keys at the channel orchestrator layerΒ #6228 /388657f68: current channel orchestration pre-sanitizes conversation history and memory keys with sharedsanitize_session_keybefore they reach the JSONL/session backends, so hydration, list, load, memory recall, and runtime cache lookup all use the same normalized key. Current SQLite session metadata also storeschannel_id,room_id, andsender_idseparately, so original Matrix/platform IDs no longer depend on reversible filenames; fix(channels): scope session key for channel toolsΒ #6541 /247f2baf5keeps channel session tools scoped to that same history key.) π87698ad1fix(agent): treat tool_use/tool_result as atomic groups in history pruningΒ #4825 β treat tool_use/tool_result as atomic groups in history pruning (re-applied by fix(session): session integrity, streaming refactor, history pruningΒ #5167 /1ec9c14cand hardened by fix(agent): drop orphan tool_results when trimming historyΒ #5485 /d72c2128, fix(runtime): self-heal orphaned tool_result blocks on load + compactΒ #5853 /a449a506c, and fix(agent): treat mixed-protection tool groups as atomic in prune_history Phase 1Β #5828 /3d7f2ee0: currentprune_historycollapses and drops assistant+tool groups atomically,emergency_history_trimdoes the same, trim/load/channel hydration self-heal orphan tool results, and regression coverage includes multi-tool collapse/drop, realistic token pressure, protected recent groups, mixed-protection groups, and structured orphan cleanup.) βChecked / superseded features (22)
c373d6c9feat: add movie extension with Douban and TMDB supportΒ #4815 β movie extension with Douban + TMDB (superseded as a recovery row: the old extension tree is gone, and replaying the monolithic movie extension would not fit the current crate/plugin shape. A movie/media lookup feature should be scoped fresh if the project still wants it.) π070a0c20feat: adopt AGENTS.md as primary agent instruction formatΒ #4290 β adopt AGENTS.md as primary instruction format (partially recovered/evolved by the current root/projectAGENTS.mdguidance and local wrapper-skill model. The old crate-layout assumptions and gates should not be blindly replayed.) πf657bba4feat(channel): add WeChat iLink Bot channelΒ #4221 β WeChat iLink channel (tracked separately by [Feature]: recover developed WeChat iLink channel in reverted commitsΒ #5259, so this tracker should not duplicate the WeChat recovery row here.) πe5e4d27ffeat(agent): add native_tool_calls_only config to disable text fallback parsingΒ #3682 β native_tool_calls_only config (superseded by fix(runtime): add strict tool parsing modeΒ #6675 /7437cd0e: current master uses per-agent/runtime-profilestrict_tool_parsinginstead of restoring the old global[agent].native_tool_calls_onlykey. Strict parsing suppresses text fallback tool-call execution for direct agent turns, streamed/channel turns, and delegate subagents according to the active target-agent policy; the no-text-fallback local-agent profile is documented. Source/provenance check only in this pass; fix(runtime): add strict tool parsing modeΒ #6675 carried focused and broad validation before merge.) π2252c3bbfeat(security): add per-channel DM pairing managerΒ #4530 β per-channel DM pairing manager (superseded by the current channel-specific pairing architecture:PairingGuardnow lives inzeroclaw-configwith hashed token persistence, brute-force lockout, code-regeneration controls, and focused tests; Telegram, WeChat, and LINE wire/bind <code>pairing into inbound paths and persist successful identities into channel peer groups via orchestrator-provided config handles. The old standaloneDmPairingManagerJSON module was foundation-only with no downstream callers, so it should not be restored as a separate security module.) πd00d5c28feat(channel): add observe_group flag and per-chat session keysΒ #4502 β observe_group flag + per-chat session keys (partially superseded by current channel/session architecture:ChannelMessagenow derivesDefault, session keys are sanitized and channel-alias-aware, and Lark has an explicitper_user_sessionknob that defaults group chats to shared chat sessions. The old cross-channel per-chat key change is not present and should not be restored as a blind recovery because current non-Lark channels still isolate history by sender. The passiveobserve_groupside is also absent: currentmention_onlypaths drop unmentioned group messages rather than storing them, so any revival should be a fresh design decision.) πbe5e3e9dfeat(channels): add message chunker with per-platform character limitsΒ #4422 β message chunker with per-platform char limits (superseded by current channel-specific send-path chunking: Telegram usesTELEGRAM_MAX_MESSAGE_LENGTHplussend_text_chunks, Discord enforcesDISCORD_MAX_MESSAGE_LENGTHthroughchunks_for_send, IRC splitsPRIVMSGpayloads by safe UTF-8 byte limit, Slack splits Block Kit text into bounded sections with truncation, and Lark splits interactive-card markdown by byte limit. The old sharedsrc/channels/chunker.rshelper was unused foundation-only code and was not restored as a standalone module. Focused validation passed from detachedorigin/master:cargo test -p zeroclaw-channels split --features channel-telegram,channel-lark --lib -- --nocapturewith 20 passed / 0 failed,cargo test -p zeroclaw-channels discord::tests::split --features channel-discord --lib -- --nocapturewith 28 passed / 0 failed, andcargo test -p zeroclaw-channels irc::tests::split --features channel-irc --lib -- --nocapturewith 11 passed / 0 failed.) πb67be417feat(agent): add thinking/reasoning level control per messageΒ #4332 β thinking/reasoning level control per message (the commit itself is tree-identical to its parent because fix(agent): prevent thinking level prefix from leaking across turnsΒ #4277 /ffb8b81falready carried the feature plus the interactive prompt-restore fix; current master retains the feature incrates/zeroclaw-runtime/src/agent/thinking.rsandcrates/zeroclaw-config/src/scattered_types.rs, wires/think:<level>through single-shot, interactive, and channel paths, and feat(provider): add native extended thinking for Anthropic and Bedrock providersΒ #5652 /fe570ce4broadens the same config with opt-in native extended-thinking budgets.) βda0b083efeat(config): add provider_env for injecting API keys from configΒ #4322 β provider_env for injecting API keys from config (superseded by typed encrypted provider API-key fields plus schema-derived env overrides; current config stores secondary provider credentials directly underproviders.models.<family>.<alias>.api-key, encrypts them via SecretStore, and tests provider/custom-slot secret routing, so the old process-wide[provider_env]table is no longer needed.) π6ab4d03bfeat(cron): add Feishu/Lark channel support for cron job deliveryΒ #4378 β Feishu/Lark cron delivery channel (superseded by feat(channels,runtime): support lark as a cron delivery channelΒ #6851 /3498f50eand later channel/runtime structure: current master routeslarkandfeishucron announce delivery throughcrates/zeroclaw-channels/src/orchestrator/mod.rs, exposes both names incron_addandcron_update, handles the shared[channels.lark.<alias>]config withuse_feishu, and includes send-boundary plus route-to-lark-arm regressions.) π58353504feat(channels): persist per-chat model switch to routes.jsonΒ #4648 β persist per-chat model switch to routes.json (superseded by the current runtime/session model_switch contract and tracked by [Bug]: model_switch tool does not persist across turns; gateway/UI path ignores it entirelyΒ #6173 / fix(runtime): persist model_switch across turn pathsΒ #6719. The old disk-backedroutes.jsondaemon-restart persistence is not the current model-switch contract; [Bug]: model_switch tool does not persist across turns; gateway/UI path ignores it entirelyΒ #6173/fix(runtime): persist model_switch across turn pathsΒ #6719 cover the remaining cross-turn and gateway/UI behavior.) πaa419d57feat(security): add path-validation fallback sandboxΒ #4531 β path-validation fallback sandbox (superseded by current application-layer security: shell/file-capable tools are registered throughPathGuardedTool, andSecurityPolicyenforces workspace-only plus comprehensiveforbidden_pathseven when OS sandbox auto-detection falls back toNoopSandbox. The old standalonePathValidationSandboxbackend was not restored as a separate sandbox mechanism.) π002fe4c3(commit) β upgrade claude-code provider to full agent mode (re-applied by4919216b) βffea087c(commit) β ToolCallCard component for tool call display (re-applied byb08cf79a) β5d8d9aa2feat(channel): add LINE Messaging API channel with Reply/Push API supportΒ #4822 β LINE Messaging API channel (re-applied by6ce9a737) β936a7212(commit) β generic transport stall watchdog (re-applied by5a5d28f) β3e02e68e(commit) β ZhipuJwt auth for Z.AI and GLM providers (re-applied by34ef7bfe) β6a8ff4c4(commit) β email attachment download + multipart MIME (re-applied bydc7a7be7) β3f6e7c5c(commit) β WhatsApp Web mention_only for groups (re-applied byfab350eb) βf3d8aa1f(commit) β MQTT channel configuration schema (re-applied byc6a980d0) βbde81df1(commit) β memory namespace isolation for delegate agents (re-applied by9537885f) β9a3453e6(commit) β per-sender rate limiting (re-applied by90edff25) βChecked / superseded tests, infra, CI (10)
a57145ccfix(homebrew): publish a release source archive with built dashboard assetsΒ #3934 β Homebrew release source archive with dashboard (superseded by the current release/install source-dashboard flow. Current package-publishing access failures are release-infra work, not this lost-row recovery target.) π7a5d6837(commit) β chat history persistence (superseded by current gateway session APIs, WebSocket session resume, andAgentContext/chat workspace hydration instead of the old one-off web chat storage patch.) πd4773099(commit) β web chat history with optimized scroll (superseded by currentChatWorkspace/chatHistoryStorageand session-message hydration behavior.) π248e13ebfix(cron): add WhatsApp Web delivery channel for cron job announcementsΒ #4258 β WhatsApp Web cron delivery channel (covered/evolved by current cron delivery routing and fix(channels): support WhatsApp as a cron delivery channelΒ #7562, which supports WhatsApp as a cron delivery channel on the current runtime/channel path.) π65ae6cb7fix(cron): add live channel registry for WhatsApp Web cron deliveryΒ #4548 β live channel registry for WhatsApp Web cron (covered/evolved by the current cron delivery enum/registry tests plus fix(channels): support WhatsApp as a cron delivery channelΒ #7562; no separate old registry patch should be replayed.) πbedbbdcb(commit) β unify env-var test sync across providers (re-applied by92a98959) βfbc654da(commit) β extract rate-limiting + path-guard wrappers (re-applied by85f9e6a8) βf0ffb2b5(commit) β WhatsApp config regression test without[cli](covered by currenttests/component/config_schema.rs:config_only_whatsapp_channel_parsesexercises[channels.whatsapp.default]with no[cli]and assertschannels.clidefaults true. Source/provenance check only; no local cargo run in this pass.) β1a1a27e1fix(config): add regression test for WhatsApp config without [cli] fieldΒ #4432 β WhatsApp config regression test without[cli](duplicate/no-diff follow-up for the same [Bug]: Permissions issue trying to start WhatsAppΒ #3456 regression; covered by currenttests/component/config_schema.rsWhatsApp-without-[cli]regression coverage. Source/provenance check only; no local cargo run in this pass.) βd781fb5bfix(tests): wrap LocalWhisperConfig.bearer_token test values in Some(...)Β #4734 β wrapLocalWhisperConfig.bearer_tokenfixtures inSome(...)(commit is tree-identical/no-diff in the recovered chain; currentLocalWhisperConfig.bearer_tokenisOption<String>and currentLocalWhisperConfigfixtures useSome(...)/Noneconsistently. Source/provenance check only; no local cargo run in this pass.) βSkipped (17)
Merge commits, dependency bumps, docs-only, chore commits, and items whose target files no longer exist β not worth recovering individually.
a50e2304(commit) β update blob/mainβblob/master link in movie extension docs (fileextensions/movie/CONTRIBUTING_GUIDE.mdno longer exists in tree) βοΈ93ea780acontrib: aspect-oriented refactoring examples for crosscutting concerns (RE2026)Β #4719 β aspect-oriented refactoring examples (the oldcontrib/aopexamples are not present in the current tree and should not be restored as a standalone stale example bundle without a fresh docs/architecture decision.) βοΈClick to expand
17b9d93cdocs,95344a44refactor READMEs,8dd4c4b1remove review-bot config,884747b8merge commit,1de30948dep bump distroless,0813c771dep bump libloading,d4045117merge artifact,773a72ecmerge commit,01da1b4dremove RedNote badge,40805d30merge commit,a18fb885dep bump cpal,50425247merge collision fix,be747242web merge collision fix,92440b2adocs only,e91806c1trivial lintHow to help
Original commits can be viewed with
git show <sha>. All were against the old monolithicsrc/structure and need porting tocrates/.Attribution: Recovery PRs supersede the original author's merged work. Follow the superseded-PR attribution rules in
docs/contributing/pr-discipline.mdβ includeCo-authored-bytrailers for the original author and list the original PR in the body.