Compare commits
merge into: andy/hermes-agent:bb/learning-ledger
andy/hermes-agent:main
andy/hermes-agent:dashboard-auth-public-api-allowlist
andy/hermes-agent:extend-hook-registry-for-plugins
andy/hermes-agent:opencode-port/responses-failed-error-detail
andy/hermes-agent:dependabot/github_actions/actions-minor-patch-05611cc895
andy/hermes-agent:dependabot/github_actions/docker/setup-buildx-action-4.1.0
andy/hermes-agent:hermes-events-bus
andy/hermes-agent:ethie/oh-god
andy/hermes-agent:perf/fts-optimize
andy/hermes-agent:release/v0.15.0-strip-gui
andy/hermes-agent:bb/gui
andy/hermes-agent:sid/fal-video-gen-portal
andy/hermes-agent:salvage/31518-env-mode-preserve
andy/hermes-agent:salvage/27795-libolm-dev
andy/hermes-agent:fix/nix-gateway-install-env
andy/hermes-agent:hermes/hermes-737ba78e
andy/hermes-agent:cline-port/plugin-install-browser-urls
andy/hermes-agent:hermes/hermes-1552fa93
andy/hermes-agent:ethie/docker-simplify-tagging
andy/hermes-agent:dependabot/github_actions/actions/deploy-pages-5.0.0
andy/hermes-agent:feat/iron-proxy
andy/hermes-agent:feat/15268-pricing-nous-xai
andy/hermes-agent:dependabot/github_actions/actions/create-github-app-token-3.2.0
andy/hermes-agent:dependabot/github_actions/marocchino/sticky-pull-request-comment-3.0.4
andy/hermes-agent:hermes/fix-copilot-auth-test
andy/hermes-agent:fix/update-detects-parent-shim-as-running
andy/hermes-agent:docker_s6
andy/hermes-agent:dependabot/npm_and_yarn/scripts/whatsapp-bridge/multi-f792d6d6d9
andy/hermes-agent:hermes/hermes-5fdb1cc4
andy/hermes-agent:feat/payments-skills
andy/hermes-agent:bb/tui-ctrlj-newline
andy/hermes-agent:hermes/hermes-2b79b6da
andy/hermes-agent:sid/tool-gateway-implement
andy/hermes-agent:hermes/hermes-aa200214
andy/hermes-agent:feat/whatsapp-cloud-api
andy/hermes-agent:feat/dashboard-typography-and-contrast
andy/hermes-agent:dependabot/npm_and_yarn/website/multi-f792d6d6d9
andy/hermes-agent:ethie/faster-tests-fake-main
andy/hermes-agent:fix/vision-dimension-cap
andy/hermes-agent:hermes/hermes-09fb88ef
andy/hermes-agent:ziliang-review-fork-inherit-toolsets
andy/hermes-agent:salvage-8306-webhook-secret
andy/hermes-agent:dependabot/npm_and_yarn/website/picomatch-2.3.2
andy/hermes-agent:hermes/hermes-5db05717
andy/hermes-agent:hermes/hermes-a5904da7
andy/hermes-agent:refactor/stop-writing-gateway-jsonl-transcripts
andy/hermes-agent:refactor/stop-writing-session-json-snapshots
andy/hermes-agent:hermes/hermes-72b329fd
andy/hermes-agent:hermes/hermes-008bccbc
andy/hermes-agent:hermes/firecrawl-integration-tag-telemetry-gated
andy/hermes-agent:dependabot/npm_and_yarn/website/brace-expansion-1.1.14
andy/hermes-agent:dependabot/npm_and_yarn/website/path-to-regexp-3.3.0
andy/hermes-agent:hermes/hermes-63babeb7
andy/hermes-agent:hermes/hermes-5e533958
andy/hermes-agent:hermes/hermes-8d7d912f
andy/hermes-agent:brooklyn/gui-installer-prereqs
andy/hermes-agent:hermes/hermes-429c1355
andy/hermes-agent:bb/tui-mouse-burst-swallow
andy/hermes-agent:feat/session_search_modes
andy/hermes-agent:hermes/hermes-5ac74b48
andy/hermes-agent:bb/cli-resize-duplication
andy/hermes-agent:salvage/pr-23780
andy/hermes-agent:lsp-plugin
andy/hermes-agent:austin/fix/minimax-oauth
andy/hermes-agent:bb/lsp-lint
andy/hermes-agent:dependabot/uv/urllib3-2.7.0
andy/hermes-agent:hermes/hermes-4fa48a27
andy/hermes-agent:salvage/pr-22685
andy/hermes-agent:feat/session-handoff
andy/hermes-agent:feat/codex-mcp-preset
andy/hermes-agent:feat/codex-cli-provider
andy/hermes-agent:hermes/hermes-3b90958e
andy/hermes-agent:perf/honcho-shutdown
andy/hermes-agent:hermes/hermes-b2e6c99b
andy/hermes-agent:austin/feat/google-oauth-provider
andy/hermes-agent:bb/gui-gateway-attach-wiring
andy/hermes-agent:bb/tui-gateway-attach-core
andy/hermes-agent:hermes/hermes-e239855c
andy/hermes-agent:fix/windows-uv-python-install-stderr
andy/hermes-agent:bb/windows-cli-tui-native-main
andy/hermes-agent:feat/trust-engine
andy/hermes-agent:feat/watchers
andy/hermes-agent:bb/widget-grid-slots
andy/hermes-agent:hermes/hermes-1c84a997
andy/hermes-agent:feat/browser-coordinate-click
andy/hermes-agent:cline-port/openrouter-qwen-cache-control
andy/hermes-agent:fix/ty-1
andy/hermes-agent:hermes/hermes-fee7225c
andy/hermes-agent:hermes/hermes-9ddf5187
andy/hermes-agent:codex-port/hook-output-spill
andy/hermes-agent:fix/terminal-safety-filter-false-positives
andy/hermes-agent:fix/gateway-remove-stale-code-self-restart
andy/hermes-agent:kilocode-port/compact-strip-media
andy/hermes-agent:fix/stale-cwd-recovery
andy/hermes-agent:feat/hermes-send
andy/hermes-agent:kanban_hermes_home
andy/hermes-agent:hermes/hermes-fabc46fe
andy/hermes-agent:feat/tinyfish-browser-provider
andy/hermes-agent:hermes/hermes-96962c19
andy/hermes-agent:claude-code-inspired/session-recap
andy/hermes-agent:fix/lazy-session-creation
andy/hermes-agent:hermes/hermes-3c2988b0
andy/hermes-agent:opencode-port/invalid-mcp-url
andy/hermes-agent:opencode-port/moonshot-ref-siblings
andy/hermes-agent:feat/stash-prompt
andy/hermes-agent:bb/docker-tui-prebuilt
andy/hermes-agent:fix/aux-anthropic-url-regression-test
andy/hermes-agent:vbrunet/2026_04_15-terminal-title-updates
andy/hermes-agent:bb/theme
andy/hermes-agent:cline-port/gateway-memory-monitor
andy/hermes-agent:gemini-cli-port/exit-delete-session
andy/hermes-agent:bb/tui-copy-on-select
andy/hermes-agent:feat/comfyui-skill-v3
andy/hermes-agent:hermes/hermes-dd91e6b2
andy/hermes-agent:feat/provider-modules
andy/hermes-agent:hermes/hermes-dab6fbf1
andy/hermes-agent:feat/comfyui-skill-v2
andy/hermes-agent:vbrunet/2026_04_29-terminal-titles
andy/hermes-agent:feat/kanban-standing
andy/hermes-agent:bb/tui-reload-env
andy/hermes-agent:bb/learning-ledger
andy/hermes-agent:bb/tui-status-ticker-width
andy/hermes-agent:fix/plugin-loader-sys-modules-registration
andy/hermes-agent:fix/deprecate-extrapackages-nix
andy/hermes-agent:hermes/hermes-c8604b32
andy/hermes-agent:fix/chat-tab-persistence
andy/hermes-agent:feat/langfuse-plugin
andy/hermes-agent:kilocode-port/subagent-cost-rollup
andy/hermes-agent:fix/analytics-include-cache-tokens
andy/hermes-agent:hermes/hermes-8fedd55b
andy/hermes-agent:bb/fix-tui-input-selection
andy/hermes-agent:bb/p2-mru-resume-order
andy/hermes-agent:hermes/hermes-2c880154
andy/hermes-agent:hermes/hermes-8b414b52
andy/hermes-agent:nanoclaw-port/signal-groupv2
andy/hermes-agent:hermes/hermes-d7874f79
andy/hermes-agent:hermes/curator-infra
andy/hermes-agent:bb/tui-perf-fix
andy/hermes-agent:feature/tui-showroom
andy/hermes-agent:bb/base-gui
andy/hermes-agent:investigate/fix-tui-container-ink-bundle
andy/hermes-agent:fix/flush-memories-context-overflow
andy/hermes-agent:design/compression-eval-harness
andy/hermes-agent:fix/stop-interrupt-retry-loop
andy/hermes-agent:fix/model-switch-custom-endpoint
andy/hermes-agent:fix/web-env-validation
andy/hermes-agent:fix/hindsight-blank-nuke
andy/hermes-agent:fix/setup-vision-blank
andy/hermes-agent:sid/discord-context-injection
andy/hermes-agent:sid/discord-tool-split
andy/hermes-agent:sid/fix-tools-config-save
andy/hermes-agent:sid/fix-platform-tool-loading
andy/hermes-agent:hermes/hermes-6c37b3dd
andy/hermes-agent:hermes/hermes-9d07c44f
andy/hermes-agent:alice/nous-portal-recommended-models
andy/hermes-agent:onboarding
andy/hermes-agent:sid/restructure-pr1-acp
andy/hermes-agent:bb/tui-web-chat
andy/hermes-agent:opencode-port/configurable-tool-output-limits
andy/hermes-agent:hermes/hermes-34b3f52d
andy/hermes-agent:sid/types-and-lints
andy/hermes-agent:sid/foundational-restructure
andy/hermes-agent:feat/dashboard-chat
andy/hermes-agent:gemini-cli-port/ssl-retry-patterns
andy/hermes-agent:cline-port/anthropic-cache-tokens-top-level
andy/hermes-agent:nemo-gym-changes
andy/hermes-agent:fix/schema-reconciliation
andy/hermes-agent:fix/upgrade-agent-browser-0.26
andy/hermes-agent:feat/ssrf-allow-private-urls
andy/hermes-agent:feat/volcengine-byteplus
andy/hermes-agent:refactor/unify-transport-dispatch
andy/hermes-agent:feat/require-mention-channels
andy/hermes-agent:remove-nous-free-allowlist
andy/hermes-agent:codex-port/ignore-user-config-flags
andy/hermes-agent:bb/tui-mouse-toggle
andy/hermes-agent:feat/td-skill-update
andy/hermes-agent:feat/bedrock-transport
andy/hermes-agent:feat/chat-completions-transport
andy/hermes-agent:hermes/hermes-bb7c1b2e
andy/hermes-agent:kilocode-port/filter-non-tool-openrouter-models
andy/hermes-agent:fix/kimi-drop-temperature
andy/hermes-agent:bb/tui-elapsed-lastmsg-8541
andy/hermes-agent:feat/transport-types
andy/hermes-agent:refactor/extract-codex-adapter
andy/hermes-agent:ironclaw-port/url-and-form-redaction
andy/hermes-agent:openclaw-port/display-tool-call-tags-strip
andy/hermes-agent:openclaw-port/anthropic-max-tokens-guard
andy/hermes-agent:openclaw-port/compaction-credential-redaction
andy/hermes-agent:sid/workspace-salvage
andy/hermes-agent:chore/ci-path-filters
andy/hermes-agent:chore/remove-stale-docs
andy/hermes-agent:feat/native-gemini-provider
andy/hermes-agent:salvage/helix4u-zai-setup
andy/hermes-agent:hermes/hermes-150d8cf8
andy/hermes-agent:hermes/browser-dialog
andy/hermes-agent:fix/minimax-glm-token-compression
andy/hermes-agent:salvage/nvidia-nim-max-tokens
andy/hermes-agent:fix/nix-web-dashboard
andy/hermes-agent:feat/comfyui-skill
andy/hermes-agent:hermes/hermes-9c0eed69
andy/hermes-agent:fix/mcp-oauth-bidirectional-generator-bridge
andy/hermes-agent:claude-code-inspired/dangerous-cmd-hardening
andy/hermes-agent:fix/test-backoff-timers
andy/hermes-agent:ci/matrix-split-v2
andy/hermes-agent:fix/test-reduction-batch-2
andy/hermes-agent:feat/searxng-backend
andy/hermes-agent:opencode-port/sessions-export-sanitize
andy/hermes-agent:dashboard-show-remote-gateway-url
andy/hermes-agent:hermes/gemini-oauth-30b2099d
andy/hermes-agent:feat/gemini-tts-salvage
andy/hermes-agent:feat/ungate-tool-gateway
andy/hermes-agent:xai-media-tools
andy/hermes-agent:fix/ci-test-failures
andy/hermes-agent:hermes/hermes-9d38280f
andy/hermes-agent:gemini-cli-port/strategic-reevaluation
andy/hermes-agent:fix/client-cache-fd-exhaustion
andy/hermes-agent:salvage/watch-notification-routing
andy/hermes-agent:hermes/hermes-5d6c3d3e
andy/hermes-agent:fix/dashboard-analytics-accuracy
andy/hermes-agent:hermes/hermes-9a00cfa2
andy/hermes-agent:hermes/hermes-050c727e
andy/hermes-agent:hermes/hermes-4a9b24c3
andy/hermes-agent:codex-port/mcp-parallel-tool-calls
andy/hermes-agent:gateway-plugin-loading
andy/hermes-agent:max_paperclips/gateway-plugin-loading
andy/hermes-agent:feat/remote-gateway-health-probe
andy/hermes-agent:compaction-secrets-preservation
andy/hermes-agent:fix/dashboard-routing
andy/hermes-agent:update-issue-templates-debug-share
andy/hermes-agent:sid/tb2-evals
andy/hermes-agent:feat/deep-research-skill
andy/hermes-agent:hermes/hermes-1b2e5f73
andy/hermes-agent:hermes/hermes-9e793b91
andy/hermes-agent:fix/feishu-identity-model
andy/hermes-agent:fix/web-cron-page-schedule-object
andy/hermes-agent:ironclaw-port/telegram-utf16-splitting
andy/hermes-agent:nanoclaw-port/session-artifact-cleanup
andy/hermes-agent:openclaw-port/reject-weak-gateway-creds
andy/hermes-agent:openclaw-port/matrix-mentions-user-ids
andy/hermes-agent:fix/gateway-no-systemctl
andy/hermes-agent:skill/github-code-review-mcp-tools
andy/hermes-agent:chore/remove-sha-docker-tag
andy/hermes-agent:feat/gateway-mcp-config-watcher
andy/hermes-agent:hermes/hermes-1f7bfa9e
andy/hermes-agent:feat/file-sync-back
andy/hermes-agent:fix/modal-ssh-upload-bugs
andy/hermes-agent:hermes/salvage-7558
andy/hermes-agent:hermes/hermes-72401910
andy/hermes-agent:hermes/hermes-925eff6a
andy/hermes-agent:hermes/hermes-c965583d
andy/hermes-agent:hermes/hermes-9c0ad5d9
andy/hermes-agent:hermes/hermes-905d6262
andy/hermes-agent:hermes/hermes-070e5a43
andy/hermes-agent:hermes/hermes-c382c827
andy/hermes-agent:hermes/hermes-7052b79e
andy/hermes-agent:hermes/hermes-e08f4d67
andy/hermes-agent:hermes/hermes-566f8c6d
andy/hermes-agent:hermes/hermes-4fdb3d23
andy/hermes-agent:hermes/hermes-67b0d759
andy/hermes-agent:hermes/hermes-b5e135be
andy/hermes-agent:hermes/hermes-2d3cc746
andy/hermes-agent:hermes/hermes-80a283e0
andy/hermes-agent:hermes/hermes-83dfcdfa
andy/hermes-agent:hermes/hermes-efa38736
andy/hermes-agent:hermes/hermes-c78b9811
andy/hermes-agent:hermes/hermes-ffc6cfa8
andy/hermes-agent:hermes/hermes-a50b945e
andy/hermes-agent:twilio-auth-fix
andy/hermes-agent:fix/claw-migrate-warn-running-gateway
andy/hermes-agent:hermes/hermes-f6cda1f0
andy/hermes-agent:hermes/hermes-524779d7
andy/hermes-agent:hermes/hermes-da2f08b5
andy/hermes-agent:hermes/hermes-672624fb
andy/hermes-agent:hermes/hermes-28292000
andy/hermes-agent:hermes/hermes-ec496c80
andy/hermes-agent:hermes/hermes-f43decdf
andy/hermes-agent:hermes/hermes-5bef3224
andy/hermes-agent:hermes/hermes-17ae0c29
andy/hermes-agent:fix/claw-migrate-improve-warnings
andy/hermes-agent:fix/claw-migrate-json-env-keys
andy/hermes-agent:fix/claw-migrate-workspace-main-paths
andy/hermes-agent:fix/claw-migrate-schema-drift
andy/hermes-agent:fix/matrix-memorycryptostore-args
andy/hermes-agent:fix/claw-migrate-tts-microsoft
andy/hermes-agent:fix/claw-migrate-nested-channel-tokens
andy/hermes-agent:hermes/hermes-ea68d311
andy/hermes-agent:hermes/hermes-38060157
andy/hermes-agent:hermes/hermes-0224a8b2
andy/hermes-agent:hermes/hermes-b092dccf
andy/hermes-agent:hermes/hermes-03da22bc
andy/hermes-agent:hermes/bucket3
andy/hermes-agent:hermes/hermes-2e0dc4f3
andy/hermes-agent:salvage/bucket-st
andy/hermes-agent:hermes/hermes-ebb65d1b
andy/hermes-agent:hermes/hermes-d0d52697
andy/hermes-agent:hermes/hermes-b17bdb8e
andy/hermes-agent:hermes/hermes-bc33645d
andy/hermes-agent:salvage/bucket-p
andy/hermes-agent:hermes/hermes-4a5220fe
andy/hermes-agent:hermes/hermes-7f8c199a
andy/hermes-agent:hermes/hermes-fefa061a
andy/hermes-agent:feat/mautrix-migration
andy/hermes-agent:hermes/hermes-7e4c9931
andy/hermes-agent:hermes/hermes-dc4200fd
andy/hermes-agent:salvage/bucket-o
andy/hermes-agent:feat/container-aware-cli
andy/hermes-agent:fix/daytona-bulk-upload-config-bridge-7362
andy/hermes-agent:claude-code-inspired/context-breakdown
andy/hermes-agent:hermes/hermes-1bd9e323
andy/hermes-agent:hermes/hermes-17b93f0b
andy/hermes-agent:hermes/hermes-9d5d8704
andy/hermes-agent:salvage/bucket-n
andy/hermes-agent:api-server-enforce-key
andy/hermes-agent:hermes/hermes-f8dcb6dd
andy/hermes-agent:hermes/hermes-c7787b3d
andy/hermes-agent:salvage/bucket-m
andy/hermes-agent:hermes/hermes-30126ac0
andy/hermes-agent:terminate-zombie-processes
andy/hermes-agent:hermes/hermes-ead3c84e
andy/hermes-agent:hermes/hermes-f1c0a201
andy/hermes-agent:salvage/bucket-i
andy/hermes-agent:hermes/hermes-11e9b74a
andy/hermes-agent:hermes/hermes-90f54154
andy/hermes-agent:hermes/hermes-2376d00b
andy/hermes-agent:hermes/hermes-8f5f6063
andy/hermes-agent:salvage/bucket-l
andy/hermes-agent:hermes/hermes-84ed614f
andy/hermes-agent:hermes/hermes-0f8490c2
andy/hermes-agent:hermes/hermes-2a3d0461
andy/hermes-agent:salvage/bucket-k
andy/hermes-agent:hermes/hermes-62b22a1e
andy/hermes-agent:hermes/hermes-26f90bd3
andy/hermes-agent:security/bucket-j
andy/hermes-agent:hermes/hermes-7ef33568
andy/hermes-agent:hermes/hermes-3ffcbfb5
andy/hermes-agent:hermes/hermes-6584b1e4
andy/hermes-agent:hermes/hermes-d9d67691
andy/hermes-agent:hermes/hermes-cde3c240
andy/hermes-agent:hermes/hermes-27e1fc16
andy/hermes-agent:hermes/hermes-5f2c8429
andy/hermes-agent:hermes/hermes-8dbb2cec
andy/hermes-agent:hermes/hermes-bbf55c16
andy/hermes-agent:hermes/hermes-a21aa249
andy/hermes-agent:hermes/hermes-eafa085a
andy/hermes-agent:hermes/hermes-4b558854
andy/hermes-agent:hermes/hermes-0687c6d6
andy/hermes-agent:hermes/hermes-33e13b6f
andy/hermes-agent:hermes/hermes-1fd9f435
andy/hermes-agent:hermes/hermes-1bb7ea55
andy/hermes-agent:hermes/hermes-57ea0a16
andy/hermes-agent:hermes/hermes-5bbf4839
andy/hermes-agent:hermes/hermes-617689ff
andy/hermes-agent:hermes/hermes-5cfcdf33
andy/hermes-agent:hermes/hermes-05b0c02e
andy/hermes-agent:hermes/hermes-115318ed
andy/hermes-agent:hermes/hermes-f454d397
andy/hermes-agent:hermes/hermes-43ae98f3
andy/hermes-agent:hermes/hermes-87f37874
andy/hermes-agent:hermes/hermes-bbe6a8b7
andy/hermes-agent:hermes/hermes-2556be1e
andy/hermes-agent:hermes/hermes-8494816d
andy/hermes-agent:hermes/hermes-0d0bfa89
andy/hermes-agent:hermes/hermes-c711558a
andy/hermes-agent:hermes/hermes-7aad138d
andy/hermes-agent:hermes/hermes-4b6801c7
andy/hermes-agent:hermes/hermes-374f99bc
andy/hermes-agent:hermes/hermes-605d722e
andy/hermes-agent:hermes/hermes-c546e7a1
andy/hermes-agent:hermes/hermes-62b6865d
andy/hermes-agent:hermes/hermes-f8a6248b
andy/hermes-agent:hermes/hermes-fe654944
andy/hermes-agent:hermes/hermes-d4ece6c2
andy/hermes-agent:fix/stream-think-tag-false-positive
andy/hermes-agent:hermes/hermes-d0607f0a
andy/hermes-agent:hermes/hermes-1c7df171
andy/hermes-agent:fix/oauth-issue2-nous-pool-refresh-sync-authstore
andy/hermes-agent:hermes/hermes-95b15f6e
andy/hermes-agent:hermes/hermes-e201f931
andy/hermes-agent:opencode-port/alibaba-rate-limit-retry
andy/hermes-agent:fix/oauth-issue1-nous-entry-needs-refresh
andy/hermes-agent:fix/oauth-issue5-is-expiring-none-handling
andy/hermes-agent:fix/oauth-issue4-anthropic-proactive-sync-hermes-pkce
andy/hermes-agent:fix/oauth-issue3-codex-proactive-sync-before-refresh
andy/hermes-agent:sid/dead-code-remove
andy/hermes-agent:hermes/hermes-8c64f471
andy/hermes-agent:hermes/hermes-ff5ba265
andy/hermes-agent:hermes/hermes-71aea4c5
andy/hermes-agent:hermes/hermes-1b5bb607
andy/hermes-agent:hermes/hermes-25b83dfd
andy/hermes-agent:fix/nix-shared-state-perms
andy/hermes-agent:hermes/hermes-30ac05a4
andy/hermes-agent:hermes/hermes-731d3033
andy/hermes-agent:hermes/hermes-41d14a2c
andy/hermes-agent:hermes/hermes-3f221b1b
andy/hermes-agent:hermes/hermes-e873511f
andy/hermes-agent:hermes/hermes-41cd011b
andy/hermes-agent:hermes/hermes-f409204f
andy/hermes-agent:hermes/hermes-bcf93c03
andy/hermes-agent:hermes/hermes-2f44469d
andy/hermes-agent:hermes/hermes-3466ee98
andy/hermes-agent:hermes/hermes-398baa59
andy/hermes-agent:hermes/hermes-1ff40dac
andy/hermes-agent:hermes/hermes-0429963a
andy/hermes-agent:hermes/hermes-ff89d9af
andy/hermes-agent:hermes/hermes-de843a22
andy/hermes-agent:hermes/hermes-037596df
andy/hermes-agent:hermes/hermes-e77cdbbf
andy/hermes-agent:hermes/hermes-135e8d93
andy/hermes-agent:hermes/hermes-f2a81adb
andy/hermes-agent:hermes/hermes-2447adad
andy/hermes-agent:hermes/hermes-005912a8
andy/hermes-agent:hermes/hermes-1845cad9
andy/hermes-agent:hermes/hermes-d5c0fd3b
andy/hermes-agent:hermes/hermes-b5d8eff0
andy/hermes-agent:hermes/hermes-5df3920d
andy/hermes-agent:hermes/hermes-b0a4b31e
andy/hermes-agent:hermes/hermes-063b6e1d
andy/hermes-agent:hermes/hermes-98aa7b3a
andy/hermes-agent:hermes/hermes-1fa6ad8f
andy/hermes-agent:hermes/hermes-485d498c
andy/hermes-agent:hermes/hermes-e77429d5
andy/hermes-agent:hermes/hermes-1d8a5754
andy/hermes-agent:sid/unified-file-sync
andy/hermes-agent:hermes/hermes-38cb19c4
andy/hermes-agent:hermes/hermes-54fe23ca
andy/hermes-agent:fix/nix-add-to-system-packages-complete
andy/hermes-agent:hermes/hermes-947c24f7
andy/hermes-agent:sid/unified-terminal-envs
andy/hermes-agent:hermes/hermes-9085f0bb
andy/hermes-agent:hermes/hermes-6b365d9a
andy/hermes-agent:hermes/hermes-4923821d
andy/hermes-agent:hermes/hermes-4e231d00
andy/hermes-agent:hermes/hermes-554a02fe
andy/hermes-agent:hermes/hermes-016048ea
andy/hermes-agent:feat/worldsim-skill
andy/hermes-agent:hermes/hermes-6b456629
andy/hermes-agent:hermes/hermes-f845dfbe
andy/hermes-agent:hermes/hermes-83d3c1db
andy/hermes-agent:hermes/hermes-8452ab09
andy/hermes-agent:hermes/hermes-9f84a11f
andy/hermes-agent:hermes/hermes-53abd2ba
andy/hermes-agent:hermes/hermes-ef18f2ae
andy/hermes-agent:hermes/hermes-7d888e8c
andy/hermes-agent:hermes/hermes-7bf50ef1
andy/hermes-agent:hermes/hermes-f400edfe
andy/hermes-agent:hermes/hermes-27761e13
andy/hermes-agent:hermes/hermes-d07e864e
andy/hermes-agent:hermes/hermes-e3aca6ef
andy/hermes-agent:hermes/hermes-c7eda492
andy/hermes-agent:sid/tool-result-fixes
andy/hermes-agent:hermes/hermes-87470f33
andy/hermes-agent:hermes/hermes-ef25015a
andy/hermes-agent:hermes/hermes-fb3680fc
andy/hermes-agent:hermes/hermes-476720eb
andy/hermes-agent:hermes/hermes-7d70fb12
andy/hermes-agent:hermes/hermes-2f2a1403
andy/hermes-agent:hermes/hermes-c81d4c5a
andy/hermes-agent:hermes/hermes-3ff117b3
andy/hermes-agent:hermes/hermes-5e970516
andy/hermes-agent:hermes/hermes-cabfdb4f
andy/hermes-agent:sid/restructure-tests
andy/hermes-agent:hermes/hermes-701b2186
andy/hermes-agent:rm/add-portal-link
andy/hermes-agent:hermes/hermes-81f85bb4
andy/hermes-agent:hermes/hermes-822a0590
andy/hermes-agent:hermes/hermes-d623dc00
andy/hermes-agent:hermes/hermes-37b5ec52
andy/hermes-agent:hermes/hermes-fef87f31
andy/hermes-agent:hermes/hermes-f1e32b74
andy/hermes-agent:hermes/hermes-756f7e33
andy/hermes-agent:salvage/5752-nous-free-tier-gating
andy/hermes-agent:feat/nous-free-tier-model-gating
andy/hermes-agent:switch-managed-browser-to-browser-use
andy/hermes-agent:hermes/hermes-7697425c
andy/hermes-agent:hermes/hermes-53b01c86
andy/hermes-agent:hermes/hermes-81d3384e
andy/hermes-agent:hermes/hermes-86122627
andy/hermes-agent:hermes/hermes-03d7aa21
andy/hermes-agent:hermes/hermes-b34c1567
andy/hermes-agent:hermes/hermes-694ff34e
andy/hermes-agent:hermes/hermes-b93afb56
andy/hermes-agent:hermes/hermes-c1ef09e3
andy/hermes-agent:fix/portal-env-var-ignored-during-login
andy/hermes-agent:hermes/hermes-479681ef
andy/hermes-agent:hermes/hermes-cd5ac32c
andy/hermes-agent:hermes/hermes-71aaf6c8
andy/hermes-agent:hermes/hermes-f177c8f0
andy/hermes-agent:hermes/hermes-db0c54fb
andy/hermes-agent:sid/unified-execution
andy/hermes-agent:hermes/hermes-35bfb4c2
andy/hermes-agent:hermes/hermes-47b24166
andy/hermes-agent:hermes/hermes-e5557d16
andy/hermes-agent:hermes/hermes-b809b68d
andy/hermes-agent:sid/nix-fixes-nits
andy/hermes-agent:taubench_eval
andy/hermes-agent:feat/firecrawl-browser-provider
andy/hermes-agent:hermes/hermes-7a93e2c7
andy/hermes-agent:hermes/hermes-8cc55056
andy/hermes-agent:hermes/hermes-838c5b76
andy/hermes-agent:workdir-quote-escape
andy/hermes-agent:hermes/hermes-c4a8b829
andy/hermes-agent:rm/browser-use-tool-gateway
andy/hermes-agent:hermes/hermes-ac0ac8da
andy/hermes-agent:hermes/hermes-ba679ba8
andy/hermes-agent:hermes/hermes-b692993b
andy/hermes-agent:hermes/hermes-ce719117
andy/hermes-agent:hermes/hermes-0bc806a5
andy/hermes-agent:hermes/hermes-00399121
andy/hermes-agent:hermes/hermes-5a282295
andy/hermes-agent:fix/various-qa
andy/hermes-agent:hermes/hermes-3ef4d555
andy/hermes-agent:hermes/hermes-ef6f7818
andy/hermes-agent:hermes/hermes-be07ee70
andy/hermes-agent:hermes/hermes-c0614333
andy/hermes-agent:hermes/hermes-3c9f4a9e
andy/hermes-agent:hermes/hermes-39d533b8
andy/hermes-agent:hermes/hermes-d6f63ade
andy/hermes-agent:hermes/hermes-f47156c2
andy/hermes-agent:hermes/hermes-533d3bd8
andy/hermes-agent:hermes/hermes-2e42b3a2
andy/hermes-agent:fix/research-paper-writing-gaps
andy/hermes-agent:hermes/hermes-7c95bd3c
andy/hermes-agent:hermes/hermes-626ac686
andy/hermes-agent:hermes/hermes-0d7c99a6
andy/hermes-agent:fix/nous-portal-env-override
andy/hermes-agent:hermes/hermes-80f0ff01
andy/hermes-agent:hermes/hermes-8bb0c65b
andy/hermes-agent:feat/model-pricing-display
andy/hermes-agent:hermes/hermes-03bdbe18
andy/hermes-agent:hermes/hermes-84dbce0e
andy/hermes-agent:hermes/hermes-c6eacd11
andy/hermes-agent:hermes/hermes-25bce159
andy/hermes-agent:hermes/hermes-1e6ea4d6
andy/hermes-agent:hermes/hermes-bae00f49
andy/hermes-agent:hermes/hermes-40531417
andy/hermes-agent:hermes/hermes-f9d9e542
andy/hermes-agent:hermes/hermes-8e46c8ba
andy/hermes-agent:hermes/hermes-3d0a599a
andy/hermes-agent:hermes/hermes-c0119f86
andy/hermes-agent:hermes/hermes-7fbab92d
andy/hermes-agent:hermes/hermes-32facb3d
andy/hermes-agent:hermes/hermes-d0aa7802
andy/hermes-agent:hermes/hermes-4ff7e90f
andy/hermes-agent:hermes/hermes-3667f42f
andy/hermes-agent:feat/model-provider-overhaul
andy/hermes-agent:hermes/hermes-1a69af68
andy/hermes-agent:hermes/hermes-c035e060
andy/hermes-agent:hermes/hermes-466467d8
andy/hermes-agent:hermes/hermes-95f1173a
andy/hermes-agent:hermes/hermes-208cc6d6
andy/hermes-agent:hermes/hermes-1e826e60
andy/hermes-agent:hermes/hermes-f2f17778
andy/hermes-agent:hermes/hermes-a7ac7c42
andy/hermes-agent:hermes/hermes-db023341
andy/hermes-agent:hermes/hermes-8c57ca22
andy/hermes-agent:hermes/hermes-511b79a5
andy/hermes-agent:hermes/hermes-931dc358
andy/hermes-agent:feat/fix-plugin-cache-prefix
andy/hermes-agent:hermes/hermes-3329bd98
andy/hermes-agent:salvage/hindsight-5044
andy/hermes-agent:hermes/hermes-0971565e
andy/hermes-agent:hermes/hermes-eba4b946
andy/hermes-agent:hermes/hermes-ff50f5ae
andy/hermes-agent:hermes/hermes-feb2ec9d
andy/hermes-agent:hermes/hermes-a82207c8
andy/hermes-agent:hermes/hermes-1e1d81f5
andy/hermes-agent:hermes/hermes-766150bd
andy/hermes-agent:hermes/hermes-cc1cea2c
andy/hermes-agent:hermes/hermes-5cbeeeb5
andy/hermes-agent:hermes/hermes-3eaaba2c
andy/hermes-agent:hermes/hermes-d307e4ae
andy/hermes-agent:claude-code-inspired/session-branch
andy/hermes-agent:hermes/hermes-70885193
andy/hermes-agent:hermes/hermes-8eea7e1a
andy/hermes-agent:hermes/hermes-36a59267
andy/hermes-agent:hermes/hermes-31074029
andy/hermes-agent:hermes/hermes-10baf9e9
andy/hermes-agent:hermes/hermes-4d7efb1e
andy/hermes-agent:nous-account-balance
andy/hermes-agent:hermes/hermes-3b5d0490
andy/hermes-agent:hermes/hermes-97fe1e3c
andy/hermes-agent:hermes/hermes-b19afd39
andy/hermes-agent:hermes/hermes-669f5444
andy/hermes-agent:feat/docker-env-vars
andy/hermes-agent:hermes/hermes-5deaba3e
andy/hermes-agent:hermes/hermes-368f91f8
andy/hermes-agent:hermes/hermes-b9588524
andy/hermes-agent:feat/acp-mcp-server-registration
andy/hermes-agent:opencode-port/language-aware-compression
andy/hermes-agent:hermes/hermes-50668d84
andy/hermes-agent:hermes/hermes-376c741f
andy/hermes-agent:hermes/hermes-7cbc527e
andy/hermes-agent:hermes/hermes-7ab21fac
andy/hermes-agent:hermes/hermes-623833b1
andy/hermes-agent:hermes/hermes-7de32281
andy/hermes-agent:hermes/hermes-921b394b
andy/hermes-agent:hermes/hermes-dc0f1ff6
andy/hermes-agent:hermes/hermes-9a801eb5
andy/hermes-agent:hermes/hermes-ad6e6820
andy/hermes-agent:hermes/hermes-8b18afb8
andy/hermes-agent:rewbs/tool-use-charge-to-subscription
andy/hermes-agent:gemini-cli-port/stale-browser-snapshot-superseding
andy/hermes-agent:hermes/hermes-91844716
andy/hermes-agent:hermes/hermes-f55316e0
andy/hermes-agent:hermes/hermes-76f7e5cd
andy/hermes-agent:hermes/hermes-cc622e18
andy/hermes-agent:hermes/hermes-79b25268
andy/hermes-agent:hermes/hermes-f4786c9c
andy/hermes-agent:hermes/hermes-41d468a2
andy/hermes-agent:hermes/hermes-701ad555
andy/hermes-agent:hermes/hermes-35337734
andy/hermes-agent:hermes/hermes-e10e6bf0
andy/hermes-agent:hermes/hermes-8a2494d5
andy/hermes-agent:hermes/hermes-385d033c
andy/hermes-agent:hermes/hermes-2c786d88
andy/hermes-agent:hermes/hermes-24c5a56c
andy/hermes-agent:hermes/hermes-a8a19433
andy/hermes-agent:hermes/hermes-dadddde3
andy/hermes-agent:hermes/hermes-99d28812
andy/hermes-agent:hermes/hermes-98ff0c21
andy/hermes-agent:hermes/hermes-abdd86e5
andy/hermes-agent:hermes/hermes-3090d6ac
andy/hermes-agent:hermes/hermes-eaa694be
andy/hermes-agent:sid/pwn-bench
andy/hermes-agent:hermes/hermes-578d1b94
andy/hermes-agent:hermes/hermes-da1d3af1
andy/hermes-agent:hermes/hermes-88866ac7
andy/hermes-agent:hermes/hermes-5c3ebbce
andy/hermes-agent:hermes/hermes-b6eff376
andy/hermes-agent:hermes-d0598e72
andy/hermes-agent:hermes/hermes-940f3eca
andy/hermes-agent:hermes/hermes-e87583c1
andy/hermes-agent:hermes/hermes-bf538de7
andy/hermes-agent:hermes/hermes-f75b7c8e
andy/hermes-agent:sid/pwn-bench-dojo-id-fix
andy/hermes-agent:hermes/hermes-b2abefdf
andy/hermes-agent:hermes/hermes-f0221ac3
andy/hermes-agent:hermes/hermes-a866ff99
andy/hermes-agent:hermes/hermes-f091e3b8
andy/hermes-agent:hermes/hermes-cd7257f9
andy/hermes-agent:hermes/hermes-9b1dadd7
andy/hermes-agent:hermes/hermes-b7b6ec54
andy/hermes-agent:hermes/hermes-4ce879fa
andy/hermes-agent:hermes/hermes-c815228d
andy/hermes-agent:hermes/hermes-3bd17b7b
andy/hermes-agent:fix/minimax-aux-model-pricing
andy/hermes-agent:fix/npm-ci-update
andy/hermes-agent:fix/uv-lock-exa-py
andy/hermes-agent:feat/secrets-phase1
andy/hermes-agent:ascii-video/text-readability-and-layout-oracle
andy/hermes-agent:hermes/hermes-76df6a95
andy/hermes-agent:hermes/hermes-ac2495d7
andy/hermes-agent:hermes/hermes-bf2cd279
andy/hermes-agent:hermes/hermes-8e764fde
andy/hermes-agent:hermes/hermes-b6f1eb21
andy/hermes-agent:hermes/hermes-3d9ccfec
andy/hermes-agent:hermes/hermes-deb3d2ef
andy/hermes-agent:endless_terminals_integration
andy/hermes-agent:hermes/hermes-4b23f322
andy/hermes-agent:feat/web-ui
andy/hermes-agent:hermes/hermes-6835494f
andy/hermes-agent:fix/anthropic-whatsapp
andy/hermes-agent:feat/rate-limiter
andy/hermes-agent:hermes/hermes-b8e0ec91
andy/hermes-agent:hermes/hermes-af1b4b23
andy/hermes-agent:hermes/hermes-164a52cc
andy/hermes-agent:feat/ci-improvements
andy/hermes-agent:feat/agent-resilience
andy/hermes-agent:feat/cron-script-gate
andy/hermes-agent:hermes/hermes-0d76d7cd
andy/hermes-agent:hermes/hermes-e6f1d362
andy/hermes-agent:hermes/hermes-b8464e26
andy/hermes-agent:hermes/hermes-ea354159
andy/hermes-agent:hermes/hermes-ab59de22
andy/hermes-agent:hermes/hermes-ec5223e1
andy/hermes-agent:hermes/hermes-b351df6b
andy/hermes-agent:docker
andy/hermes-agent:feat/keystore-wallet
andy/hermes-agent:hermes/hermes-f4f0292e
andy/hermes-agent:hermes/hermes-97c48e70
andy/hermes-agent:fix/uv-lock-version
andy/hermes-agent:fix/unify-permissions
andy/hermes-agent:hermes/hermes-51f7b6b6
andy/hermes-agent:hermes/hermes-135af169
andy/hermes-agent:hermes/hermes-a403a780
andy/hermes-agent:hermes/hermes-5e6ebebb
andy/hermes-agent:hermes/hermes-f5a4cd91
andy/hermes-agent:hermes/hermes-03f7719f
andy/hermes-agent:hermes/hermes-8a2f15b3
andy/hermes-agent:hermes/hermes-5a68ad9d
andy/hermes-agent:hermes/hermes-a2b72b01
andy/hermes-agent:feat/gpt-tool-steering
andy/hermes-agent:hermes/hermes-37947bdb
andy/hermes-agent:hermes/hermes-9420d6a3
andy/hermes-agent:hermes/hermes-6c7a1441
andy/hermes-agent:hermes/hermes-86f614ec
andy/hermes-agent:hermes/hermes-4f6a1f8e
andy/hermes-agent:hermes/hermes-caea5692
andy/hermes-agent:hermes/hermes-f8f80cce
andy/hermes-agent:hermes/hermes-5ef8201d
andy/hermes-agent:hermes/hermes-140430f8
andy/hermes-agent:feat/suffix-path-apt-provision
andy/hermes-agent:hermes/hermes-64c3ceb2
andy/hermes-agent:hermes/hermes-cd318db6
andy/hermes-agent:hermes/hermes-dd753a5f
andy/hermes-agent:hermes/hermes-dfd0d467
andy/hermes-agent:hermes/hermes-7e1dfbda
andy/hermes-agent:fix/api-server-toolset
andy/hermes-agent:hermes/hermes-93060758
andy/hermes-agent:hermes/hermes-ad9511d6
andy/hermes-agent:hermes/hermes-6dfb41ea
andy/hermes-agent:hermes/hermes-52a54135
andy/hermes-agent:hermes/hermes-203498f3
andy/hermes-agent:hermes/hermes-998d1c81
andy/hermes-agent:hermes/hermes-7d7ac769
andy/hermes-agent:hermes/hermes-d877fbc1
andy/hermes-agent:hermes/hermes-9f3f51e2
andy/hermes-agent:hermes/hermes-0b98b356
andy/hermes-agent:chore/remove-pkce-oauth
andy/hermes-agent:hermes/hermes-2cdc8d39
andy/hermes-agent:hermes/hermes-c75e42c8
andy/hermes-agent:hermes/hermes-e483085e
andy/hermes-agent:sid/remove-drift-check
andy/hermes-agent:sid/nix-flake
andy/hermes-agent:hermes/hermes-ac86d935
andy/hermes-agent:hermes/hermes-4e5b94c3
andy/hermes-agent:hermes/hermes-84f0446e
andy/hermes-agent:docs/hooks-page-update
andy/hermes-agent:hermes/hermes-aff6c48a
andy/hermes-agent:hermes/hermes-ae6184d3
andy/hermes-agent:hermes/hermes-afb547e5
andy/hermes-agent:hermes/hermes-0f4e765c
andy/hermes-agent:hermes/hermes-baa39faf
andy/hermes-agent:hermes/hermes-gateway-context
andy/hermes-agent:hermes/hermes-3c0e357d
andy/hermes-agent:hermes/hermes-ab0f07ce
andy/hermes-agent:hermes/hermes-e6c9dba2
andy/hermes-agent:hermes/hermes-1817ce8d
andy/hermes-agent:hermes/hermes-764f7842
andy/hermes-agent:hermes/hermes-e26fa01d
andy/hermes-agent:hermes/hermes-e8325591
andy/hermes-agent:hermes/hermes-46839e2f
andy/hermes-agent:hermes/hermes-28b19313
andy/hermes-agent:hermes/hermes-11fd857d
andy/hermes-agent:hermes/hermes-1b7b3ffb
andy/hermes-agent:hermes/hermes-1e53b883
andy/hermes-agent:hermes/hermes-c6c58b20
andy/hermes-agent:fix/toolset-deselection
andy/hermes-agent:fix/media-paths-spaces
andy/hermes-agent:fix/media-spaces-2
andy/hermes-agent:fix/approval-yaml-off
andy/hermes-agent:hermes/hermes-a2fa4544
andy/hermes-agent:hermes/hermes-d58d97b5
andy/hermes-agent:hermes/hermes-f9506ecc
andy/hermes-agent:hermes/hermes-dc116992
andy/hermes-agent:hermes/hermes-81afb1bb
andy/hermes-agent:hermes/hermes-31d7db3b
andy/hermes-agent:hermes/hermes-5d6932ba
andy/hermes-agent:hermes/hermes-40b195db
andy/hermes-agent:hermes/hermes-0fa141a3
andy/hermes-agent:feat/streaming-default
andy/hermes-agent:feat/context-file-priority
andy/hermes-agent:hermes/hermes-3369cdb1
andy/hermes-agent:streaming-plus-reasoning
andy/hermes-agent:fix/event-loop-closed-delegate
andy/hermes-agent:hermes/hermes-7ea545bf
andy/hermes-agent:hermes/hermes-3d7c23c9
andy/hermes-agent:hermes/hermes-4a7e401e
andy/hermes-agent:hermes/hermes-b313983a
andy/hermes-agent:hermes/hermes-6757a563
andy/hermes-agent:hermes/hermes-e83093f0
andy/hermes-agent:hermes/hermes-14b05543
andy/hermes-agent:hermes/hermes-54c1fc70
andy/hermes-agent:hermes/hermes-f1230adf
andy/hermes-agent:hermes/hermes-9c2a5d00
andy/hermes-agent:fix/custom-endpoint-context-length
andy/hermes-agent:hermes/hermes-51eb4292
andy/hermes-agent:hermes/hermes-9dc2e46c
andy/hermes-agent:fix/anthropic-compatible-api-mode
andy/hermes-agent:hermes/hermes-6193ae92
andy/hermes-agent:hermes/hermes-b29f73b2
andy/hermes-agent:hermes/hermes-ba3c8fa1
andy/hermes-agent:hermes/hermes-562a3784
andy/hermes-agent:fix/whatsapp-reply-prefix-bridging
andy/hermes-agent:hermes/hermes-eab76047
andy/hermes-agent:feat/whatsapp-reply-prefix
andy/hermes-agent:feat/unauthorized-dm-behavior
andy/hermes-agent:fix/cron-oneshot-grace
andy/hermes-agent:hermes/hermes-8112c8c8
andy/hermes-agent:fix/browser-command-registry
andy/hermes-agent:feat/cron-silent-suppression
andy/hermes-agent:fix/agent-created-skill-policy
andy/hermes-agent:hermes/hermes-e2084cc7
andy/hermes-agent:hermes/hermes-c954a38b
andy/hermes-agent:hermes/hermes-8058968e
andy/hermes-agent:hermes/hermes-0d5a11f5
andy/hermes-agent:hermes/hermes-09305421
andy/hermes-agent:hermes/hermes-0ed29ee7
andy/hermes-agent:hermes/hermes-4c573e36
andy/hermes-agent:hermes/hermes-044b5de9
andy/hermes-agent:hermes/hermes-48646def
andy/hermes-agent:fix/gateway-platform-hardening
andy/hermes-agent:fix/tool-handler-safety
andy/hermes-agent:hermes/hermes-31dc9875
andy/hermes-agent:fix/defensive-hardening
andy/hermes-agent:hermes/hermes-3fc35e7b
andy/hermes-agent:hermes/hermes-c91521bf
andy/hermes-agent:hermes/hermes-835076ca
andy/hermes-agent:fix/cron-timezone-naive-iso
andy/hermes-agent:hermes/hermes-5a9e8a78
andy/hermes-agent:fix/memory-tool-file-locking
andy/hermes-agent:fix/model-metadata-fuzzy-match
andy/hermes-agent:fix/compression-attempts-persist
andy/hermes-agent:fix/run-agent-role-violations
andy/hermes-agent:fix/browser-session-race
andy/hermes-agent:fix/compressor-consecutive-role-violation
andy/hermes-agent:fix/messaging-toolset-missing
andy/hermes-agent:fix/length-continue-retries-reset
andy/hermes-agent:fix/cron-double-load-jobs
andy/hermes-agent:fix/anthropic-tool-choice-none
andy/hermes-agent:fix/auxiliary-is-nous-reset
andy/hermes-agent:fix/matrix-mattermost-mark-connected
andy/hermes-agent:fix/dingtalk-requirements-check
andy/hermes-agent:fix/hermes-state-thread-locks
andy/hermes-agent:fix/anthropic-adapter-merge-content-loss
andy/hermes-agent:fix/gateway-yaml-pii-redaction
andy/hermes-agent:fix/redacting-formatter-import
andy/hermes-agent:fix/nous-model-fetch-kwargs
andy/hermes-agent:fix/gateway-skill-command-nameref
andy/hermes-agent:hermes/hermes-ee292dec
andy/hermes-agent:hermes/hermes-ac005632
andy/hermes-agent:feat/mattermost-matrix-adapters
andy/hermes-agent:hermes/hermes-923bc090
andy/hermes-agent:hermes/hermes-f685e964
andy/hermes-agent:hermes/hermes-3218df83
andy/hermes-agent:hermes/hermes-6bb9911e
andy/hermes-agent:hermes/hermes-1eba1f1d
andy/hermes-agent:fix/discord-thread-persistence
andy/hermes-agent:hermes/hermes-a86162db
andy/hermes-agent:hermes/hermes-6891ac11
andy/hermes-agent:hermes/hermes-c3e4cd9f
andy/hermes-agent:hermes/hermes-8f33e910
andy/hermes-agent:hermes/hermes-93b81725
andy/hermes-agent:hermes/hermes-733cf6a3
andy/hermes-agent:shloms/ascii-video-v3
andy/hermes-agent:fix/anthropic-oauth-compat
andy/hermes-agent:hermes/hermes-a098c323
andy/hermes-agent:hermes/hermes-6360cdf9
andy/hermes-agent:hermes/hermes-84930008
andy/hermes-agent:fix/smart-model-routing
andy/hermes-agent:hermes/hermes-81c07511
andy/hermes-agent:hermes/hermes-865f6958
andy/hermes-agent:fix/1445-docker-cwd-optin
andy/hermes-agent:hermes/hermes-adbf9508
andy/hermes-agent:fix/814-group-session-isolation
andy/hermes-agent:fix/1033-telegram-voice-fallback
andy/hermes-agent:fix/setup-curses
andy/hermes-agent:fix/ssh-preflight-check
andy/hermes-agent:fix/openrouter-reasoning-gate
andy/hermes-agent:fix/custom-endpoint-verification
andy/hermes-agent:fix/telegram-chunk-mdv2
andy/hermes-agent:fix/status-token-counts
andy/hermes-agent:fix/honcho-seed-identity
andy/hermes-agent:fix/mcp-auto-reload
andy/hermes-agent:rewbs/feat-vercel-log-analysis-loop-skill
andy/hermes-agent:fix/tirith-startup-noise
andy/hermes-agent:fix/docker-explicit-forward-env
andy/hermes-agent:sid/persistent-backend
andy/hermes-agent:fix/1071-dict-tool-args
andy/hermes-agent:hermes/hermes-60456cd2
andy/hermes-agent:fix/1219-cron-thread-context
andy/hermes-agent:fix/1244-env-override
andy/hermes-agent:fix/1336-discord-voice-reliability
andy/hermes-agent:fix/1414-gateway-shutdown-restart
andy/hermes-agent:fix/1412-session-delete-prefix
andy/hermes-agent:fix/1409-photo-burst-interrupts
andy/hermes-agent:fix/1247-preserve-mcp-toolsets
andy/hermes-agent:fix/1264-env-secret-blocklist
andy/hermes-agent:fix/1056-dm-session-isolation
andy/hermes-agent:hermes/gws-hybrid
andy/hermes-agent:hermes/hermes-daa73839
andy/hermes-agent:hermes/slack-thread-docs
andy/hermes-agent:hermes/hermes-45b79a59-clawhub-search
andy/hermes-agent:hermes/hermes-8bb24bf8
andy/hermes-agent:hermes/hermes-7ef7cb6a
andy/hermes-agent:hermes/hermes-eca4a640
andy/hermes-agent:hermes/hermes-629f8bde
andy/hermes-agent:hermes/hermes-aa701810
andy/hermes-agent:hermes/hermes-0fadff1b
andy/hermes-agent:hermes/hermes-45b79a59-pr1087
andy/hermes-agent:hermes/hermes-45b79a59
andy/hermes-agent:hermes/plan-workspace-storage
andy/hermes-agent:fix/retry-history-replacement
andy/hermes-agent:hermes/hermes-51c02bb3
andy/hermes-agent:hermes/hermes-39158886-docs
andy/hermes-agent:hermes/hermes-781f9235-docs
andy/hermes-agent:hermes/hermes-39158886-scope-prompts
andy/hermes-agent:hermes/hermes-781f9235
andy/hermes-agent:hermes/hermes-39158886
andy/hermes-agent:feat/aux-delegation-direct-endpoints
andy/hermes-agent:hermes/hermes-cf8340fc
andy/hermes-agent:hermes/hermes-f1104def
andy/hermes-agent:fix/cron-same-target-send-suppression
andy/hermes-agent:hermes/hermes-ec1096a3
andy/hermes-agent:hermes/hermes-1fc28d17
andy/hermes-agent:hermes/hermes-048e6599
andy/hermes-agent:hermes/hermes-771dc4f8
andy/hermes-agent:salvage/pr-977-mcp-stdio
andy/hermes-agent:hermes/hermes-3702edad
andy/hermes-agent:hermes/hermes-f48b210a
andy/hermes-agent:hermes/hermes-cc060dd9
andy/hermes-agent:hermes/hermes-24af4d63
andy/hermes-agent:hermes/hermes-8ea7cef0
andy/hermes-agent:hermes/hermes-720acdad
andy/hermes-agent:hermes/hermes-645b95a6
andy/hermes-agent:fix/worktree-terminal-requirements
andy/hermes-agent:fix/file-tool-log-noise
andy/hermes-agent:hermes/hermes-07d947aa
andy/hermes-agent:feat/cache-aware-context-compaction
andy/hermes-agent:hermes/hermes-50716de4
andy/hermes-agent:hermes/hermes-7c22e5c1
andy/hermes-agent:hermes/hermes-31d07af4
andy/hermes-agent:fix/honcho-cache-stability
andy/hermes-agent:hermes/hermes-e0e71a89
andy/hermes-agent:hermes/hermes-6299a8b2
andy/hermes-agent:hermes/hermes-294208e8
andy/hermes-agent:hermes/hermes-447d1ebd
andy/hermes-agent:hermes/hermes-4cde5efa
andy/hermes-agent:hermes/hermes-80175760
andy/hermes-agent:hermes/hermes-1ba70e80
andy/hermes-agent:fix/hygiene-threshold
andy/hermes-agent:fix/compression-session-sync
andy/hermes-agent:hermes/hermes-6ec3b1a9
andy/hermes-agent:fix/packaging-bugs
andy/hermes-agent:hermes/hermes-42bc21fb
andy/hermes-agent:hermes/hermes-d28bf447
andy/hermes-agent:hermes/hermes-f47f71c0
andy/hermes-agent:hermes/hermes-e31afb4d
andy/hermes-agent:hermes/hermes-7ade10b5
andy/hermes-agent:hermes/hermes-c877bdeb
andy/hermes-agent:hermes/hermes-3ea433e3
andy/hermes-agent:sid/xitter-skill
andy/hermes-agent:hermes/hermes-465f3702
andy/hermes-agent:hermes/hermes-4b9773d6
andy/hermes-agent:feat/optional-rl-training
andy/hermes-agent:hermes/hermes-3a9bd319
andy/hermes-agent:hermes/hermes-5da06378
andy/hermes-agent:hermes/hermes-37fb78aa
andy/hermes-agent:hermes/hermes-cf9f7d54
andy/hermes-agent:voice/default-soul
andy/hermes-agent:fix/landing-page
andy/hermes-agent:feat/devex-tooling
andy/hermes-agent:feat/phone-call-tool
andy/hermes-agent:hermes/hermes-74edaf38
andy/hermes-agent:hermes/hermes-b86fddbe
andy/hermes-agent:hermes/hermes-106e92b2
andy/hermes-agent:hermes/hermes-20ea56c0
andy/hermes-agent:fix/smart-vision-setup
andy/hermes-agent:fix/cron-naive-timestamps
andy/hermes-agent:hermes/hermes-7ac629f4
andy/hermes-agent:hermes/hermes-ece5a45c
andy/hermes-agent:feat/streaming
andy/hermes-agent:feat/custom-compaction-prompt-config
andy/hermes-agent:fix/multimodal-compress-content
andy/hermes-agent:feat/codex-handoff-prefix
andy/hermes-agent:feat/codex-compaction-prompt
andy/hermes-agent:hermes/hermes-98b7f9b9
andy/hermes-agent:hermes/hermes-ecb374ec
andy/hermes-agent:hermes/hermes-90ec9b1f
andy/hermes-agent:hermes/hermes-5f68598a
andy/hermes-agent:hermes/hermes-b0162f8d
andy/hermes-agent:feat/show-full-dangerous-command
andy/hermes-agent:hermes/hermes-21d8bacc
andy/hermes-agent:hermes/hermes-281ff8aa
andy/hermes-agent:hermes/hermes-3d744afd
andy/hermes-agent:hermes/hermes-1a683351
andy/hermes-agent:feat/checkpoint-rollback
andy/hermes-agent:hermes/hermes-5ab2a29e
andy/hermes-agent:add-upstream-atropos-tool-use-changes
andy/hermes-agent:hermes/hermes-b611b2fe
andy/hermes-agent:hermes/hermes-0cbb57e2
andy/hermes-agent:fix/vision-test-flake
andy/hermes-agent:feat/parallelize-tests
andy/hermes-agent:feat/devex-help
andy/hermes-agent:feat/streaming-tui
andy/hermes-agent:hermes/hermes-d2f5523a
andy/hermes-agent:feat/telegram-send-document
andy/hermes-agent:optional-builtin
andy/hermes-agent:feat/budget-pressure-via-tool-result
andy/hermes-agent:hermes/hermes-e56c0f70
andy/hermes-agent:feat/discord-allow-bots
andy/hermes-agent:feat/file-permissions-hardening
andy/hermes-agent:feat/configurable-compaction-protection
andy/hermes-agent:feat/head-tail-truncation-execute-code
andy/hermes-agent:hermes/hermes-c53b7cba
andy/hermes-agent:hermes/hermes-abbf790e
andy/hermes-agent:hermes/hermes-f8d56335
andy/hermes-agent:hermes/hermes-3cd7c62d
andy/hermes-agent:hermes/hermes-2cb83eed
andy/hermes-agent:feat/bell-on-complete
andy/hermes-agent:hermes/hermes-cfe83dd1
andy/hermes-agent:pass-session-id
andy/hermes-agent:fuck-it-ship-it
andy/hermes-agent:feat/session-naming
andy/hermes-agent:revert-659-feat/skill-prerequisites
andy/hermes-agent:custom_auxiliary_models
andy/hermes-agent:rewbs/nous-key-remint-attempt-on-401
andy/hermes-agent:feat/modular-setup-wizard
andy/hermes-agent:feat/insights
andy/hermes-agent:feat/modal
andy/hermes-agent:feature/obliteratus-skill
andy/hermes-agent:endless-terminal-new
andy/hermes-agent:fix-widescreen-prompt-box
andy/hermes-agent:fix/none-content-pattern
andy/hermes-agent:rewbs/fix-nous-refresh-token-rotation-on-key-mint-failure
andy/hermes-agent:rewbs/nous-portal-integration
andy/hermes-agent:nomad-backend-fanout-pr3
andy/hermes-agent:terminal-backend-fanout-pr2
andy/hermes-agent:atropos-integrations-pr
andy/hermes-agent:atropos-integrations
andy/hermes-agent:endless-terminals
andy/hermes-agent:atropos-hermes-agent
andy/hermes-agent:modal-integration
andy/hermes-agent:rl-capabilities
andy/hermes-agent:macbook-tests
andy/hermes-agent:architecture-planning
andy/hermes-agent:add-prokletor
andy/hermes-agent:asyncio
andy/hermes-agent:thought-sig
andy/hermes-agent:profiling
andy/hermes-agent:simplify-terminal
andy/hermes-agent:cluster-fail
andy/hermes-agent:tc-logging
andy/hermes-agent:update-snapshot-id
andy/hermes-agent:test
andy/hermes-agent:fix-leakage
andy/hermes-agent:fix-terminal
andy/hermes-agent:UI
andy/hermes-agent:add-morph-snapshot
andy/hermes-agent:terminal
andy/hermes-agent:v2026.5.29
andy/hermes-agent:v2026.5.28
andy/hermes-agent:v2026.5.16
andy/hermes-agent:v2026.5.7
andy/hermes-agent:v2026.4.30
andy/hermes-agent:v2026.4.23
andy/hermes-agent:v2026.4.16
andy/hermes-agent:v2026.4.13
andy/hermes-agent:v2026.4.8
andy/hermes-agent:v2026.4.3
andy/hermes-agent:v2026.3.30
andy/hermes-agent:v2026.3.28
andy/hermes-agent:v2026.3.23
andy/hermes-agent:v2026.3.17
andy/hermes-agent:v2026.3.12
...
pull from: andy/hermes-agent:fix/feishu-identity-model
andy/hermes-agent:dashboard-auth-public-api-allowlist
andy/hermes-agent:main
andy/hermes-agent:extend-hook-registry-for-plugins
andy/hermes-agent:opencode-port/responses-failed-error-detail
andy/hermes-agent:dependabot/github_actions/actions-minor-patch-05611cc895
andy/hermes-agent:dependabot/github_actions/docker/setup-buildx-action-4.1.0
andy/hermes-agent:hermes-events-bus
andy/hermes-agent:ethie/oh-god
andy/hermes-agent:perf/fts-optimize
andy/hermes-agent:release/v0.15.0-strip-gui
andy/hermes-agent:bb/gui
andy/hermes-agent:sid/fal-video-gen-portal
andy/hermes-agent:salvage/31518-env-mode-preserve
andy/hermes-agent:salvage/27795-libolm-dev
andy/hermes-agent:fix/nix-gateway-install-env
andy/hermes-agent:hermes/hermes-737ba78e
andy/hermes-agent:cline-port/plugin-install-browser-urls
andy/hermes-agent:hermes/hermes-1552fa93
andy/hermes-agent:ethie/docker-simplify-tagging
andy/hermes-agent:dependabot/github_actions/actions/deploy-pages-5.0.0
andy/hermes-agent:feat/iron-proxy
andy/hermes-agent:feat/15268-pricing-nous-xai
andy/hermes-agent:dependabot/github_actions/actions/create-github-app-token-3.2.0
andy/hermes-agent:dependabot/github_actions/marocchino/sticky-pull-request-comment-3.0.4
andy/hermes-agent:hermes/fix-copilot-auth-test
andy/hermes-agent:fix/update-detects-parent-shim-as-running
andy/hermes-agent:docker_s6
andy/hermes-agent:dependabot/npm_and_yarn/scripts/whatsapp-bridge/multi-f792d6d6d9
andy/hermes-agent:hermes/hermes-5fdb1cc4
andy/hermes-agent:feat/payments-skills
andy/hermes-agent:bb/tui-ctrlj-newline
andy/hermes-agent:hermes/hermes-2b79b6da
andy/hermes-agent:sid/tool-gateway-implement
andy/hermes-agent:hermes/hermes-aa200214
andy/hermes-agent:feat/whatsapp-cloud-api
andy/hermes-agent:feat/dashboard-typography-and-contrast
andy/hermes-agent:dependabot/npm_and_yarn/website/multi-f792d6d6d9
andy/hermes-agent:ethie/faster-tests-fake-main
andy/hermes-agent:fix/vision-dimension-cap
andy/hermes-agent:hermes/hermes-09fb88ef
andy/hermes-agent:ziliang-review-fork-inherit-toolsets
andy/hermes-agent:salvage-8306-webhook-secret
andy/hermes-agent:dependabot/npm_and_yarn/website/picomatch-2.3.2
andy/hermes-agent:hermes/hermes-5db05717
andy/hermes-agent:hermes/hermes-a5904da7
andy/hermes-agent:refactor/stop-writing-gateway-jsonl-transcripts
andy/hermes-agent:refactor/stop-writing-session-json-snapshots
andy/hermes-agent:hermes/hermes-72b329fd
andy/hermes-agent:hermes/hermes-008bccbc
andy/hermes-agent:hermes/firecrawl-integration-tag-telemetry-gated
andy/hermes-agent:dependabot/npm_and_yarn/website/brace-expansion-1.1.14
andy/hermes-agent:dependabot/npm_and_yarn/website/path-to-regexp-3.3.0
andy/hermes-agent:hermes/hermes-63babeb7
andy/hermes-agent:hermes/hermes-5e533958
andy/hermes-agent:hermes/hermes-8d7d912f
andy/hermes-agent:brooklyn/gui-installer-prereqs
andy/hermes-agent:hermes/hermes-429c1355
andy/hermes-agent:bb/tui-mouse-burst-swallow
andy/hermes-agent:feat/session_search_modes
andy/hermes-agent:hermes/hermes-5ac74b48
andy/hermes-agent:bb/cli-resize-duplication
andy/hermes-agent:salvage/pr-23780
andy/hermes-agent:lsp-plugin
andy/hermes-agent:austin/fix/minimax-oauth
andy/hermes-agent:bb/lsp-lint
andy/hermes-agent:dependabot/uv/urllib3-2.7.0
andy/hermes-agent:hermes/hermes-4fa48a27
andy/hermes-agent:salvage/pr-22685
andy/hermes-agent:feat/session-handoff
andy/hermes-agent:feat/codex-mcp-preset
andy/hermes-agent:feat/codex-cli-provider
andy/hermes-agent:hermes/hermes-3b90958e
andy/hermes-agent:perf/honcho-shutdown
andy/hermes-agent:hermes/hermes-b2e6c99b
andy/hermes-agent:austin/feat/google-oauth-provider
andy/hermes-agent:bb/gui-gateway-attach-wiring
andy/hermes-agent:bb/tui-gateway-attach-core
andy/hermes-agent:hermes/hermes-e239855c
andy/hermes-agent:fix/windows-uv-python-install-stderr
andy/hermes-agent:bb/windows-cli-tui-native-main
andy/hermes-agent:feat/trust-engine
andy/hermes-agent:feat/watchers
andy/hermes-agent:bb/widget-grid-slots
andy/hermes-agent:hermes/hermes-1c84a997
andy/hermes-agent:feat/browser-coordinate-click
andy/hermes-agent:cline-port/openrouter-qwen-cache-control
andy/hermes-agent:fix/ty-1
andy/hermes-agent:hermes/hermes-fee7225c
andy/hermes-agent:hermes/hermes-9ddf5187
andy/hermes-agent:codex-port/hook-output-spill
andy/hermes-agent:fix/terminal-safety-filter-false-positives
andy/hermes-agent:fix/gateway-remove-stale-code-self-restart
andy/hermes-agent:kilocode-port/compact-strip-media
andy/hermes-agent:fix/stale-cwd-recovery
andy/hermes-agent:feat/hermes-send
andy/hermes-agent:kanban_hermes_home
andy/hermes-agent:hermes/hermes-fabc46fe
andy/hermes-agent:feat/tinyfish-browser-provider
andy/hermes-agent:hermes/hermes-96962c19
andy/hermes-agent:claude-code-inspired/session-recap
andy/hermes-agent:fix/lazy-session-creation
andy/hermes-agent:hermes/hermes-3c2988b0
andy/hermes-agent:opencode-port/invalid-mcp-url
andy/hermes-agent:opencode-port/moonshot-ref-siblings
andy/hermes-agent:feat/stash-prompt
andy/hermes-agent:bb/docker-tui-prebuilt
andy/hermes-agent:fix/aux-anthropic-url-regression-test
andy/hermes-agent:vbrunet/2026_04_15-terminal-title-updates
andy/hermes-agent:bb/theme
andy/hermes-agent:cline-port/gateway-memory-monitor
andy/hermes-agent:gemini-cli-port/exit-delete-session
andy/hermes-agent:bb/tui-copy-on-select
andy/hermes-agent:feat/comfyui-skill-v3
andy/hermes-agent:hermes/hermes-dd91e6b2
andy/hermes-agent:feat/provider-modules
andy/hermes-agent:hermes/hermes-dab6fbf1
andy/hermes-agent:feat/comfyui-skill-v2
andy/hermes-agent:vbrunet/2026_04_29-terminal-titles
andy/hermes-agent:feat/kanban-standing
andy/hermes-agent:bb/tui-reload-env
andy/hermes-agent:bb/learning-ledger
andy/hermes-agent:bb/tui-status-ticker-width
andy/hermes-agent:fix/plugin-loader-sys-modules-registration
andy/hermes-agent:fix/deprecate-extrapackages-nix
andy/hermes-agent:hermes/hermes-c8604b32
andy/hermes-agent:fix/chat-tab-persistence
andy/hermes-agent:feat/langfuse-plugin
andy/hermes-agent:kilocode-port/subagent-cost-rollup
andy/hermes-agent:fix/analytics-include-cache-tokens
andy/hermes-agent:hermes/hermes-8fedd55b
andy/hermes-agent:bb/fix-tui-input-selection
andy/hermes-agent:bb/p2-mru-resume-order
andy/hermes-agent:hermes/hermes-2c880154
andy/hermes-agent:hermes/hermes-8b414b52
andy/hermes-agent:nanoclaw-port/signal-groupv2
andy/hermes-agent:hermes/hermes-d7874f79
andy/hermes-agent:hermes/curator-infra
andy/hermes-agent:bb/tui-perf-fix
andy/hermes-agent:feature/tui-showroom
andy/hermes-agent:bb/base-gui
andy/hermes-agent:investigate/fix-tui-container-ink-bundle
andy/hermes-agent:fix/flush-memories-context-overflow
andy/hermes-agent:design/compression-eval-harness
andy/hermes-agent:fix/stop-interrupt-retry-loop
andy/hermes-agent:fix/model-switch-custom-endpoint
andy/hermes-agent:fix/web-env-validation
andy/hermes-agent:fix/hindsight-blank-nuke
andy/hermes-agent:fix/setup-vision-blank
andy/hermes-agent:sid/discord-context-injection
andy/hermes-agent:sid/discord-tool-split
andy/hermes-agent:sid/fix-tools-config-save
andy/hermes-agent:sid/fix-platform-tool-loading
andy/hermes-agent:hermes/hermes-6c37b3dd
andy/hermes-agent:hermes/hermes-9d07c44f
andy/hermes-agent:alice/nous-portal-recommended-models
andy/hermes-agent:onboarding
andy/hermes-agent:sid/restructure-pr1-acp
andy/hermes-agent:bb/tui-web-chat
andy/hermes-agent:opencode-port/configurable-tool-output-limits
andy/hermes-agent:hermes/hermes-34b3f52d
andy/hermes-agent:sid/types-and-lints
andy/hermes-agent:sid/foundational-restructure
andy/hermes-agent:feat/dashboard-chat
andy/hermes-agent:gemini-cli-port/ssl-retry-patterns
andy/hermes-agent:cline-port/anthropic-cache-tokens-top-level
andy/hermes-agent:nemo-gym-changes
andy/hermes-agent:fix/schema-reconciliation
andy/hermes-agent:fix/upgrade-agent-browser-0.26
andy/hermes-agent:feat/ssrf-allow-private-urls
andy/hermes-agent:feat/volcengine-byteplus
andy/hermes-agent:refactor/unify-transport-dispatch
andy/hermes-agent:feat/require-mention-channels
andy/hermes-agent:remove-nous-free-allowlist
andy/hermes-agent:codex-port/ignore-user-config-flags
andy/hermes-agent:bb/tui-mouse-toggle
andy/hermes-agent:feat/td-skill-update
andy/hermes-agent:feat/bedrock-transport
andy/hermes-agent:feat/chat-completions-transport
andy/hermes-agent:hermes/hermes-bb7c1b2e
andy/hermes-agent:kilocode-port/filter-non-tool-openrouter-models
andy/hermes-agent:fix/kimi-drop-temperature
andy/hermes-agent:bb/tui-elapsed-lastmsg-8541
andy/hermes-agent:feat/transport-types
andy/hermes-agent:refactor/extract-codex-adapter
andy/hermes-agent:ironclaw-port/url-and-form-redaction
andy/hermes-agent:openclaw-port/display-tool-call-tags-strip
andy/hermes-agent:openclaw-port/anthropic-max-tokens-guard
andy/hermes-agent:openclaw-port/compaction-credential-redaction
andy/hermes-agent:sid/workspace-salvage
andy/hermes-agent:chore/ci-path-filters
andy/hermes-agent:chore/remove-stale-docs
andy/hermes-agent:feat/native-gemini-provider
andy/hermes-agent:salvage/helix4u-zai-setup
andy/hermes-agent:hermes/hermes-150d8cf8
andy/hermes-agent:hermes/browser-dialog
andy/hermes-agent:fix/minimax-glm-token-compression
andy/hermes-agent:salvage/nvidia-nim-max-tokens
andy/hermes-agent:fix/nix-web-dashboard
andy/hermes-agent:feat/comfyui-skill
andy/hermes-agent:hermes/hermes-9c0eed69
andy/hermes-agent:fix/mcp-oauth-bidirectional-generator-bridge
andy/hermes-agent:claude-code-inspired/dangerous-cmd-hardening
andy/hermes-agent:fix/test-backoff-timers
andy/hermes-agent:ci/matrix-split-v2
andy/hermes-agent:fix/test-reduction-batch-2
andy/hermes-agent:feat/searxng-backend
andy/hermes-agent:opencode-port/sessions-export-sanitize
andy/hermes-agent:dashboard-show-remote-gateway-url
andy/hermes-agent:hermes/gemini-oauth-30b2099d
andy/hermes-agent:feat/gemini-tts-salvage
andy/hermes-agent:feat/ungate-tool-gateway
andy/hermes-agent:xai-media-tools
andy/hermes-agent:fix/ci-test-failures
andy/hermes-agent:hermes/hermes-9d38280f
andy/hermes-agent:gemini-cli-port/strategic-reevaluation
andy/hermes-agent:fix/client-cache-fd-exhaustion
andy/hermes-agent:salvage/watch-notification-routing
andy/hermes-agent:hermes/hermes-5d6c3d3e
andy/hermes-agent:fix/dashboard-analytics-accuracy
andy/hermes-agent:hermes/hermes-9a00cfa2
andy/hermes-agent:hermes/hermes-050c727e
andy/hermes-agent:hermes/hermes-4a9b24c3
andy/hermes-agent:codex-port/mcp-parallel-tool-calls
andy/hermes-agent:gateway-plugin-loading
andy/hermes-agent:max_paperclips/gateway-plugin-loading
andy/hermes-agent:feat/remote-gateway-health-probe
andy/hermes-agent:compaction-secrets-preservation
andy/hermes-agent:fix/dashboard-routing
andy/hermes-agent:update-issue-templates-debug-share
andy/hermes-agent:sid/tb2-evals
andy/hermes-agent:feat/deep-research-skill
andy/hermes-agent:hermes/hermes-1b2e5f73
andy/hermes-agent:hermes/hermes-9e793b91
andy/hermes-agent:fix/feishu-identity-model
andy/hermes-agent:fix/web-cron-page-schedule-object
andy/hermes-agent:ironclaw-port/telegram-utf16-splitting
andy/hermes-agent:nanoclaw-port/session-artifact-cleanup
andy/hermes-agent:openclaw-port/reject-weak-gateway-creds
andy/hermes-agent:openclaw-port/matrix-mentions-user-ids
andy/hermes-agent:fix/gateway-no-systemctl
andy/hermes-agent:skill/github-code-review-mcp-tools
andy/hermes-agent:chore/remove-sha-docker-tag
andy/hermes-agent:feat/gateway-mcp-config-watcher
andy/hermes-agent:hermes/hermes-1f7bfa9e
andy/hermes-agent:feat/file-sync-back
andy/hermes-agent:fix/modal-ssh-upload-bugs
andy/hermes-agent:hermes/salvage-7558
andy/hermes-agent:hermes/hermes-72401910
andy/hermes-agent:hermes/hermes-925eff6a
andy/hermes-agent:hermes/hermes-c965583d
andy/hermes-agent:hermes/hermes-9c0ad5d9
andy/hermes-agent:hermes/hermes-905d6262
andy/hermes-agent:hermes/hermes-070e5a43
andy/hermes-agent:hermes/hermes-c382c827
andy/hermes-agent:hermes/hermes-7052b79e
andy/hermes-agent:hermes/hermes-e08f4d67
andy/hermes-agent:hermes/hermes-566f8c6d
andy/hermes-agent:hermes/hermes-4fdb3d23
andy/hermes-agent:hermes/hermes-67b0d759
andy/hermes-agent:hermes/hermes-b5e135be
andy/hermes-agent:hermes/hermes-2d3cc746
andy/hermes-agent:hermes/hermes-80a283e0
andy/hermes-agent:hermes/hermes-83dfcdfa
andy/hermes-agent:hermes/hermes-efa38736
andy/hermes-agent:hermes/hermes-c78b9811
andy/hermes-agent:hermes/hermes-ffc6cfa8
andy/hermes-agent:hermes/hermes-a50b945e
andy/hermes-agent:twilio-auth-fix
andy/hermes-agent:fix/claw-migrate-warn-running-gateway
andy/hermes-agent:hermes/hermes-f6cda1f0
andy/hermes-agent:hermes/hermes-524779d7
andy/hermes-agent:hermes/hermes-da2f08b5
andy/hermes-agent:hermes/hermes-672624fb
andy/hermes-agent:hermes/hermes-28292000
andy/hermes-agent:hermes/hermes-ec496c80
andy/hermes-agent:hermes/hermes-f43decdf
andy/hermes-agent:hermes/hermes-5bef3224
andy/hermes-agent:hermes/hermes-17ae0c29
andy/hermes-agent:fix/claw-migrate-improve-warnings
andy/hermes-agent:fix/claw-migrate-json-env-keys
andy/hermes-agent:fix/claw-migrate-workspace-main-paths
andy/hermes-agent:fix/claw-migrate-schema-drift
andy/hermes-agent:fix/matrix-memorycryptostore-args
andy/hermes-agent:fix/claw-migrate-tts-microsoft
andy/hermes-agent:fix/claw-migrate-nested-channel-tokens
andy/hermes-agent:hermes/hermes-ea68d311
andy/hermes-agent:hermes/hermes-38060157
andy/hermes-agent:hermes/hermes-0224a8b2
andy/hermes-agent:hermes/hermes-b092dccf
andy/hermes-agent:hermes/hermes-03da22bc
andy/hermes-agent:hermes/bucket3
andy/hermes-agent:hermes/hermes-2e0dc4f3
andy/hermes-agent:salvage/bucket-st
andy/hermes-agent:hermes/hermes-ebb65d1b
andy/hermes-agent:hermes/hermes-d0d52697
andy/hermes-agent:hermes/hermes-b17bdb8e
andy/hermes-agent:hermes/hermes-bc33645d
andy/hermes-agent:salvage/bucket-p
andy/hermes-agent:hermes/hermes-4a5220fe
andy/hermes-agent:hermes/hermes-7f8c199a
andy/hermes-agent:hermes/hermes-fefa061a
andy/hermes-agent:feat/mautrix-migration
andy/hermes-agent:hermes/hermes-7e4c9931
andy/hermes-agent:hermes/hermes-dc4200fd
andy/hermes-agent:salvage/bucket-o
andy/hermes-agent:feat/container-aware-cli
andy/hermes-agent:fix/daytona-bulk-upload-config-bridge-7362
andy/hermes-agent:claude-code-inspired/context-breakdown
andy/hermes-agent:hermes/hermes-1bd9e323
andy/hermes-agent:hermes/hermes-17b93f0b
andy/hermes-agent:hermes/hermes-9d5d8704
andy/hermes-agent:salvage/bucket-n
andy/hermes-agent:api-server-enforce-key
andy/hermes-agent:hermes/hermes-f8dcb6dd
andy/hermes-agent:hermes/hermes-c7787b3d
andy/hermes-agent:salvage/bucket-m
andy/hermes-agent:hermes/hermes-30126ac0
andy/hermes-agent:terminate-zombie-processes
andy/hermes-agent:hermes/hermes-ead3c84e
andy/hermes-agent:hermes/hermes-f1c0a201
andy/hermes-agent:salvage/bucket-i
andy/hermes-agent:hermes/hermes-11e9b74a
andy/hermes-agent:hermes/hermes-90f54154
andy/hermes-agent:hermes/hermes-2376d00b
andy/hermes-agent:hermes/hermes-8f5f6063
andy/hermes-agent:salvage/bucket-l
andy/hermes-agent:hermes/hermes-84ed614f
andy/hermes-agent:hermes/hermes-0f8490c2
andy/hermes-agent:hermes/hermes-2a3d0461
andy/hermes-agent:salvage/bucket-k
andy/hermes-agent:hermes/hermes-62b22a1e
andy/hermes-agent:hermes/hermes-26f90bd3
andy/hermes-agent:security/bucket-j
andy/hermes-agent:hermes/hermes-7ef33568
andy/hermes-agent:hermes/hermes-3ffcbfb5
andy/hermes-agent:hermes/hermes-6584b1e4
andy/hermes-agent:hermes/hermes-d9d67691
andy/hermes-agent:hermes/hermes-cde3c240
andy/hermes-agent:hermes/hermes-27e1fc16
andy/hermes-agent:hermes/hermes-5f2c8429
andy/hermes-agent:hermes/hermes-8dbb2cec
andy/hermes-agent:hermes/hermes-bbf55c16
andy/hermes-agent:hermes/hermes-a21aa249
andy/hermes-agent:hermes/hermes-eafa085a
andy/hermes-agent:hermes/hermes-4b558854
andy/hermes-agent:hermes/hermes-0687c6d6
andy/hermes-agent:hermes/hermes-33e13b6f
andy/hermes-agent:hermes/hermes-1fd9f435
andy/hermes-agent:hermes/hermes-1bb7ea55
andy/hermes-agent:hermes/hermes-57ea0a16
andy/hermes-agent:hermes/hermes-5bbf4839
andy/hermes-agent:hermes/hermes-617689ff
andy/hermes-agent:hermes/hermes-5cfcdf33
andy/hermes-agent:hermes/hermes-05b0c02e
andy/hermes-agent:hermes/hermes-115318ed
andy/hermes-agent:hermes/hermes-f454d397
andy/hermes-agent:hermes/hermes-43ae98f3
andy/hermes-agent:hermes/hermes-87f37874
andy/hermes-agent:hermes/hermes-bbe6a8b7
andy/hermes-agent:hermes/hermes-2556be1e
andy/hermes-agent:hermes/hermes-8494816d
andy/hermes-agent:hermes/hermes-0d0bfa89
andy/hermes-agent:hermes/hermes-c711558a
andy/hermes-agent:hermes/hermes-7aad138d
andy/hermes-agent:hermes/hermes-4b6801c7
andy/hermes-agent:hermes/hermes-374f99bc
andy/hermes-agent:hermes/hermes-605d722e
andy/hermes-agent:hermes/hermes-c546e7a1
andy/hermes-agent:hermes/hermes-62b6865d
andy/hermes-agent:hermes/hermes-f8a6248b
andy/hermes-agent:hermes/hermes-fe654944
andy/hermes-agent:hermes/hermes-d4ece6c2
andy/hermes-agent:fix/stream-think-tag-false-positive
andy/hermes-agent:hermes/hermes-d0607f0a
andy/hermes-agent:hermes/hermes-1c7df171
andy/hermes-agent:fix/oauth-issue2-nous-pool-refresh-sync-authstore
andy/hermes-agent:hermes/hermes-95b15f6e
andy/hermes-agent:hermes/hermes-e201f931
andy/hermes-agent:opencode-port/alibaba-rate-limit-retry
andy/hermes-agent:fix/oauth-issue1-nous-entry-needs-refresh
andy/hermes-agent:fix/oauth-issue5-is-expiring-none-handling
andy/hermes-agent:fix/oauth-issue4-anthropic-proactive-sync-hermes-pkce
andy/hermes-agent:fix/oauth-issue3-codex-proactive-sync-before-refresh
andy/hermes-agent:sid/dead-code-remove
andy/hermes-agent:hermes/hermes-8c64f471
andy/hermes-agent:hermes/hermes-ff5ba265
andy/hermes-agent:hermes/hermes-71aea4c5
andy/hermes-agent:hermes/hermes-1b5bb607
andy/hermes-agent:hermes/hermes-25b83dfd
andy/hermes-agent:fix/nix-shared-state-perms
andy/hermes-agent:hermes/hermes-30ac05a4
andy/hermes-agent:hermes/hermes-731d3033
andy/hermes-agent:hermes/hermes-41d14a2c
andy/hermes-agent:hermes/hermes-3f221b1b
andy/hermes-agent:hermes/hermes-e873511f
andy/hermes-agent:hermes/hermes-41cd011b
andy/hermes-agent:hermes/hermes-f409204f
andy/hermes-agent:hermes/hermes-bcf93c03
andy/hermes-agent:hermes/hermes-2f44469d
andy/hermes-agent:hermes/hermes-3466ee98
andy/hermes-agent:hermes/hermes-398baa59
andy/hermes-agent:hermes/hermes-1ff40dac
andy/hermes-agent:hermes/hermes-0429963a
andy/hermes-agent:hermes/hermes-ff89d9af
andy/hermes-agent:hermes/hermes-de843a22
andy/hermes-agent:hermes/hermes-037596df
andy/hermes-agent:hermes/hermes-e77cdbbf
andy/hermes-agent:hermes/hermes-135e8d93
andy/hermes-agent:hermes/hermes-f2a81adb
andy/hermes-agent:hermes/hermes-2447adad
andy/hermes-agent:hermes/hermes-005912a8
andy/hermes-agent:hermes/hermes-1845cad9
andy/hermes-agent:hermes/hermes-d5c0fd3b
andy/hermes-agent:hermes/hermes-b5d8eff0
andy/hermes-agent:hermes/hermes-5df3920d
andy/hermes-agent:hermes/hermes-b0a4b31e
andy/hermes-agent:hermes/hermes-063b6e1d
andy/hermes-agent:hermes/hermes-98aa7b3a
andy/hermes-agent:hermes/hermes-1fa6ad8f
andy/hermes-agent:hermes/hermes-485d498c
andy/hermes-agent:hermes/hermes-e77429d5
andy/hermes-agent:hermes/hermes-1d8a5754
andy/hermes-agent:sid/unified-file-sync
andy/hermes-agent:hermes/hermes-38cb19c4
andy/hermes-agent:hermes/hermes-54fe23ca
andy/hermes-agent:fix/nix-add-to-system-packages-complete
andy/hermes-agent:hermes/hermes-947c24f7
andy/hermes-agent:sid/unified-terminal-envs
andy/hermes-agent:hermes/hermes-9085f0bb
andy/hermes-agent:hermes/hermes-6b365d9a
andy/hermes-agent:hermes/hermes-4923821d
andy/hermes-agent:hermes/hermes-4e231d00
andy/hermes-agent:hermes/hermes-554a02fe
andy/hermes-agent:hermes/hermes-016048ea
andy/hermes-agent:feat/worldsim-skill
andy/hermes-agent:hermes/hermes-6b456629
andy/hermes-agent:hermes/hermes-f845dfbe
andy/hermes-agent:hermes/hermes-83d3c1db
andy/hermes-agent:hermes/hermes-8452ab09
andy/hermes-agent:hermes/hermes-9f84a11f
andy/hermes-agent:hermes/hermes-53abd2ba
andy/hermes-agent:hermes/hermes-ef18f2ae
andy/hermes-agent:hermes/hermes-7d888e8c
andy/hermes-agent:hermes/hermes-7bf50ef1
andy/hermes-agent:hermes/hermes-f400edfe
andy/hermes-agent:hermes/hermes-27761e13
andy/hermes-agent:hermes/hermes-d07e864e
andy/hermes-agent:hermes/hermes-e3aca6ef
andy/hermes-agent:hermes/hermes-c7eda492
andy/hermes-agent:sid/tool-result-fixes
andy/hermes-agent:hermes/hermes-87470f33
andy/hermes-agent:hermes/hermes-ef25015a
andy/hermes-agent:hermes/hermes-fb3680fc
andy/hermes-agent:hermes/hermes-476720eb
andy/hermes-agent:hermes/hermes-7d70fb12
andy/hermes-agent:hermes/hermes-2f2a1403
andy/hermes-agent:hermes/hermes-c81d4c5a
andy/hermes-agent:hermes/hermes-3ff117b3
andy/hermes-agent:hermes/hermes-5e970516
andy/hermes-agent:hermes/hermes-cabfdb4f
andy/hermes-agent:sid/restructure-tests
andy/hermes-agent:hermes/hermes-701b2186
andy/hermes-agent:rm/add-portal-link
andy/hermes-agent:hermes/hermes-81f85bb4
andy/hermes-agent:hermes/hermes-822a0590
andy/hermes-agent:hermes/hermes-d623dc00
andy/hermes-agent:hermes/hermes-37b5ec52
andy/hermes-agent:hermes/hermes-fef87f31
andy/hermes-agent:hermes/hermes-f1e32b74
andy/hermes-agent:hermes/hermes-756f7e33
andy/hermes-agent:salvage/5752-nous-free-tier-gating
andy/hermes-agent:feat/nous-free-tier-model-gating
andy/hermes-agent:switch-managed-browser-to-browser-use
andy/hermes-agent:hermes/hermes-7697425c
andy/hermes-agent:hermes/hermes-53b01c86
andy/hermes-agent:hermes/hermes-81d3384e
andy/hermes-agent:hermes/hermes-86122627
andy/hermes-agent:hermes/hermes-03d7aa21
andy/hermes-agent:hermes/hermes-b34c1567
andy/hermes-agent:hermes/hermes-694ff34e
andy/hermes-agent:hermes/hermes-b93afb56
andy/hermes-agent:hermes/hermes-c1ef09e3
andy/hermes-agent:fix/portal-env-var-ignored-during-login
andy/hermes-agent:hermes/hermes-479681ef
andy/hermes-agent:hermes/hermes-cd5ac32c
andy/hermes-agent:hermes/hermes-71aaf6c8
andy/hermes-agent:hermes/hermes-f177c8f0
andy/hermes-agent:hermes/hermes-db0c54fb
andy/hermes-agent:sid/unified-execution
andy/hermes-agent:hermes/hermes-35bfb4c2
andy/hermes-agent:hermes/hermes-47b24166
andy/hermes-agent:hermes/hermes-e5557d16
andy/hermes-agent:hermes/hermes-b809b68d
andy/hermes-agent:sid/nix-fixes-nits
andy/hermes-agent:taubench_eval
andy/hermes-agent:feat/firecrawl-browser-provider
andy/hermes-agent:hermes/hermes-7a93e2c7
andy/hermes-agent:hermes/hermes-8cc55056
andy/hermes-agent:hermes/hermes-838c5b76
andy/hermes-agent:workdir-quote-escape
andy/hermes-agent:hermes/hermes-c4a8b829
andy/hermes-agent:rm/browser-use-tool-gateway
andy/hermes-agent:hermes/hermes-ac0ac8da
andy/hermes-agent:hermes/hermes-ba679ba8
andy/hermes-agent:hermes/hermes-b692993b
andy/hermes-agent:hermes/hermes-ce719117
andy/hermes-agent:hermes/hermes-0bc806a5
andy/hermes-agent:hermes/hermes-00399121
andy/hermes-agent:hermes/hermes-5a282295
andy/hermes-agent:fix/various-qa
andy/hermes-agent:hermes/hermes-3ef4d555
andy/hermes-agent:hermes/hermes-ef6f7818
andy/hermes-agent:hermes/hermes-be07ee70
andy/hermes-agent:hermes/hermes-c0614333
andy/hermes-agent:hermes/hermes-3c9f4a9e
andy/hermes-agent:hermes/hermes-39d533b8
andy/hermes-agent:hermes/hermes-d6f63ade
andy/hermes-agent:hermes/hermes-f47156c2
andy/hermes-agent:hermes/hermes-533d3bd8
andy/hermes-agent:hermes/hermes-2e42b3a2
andy/hermes-agent:fix/research-paper-writing-gaps
andy/hermes-agent:hermes/hermes-7c95bd3c
andy/hermes-agent:hermes/hermes-626ac686
andy/hermes-agent:hermes/hermes-0d7c99a6
andy/hermes-agent:fix/nous-portal-env-override
andy/hermes-agent:hermes/hermes-80f0ff01
andy/hermes-agent:hermes/hermes-8bb0c65b
andy/hermes-agent:feat/model-pricing-display
andy/hermes-agent:hermes/hermes-03bdbe18
andy/hermes-agent:hermes/hermes-84dbce0e
andy/hermes-agent:hermes/hermes-c6eacd11
andy/hermes-agent:hermes/hermes-25bce159
andy/hermes-agent:hermes/hermes-1e6ea4d6
andy/hermes-agent:hermes/hermes-bae00f49
andy/hermes-agent:hermes/hermes-40531417
andy/hermes-agent:hermes/hermes-f9d9e542
andy/hermes-agent:hermes/hermes-8e46c8ba
andy/hermes-agent:hermes/hermes-3d0a599a
andy/hermes-agent:hermes/hermes-c0119f86
andy/hermes-agent:hermes/hermes-7fbab92d
andy/hermes-agent:hermes/hermes-32facb3d
andy/hermes-agent:hermes/hermes-d0aa7802
andy/hermes-agent:hermes/hermes-4ff7e90f
andy/hermes-agent:hermes/hermes-3667f42f
andy/hermes-agent:feat/model-provider-overhaul
andy/hermes-agent:hermes/hermes-1a69af68
andy/hermes-agent:hermes/hermes-c035e060
andy/hermes-agent:hermes/hermes-466467d8
andy/hermes-agent:hermes/hermes-95f1173a
andy/hermes-agent:hermes/hermes-208cc6d6
andy/hermes-agent:hermes/hermes-1e826e60
andy/hermes-agent:hermes/hermes-f2f17778
andy/hermes-agent:hermes/hermes-a7ac7c42
andy/hermes-agent:hermes/hermes-db023341
andy/hermes-agent:hermes/hermes-8c57ca22
andy/hermes-agent:hermes/hermes-511b79a5
andy/hermes-agent:hermes/hermes-931dc358
andy/hermes-agent:feat/fix-plugin-cache-prefix
andy/hermes-agent:hermes/hermes-3329bd98
andy/hermes-agent:salvage/hindsight-5044
andy/hermes-agent:hermes/hermes-0971565e
andy/hermes-agent:hermes/hermes-eba4b946
andy/hermes-agent:hermes/hermes-ff50f5ae
andy/hermes-agent:hermes/hermes-feb2ec9d
andy/hermes-agent:hermes/hermes-a82207c8
andy/hermes-agent:hermes/hermes-1e1d81f5
andy/hermes-agent:hermes/hermes-766150bd
andy/hermes-agent:hermes/hermes-cc1cea2c
andy/hermes-agent:hermes/hermes-5cbeeeb5
andy/hermes-agent:hermes/hermes-3eaaba2c
andy/hermes-agent:hermes/hermes-d307e4ae
andy/hermes-agent:claude-code-inspired/session-branch
andy/hermes-agent:hermes/hermes-70885193
andy/hermes-agent:hermes/hermes-8eea7e1a
andy/hermes-agent:hermes/hermes-36a59267
andy/hermes-agent:hermes/hermes-31074029
andy/hermes-agent:hermes/hermes-10baf9e9
andy/hermes-agent:hermes/hermes-4d7efb1e
andy/hermes-agent:nous-account-balance
andy/hermes-agent:hermes/hermes-3b5d0490
andy/hermes-agent:hermes/hermes-97fe1e3c
andy/hermes-agent:hermes/hermes-b19afd39
andy/hermes-agent:hermes/hermes-669f5444
andy/hermes-agent:feat/docker-env-vars
andy/hermes-agent:hermes/hermes-5deaba3e
andy/hermes-agent:hermes/hermes-368f91f8
andy/hermes-agent:hermes/hermes-b9588524
andy/hermes-agent:feat/acp-mcp-server-registration
andy/hermes-agent:opencode-port/language-aware-compression
andy/hermes-agent:hermes/hermes-50668d84
andy/hermes-agent:hermes/hermes-376c741f
andy/hermes-agent:hermes/hermes-7cbc527e
andy/hermes-agent:hermes/hermes-7ab21fac
andy/hermes-agent:hermes/hermes-623833b1
andy/hermes-agent:hermes/hermes-7de32281
andy/hermes-agent:hermes/hermes-921b394b
andy/hermes-agent:hermes/hermes-dc0f1ff6
andy/hermes-agent:hermes/hermes-9a801eb5
andy/hermes-agent:hermes/hermes-ad6e6820
andy/hermes-agent:hermes/hermes-8b18afb8
andy/hermes-agent:rewbs/tool-use-charge-to-subscription
andy/hermes-agent:gemini-cli-port/stale-browser-snapshot-superseding
andy/hermes-agent:hermes/hermes-91844716
andy/hermes-agent:hermes/hermes-f55316e0
andy/hermes-agent:hermes/hermes-76f7e5cd
andy/hermes-agent:hermes/hermes-cc622e18
andy/hermes-agent:hermes/hermes-79b25268
andy/hermes-agent:hermes/hermes-f4786c9c
andy/hermes-agent:hermes/hermes-41d468a2
andy/hermes-agent:hermes/hermes-701ad555
andy/hermes-agent:hermes/hermes-35337734
andy/hermes-agent:hermes/hermes-e10e6bf0
andy/hermes-agent:hermes/hermes-8a2494d5
andy/hermes-agent:hermes/hermes-385d033c
andy/hermes-agent:hermes/hermes-2c786d88
andy/hermes-agent:hermes/hermes-24c5a56c
andy/hermes-agent:hermes/hermes-a8a19433
andy/hermes-agent:hermes/hermes-dadddde3
andy/hermes-agent:hermes/hermes-99d28812
andy/hermes-agent:hermes/hermes-98ff0c21
andy/hermes-agent:hermes/hermes-abdd86e5
andy/hermes-agent:hermes/hermes-3090d6ac
andy/hermes-agent:hermes/hermes-eaa694be
andy/hermes-agent:sid/pwn-bench
andy/hermes-agent:hermes/hermes-578d1b94
andy/hermes-agent:hermes/hermes-da1d3af1
andy/hermes-agent:hermes/hermes-88866ac7
andy/hermes-agent:hermes/hermes-5c3ebbce
andy/hermes-agent:hermes/hermes-b6eff376
andy/hermes-agent:hermes-d0598e72
andy/hermes-agent:hermes/hermes-940f3eca
andy/hermes-agent:hermes/hermes-e87583c1
andy/hermes-agent:hermes/hermes-bf538de7
andy/hermes-agent:hermes/hermes-f75b7c8e
andy/hermes-agent:sid/pwn-bench-dojo-id-fix
andy/hermes-agent:hermes/hermes-b2abefdf
andy/hermes-agent:hermes/hermes-f0221ac3
andy/hermes-agent:hermes/hermes-a866ff99
andy/hermes-agent:hermes/hermes-f091e3b8
andy/hermes-agent:hermes/hermes-cd7257f9
andy/hermes-agent:hermes/hermes-9b1dadd7
andy/hermes-agent:hermes/hermes-b7b6ec54
andy/hermes-agent:hermes/hermes-4ce879fa
andy/hermes-agent:hermes/hermes-c815228d
andy/hermes-agent:hermes/hermes-3bd17b7b
andy/hermes-agent:fix/minimax-aux-model-pricing
andy/hermes-agent:fix/npm-ci-update
andy/hermes-agent:fix/uv-lock-exa-py
andy/hermes-agent:feat/secrets-phase1
andy/hermes-agent:ascii-video/text-readability-and-layout-oracle
andy/hermes-agent:hermes/hermes-76df6a95
andy/hermes-agent:hermes/hermes-ac2495d7
andy/hermes-agent:hermes/hermes-bf2cd279
andy/hermes-agent:hermes/hermes-8e764fde
andy/hermes-agent:hermes/hermes-b6f1eb21
andy/hermes-agent:hermes/hermes-3d9ccfec
andy/hermes-agent:hermes/hermes-deb3d2ef
andy/hermes-agent:endless_terminals_integration
andy/hermes-agent:hermes/hermes-4b23f322
andy/hermes-agent:feat/web-ui
andy/hermes-agent:hermes/hermes-6835494f
andy/hermes-agent:fix/anthropic-whatsapp
andy/hermes-agent:feat/rate-limiter
andy/hermes-agent:hermes/hermes-b8e0ec91
andy/hermes-agent:hermes/hermes-af1b4b23
andy/hermes-agent:hermes/hermes-164a52cc
andy/hermes-agent:feat/ci-improvements
andy/hermes-agent:feat/agent-resilience
andy/hermes-agent:feat/cron-script-gate
andy/hermes-agent:hermes/hermes-0d76d7cd
andy/hermes-agent:hermes/hermes-e6f1d362
andy/hermes-agent:hermes/hermes-b8464e26
andy/hermes-agent:hermes/hermes-ea354159
andy/hermes-agent:hermes/hermes-ab59de22
andy/hermes-agent:hermes/hermes-ec5223e1
andy/hermes-agent:hermes/hermes-b351df6b
andy/hermes-agent:docker
andy/hermes-agent:feat/keystore-wallet
andy/hermes-agent:hermes/hermes-f4f0292e
andy/hermes-agent:hermes/hermes-97c48e70
andy/hermes-agent:fix/uv-lock-version
andy/hermes-agent:fix/unify-permissions
andy/hermes-agent:hermes/hermes-51f7b6b6
andy/hermes-agent:hermes/hermes-135af169
andy/hermes-agent:hermes/hermes-a403a780
andy/hermes-agent:hermes/hermes-5e6ebebb
andy/hermes-agent:hermes/hermes-f5a4cd91
andy/hermes-agent:hermes/hermes-03f7719f
andy/hermes-agent:hermes/hermes-8a2f15b3
andy/hermes-agent:hermes/hermes-5a68ad9d
andy/hermes-agent:hermes/hermes-a2b72b01
andy/hermes-agent:feat/gpt-tool-steering
andy/hermes-agent:hermes/hermes-37947bdb
andy/hermes-agent:hermes/hermes-9420d6a3
andy/hermes-agent:hermes/hermes-6c7a1441
andy/hermes-agent:hermes/hermes-86f614ec
andy/hermes-agent:hermes/hermes-4f6a1f8e
andy/hermes-agent:hermes/hermes-caea5692
andy/hermes-agent:hermes/hermes-f8f80cce
andy/hermes-agent:hermes/hermes-5ef8201d
andy/hermes-agent:hermes/hermes-140430f8
andy/hermes-agent:feat/suffix-path-apt-provision
andy/hermes-agent:hermes/hermes-64c3ceb2
andy/hermes-agent:hermes/hermes-cd318db6
andy/hermes-agent:hermes/hermes-dd753a5f
andy/hermes-agent:hermes/hermes-dfd0d467
andy/hermes-agent:hermes/hermes-7e1dfbda
andy/hermes-agent:fix/api-server-toolset
andy/hermes-agent:hermes/hermes-93060758
andy/hermes-agent:hermes/hermes-ad9511d6
andy/hermes-agent:hermes/hermes-6dfb41ea
andy/hermes-agent:hermes/hermes-52a54135
andy/hermes-agent:hermes/hermes-203498f3
andy/hermes-agent:hermes/hermes-998d1c81
andy/hermes-agent:hermes/hermes-7d7ac769
andy/hermes-agent:hermes/hermes-d877fbc1
andy/hermes-agent:hermes/hermes-9f3f51e2
andy/hermes-agent:hermes/hermes-0b98b356
andy/hermes-agent:chore/remove-pkce-oauth
andy/hermes-agent:hermes/hermes-2cdc8d39
andy/hermes-agent:hermes/hermes-c75e42c8
andy/hermes-agent:hermes/hermes-e483085e
andy/hermes-agent:sid/remove-drift-check
andy/hermes-agent:sid/nix-flake
andy/hermes-agent:hermes/hermes-ac86d935
andy/hermes-agent:hermes/hermes-4e5b94c3
andy/hermes-agent:hermes/hermes-84f0446e
andy/hermes-agent:docs/hooks-page-update
andy/hermes-agent:hermes/hermes-aff6c48a
andy/hermes-agent:hermes/hermes-ae6184d3
andy/hermes-agent:hermes/hermes-afb547e5
andy/hermes-agent:hermes/hermes-0f4e765c
andy/hermes-agent:hermes/hermes-baa39faf
andy/hermes-agent:hermes/hermes-gateway-context
andy/hermes-agent:hermes/hermes-3c0e357d
andy/hermes-agent:hermes/hermes-ab0f07ce
andy/hermes-agent:hermes/hermes-e6c9dba2
andy/hermes-agent:hermes/hermes-1817ce8d
andy/hermes-agent:hermes/hermes-764f7842
andy/hermes-agent:hermes/hermes-e26fa01d
andy/hermes-agent:hermes/hermes-e8325591
andy/hermes-agent:hermes/hermes-46839e2f
andy/hermes-agent:hermes/hermes-28b19313
andy/hermes-agent:hermes/hermes-11fd857d
andy/hermes-agent:hermes/hermes-1b7b3ffb
andy/hermes-agent:hermes/hermes-1e53b883
andy/hermes-agent:hermes/hermes-c6c58b20
andy/hermes-agent:fix/toolset-deselection
andy/hermes-agent:fix/media-paths-spaces
andy/hermes-agent:fix/media-spaces-2
andy/hermes-agent:fix/approval-yaml-off
andy/hermes-agent:hermes/hermes-a2fa4544
andy/hermes-agent:hermes/hermes-d58d97b5
andy/hermes-agent:hermes/hermes-f9506ecc
andy/hermes-agent:hermes/hermes-dc116992
andy/hermes-agent:hermes/hermes-81afb1bb
andy/hermes-agent:hermes/hermes-31d7db3b
andy/hermes-agent:hermes/hermes-5d6932ba
andy/hermes-agent:hermes/hermes-40b195db
andy/hermes-agent:hermes/hermes-0fa141a3
andy/hermes-agent:feat/streaming-default
andy/hermes-agent:feat/context-file-priority
andy/hermes-agent:hermes/hermes-3369cdb1
andy/hermes-agent:streaming-plus-reasoning
andy/hermes-agent:fix/event-loop-closed-delegate
andy/hermes-agent:hermes/hermes-7ea545bf
andy/hermes-agent:hermes/hermes-3d7c23c9
andy/hermes-agent:hermes/hermes-4a7e401e
andy/hermes-agent:hermes/hermes-b313983a
andy/hermes-agent:hermes/hermes-6757a563
andy/hermes-agent:hermes/hermes-e83093f0
andy/hermes-agent:hermes/hermes-14b05543
andy/hermes-agent:hermes/hermes-54c1fc70
andy/hermes-agent:hermes/hermes-f1230adf
andy/hermes-agent:hermes/hermes-9c2a5d00
andy/hermes-agent:fix/custom-endpoint-context-length
andy/hermes-agent:hermes/hermes-51eb4292
andy/hermes-agent:hermes/hermes-9dc2e46c
andy/hermes-agent:fix/anthropic-compatible-api-mode
andy/hermes-agent:hermes/hermes-6193ae92
andy/hermes-agent:hermes/hermes-b29f73b2
andy/hermes-agent:hermes/hermes-ba3c8fa1
andy/hermes-agent:hermes/hermes-562a3784
andy/hermes-agent:fix/whatsapp-reply-prefix-bridging
andy/hermes-agent:hermes/hermes-eab76047
andy/hermes-agent:feat/whatsapp-reply-prefix
andy/hermes-agent:feat/unauthorized-dm-behavior
andy/hermes-agent:fix/cron-oneshot-grace
andy/hermes-agent:hermes/hermes-8112c8c8
andy/hermes-agent:fix/browser-command-registry
andy/hermes-agent:feat/cron-silent-suppression
andy/hermes-agent:fix/agent-created-skill-policy
andy/hermes-agent:hermes/hermes-e2084cc7
andy/hermes-agent:hermes/hermes-c954a38b
andy/hermes-agent:hermes/hermes-8058968e
andy/hermes-agent:hermes/hermes-0d5a11f5
andy/hermes-agent:hermes/hermes-09305421
andy/hermes-agent:hermes/hermes-0ed29ee7
andy/hermes-agent:hermes/hermes-4c573e36
andy/hermes-agent:hermes/hermes-044b5de9
andy/hermes-agent:hermes/hermes-48646def
andy/hermes-agent:fix/gateway-platform-hardening
andy/hermes-agent:fix/tool-handler-safety
andy/hermes-agent:hermes/hermes-31dc9875
andy/hermes-agent:fix/defensive-hardening
andy/hermes-agent:hermes/hermes-3fc35e7b
andy/hermes-agent:hermes/hermes-c91521bf
andy/hermes-agent:hermes/hermes-835076ca
andy/hermes-agent:fix/cron-timezone-naive-iso
andy/hermes-agent:hermes/hermes-5a9e8a78
andy/hermes-agent:fix/memory-tool-file-locking
andy/hermes-agent:fix/model-metadata-fuzzy-match
andy/hermes-agent:fix/compression-attempts-persist
andy/hermes-agent:fix/run-agent-role-violations
andy/hermes-agent:fix/browser-session-race
andy/hermes-agent:fix/compressor-consecutive-role-violation
andy/hermes-agent:fix/messaging-toolset-missing
andy/hermes-agent:fix/length-continue-retries-reset
andy/hermes-agent:fix/cron-double-load-jobs
andy/hermes-agent:fix/anthropic-tool-choice-none
andy/hermes-agent:fix/auxiliary-is-nous-reset
andy/hermes-agent:fix/matrix-mattermost-mark-connected
andy/hermes-agent:fix/dingtalk-requirements-check
andy/hermes-agent:fix/hermes-state-thread-locks
andy/hermes-agent:fix/anthropic-adapter-merge-content-loss
andy/hermes-agent:fix/gateway-yaml-pii-redaction
andy/hermes-agent:fix/redacting-formatter-import
andy/hermes-agent:fix/nous-model-fetch-kwargs
andy/hermes-agent:fix/gateway-skill-command-nameref
andy/hermes-agent:hermes/hermes-ee292dec
andy/hermes-agent:hermes/hermes-ac005632
andy/hermes-agent:feat/mattermost-matrix-adapters
andy/hermes-agent:hermes/hermes-923bc090
andy/hermes-agent:hermes/hermes-f685e964
andy/hermes-agent:hermes/hermes-3218df83
andy/hermes-agent:hermes/hermes-6bb9911e
andy/hermes-agent:hermes/hermes-1eba1f1d
andy/hermes-agent:fix/discord-thread-persistence
andy/hermes-agent:hermes/hermes-a86162db
andy/hermes-agent:hermes/hermes-6891ac11
andy/hermes-agent:hermes/hermes-c3e4cd9f
andy/hermes-agent:hermes/hermes-8f33e910
andy/hermes-agent:hermes/hermes-93b81725
andy/hermes-agent:hermes/hermes-733cf6a3
andy/hermes-agent:shloms/ascii-video-v3
andy/hermes-agent:fix/anthropic-oauth-compat
andy/hermes-agent:hermes/hermes-a098c323
andy/hermes-agent:hermes/hermes-6360cdf9
andy/hermes-agent:hermes/hermes-84930008
andy/hermes-agent:fix/smart-model-routing
andy/hermes-agent:hermes/hermes-81c07511
andy/hermes-agent:hermes/hermes-865f6958
andy/hermes-agent:fix/1445-docker-cwd-optin
andy/hermes-agent:hermes/hermes-adbf9508
andy/hermes-agent:fix/814-group-session-isolation
andy/hermes-agent:fix/1033-telegram-voice-fallback
andy/hermes-agent:fix/setup-curses
andy/hermes-agent:fix/ssh-preflight-check
andy/hermes-agent:fix/openrouter-reasoning-gate
andy/hermes-agent:fix/custom-endpoint-verification
andy/hermes-agent:fix/telegram-chunk-mdv2
andy/hermes-agent:fix/status-token-counts
andy/hermes-agent:fix/honcho-seed-identity
andy/hermes-agent:fix/mcp-auto-reload
andy/hermes-agent:rewbs/feat-vercel-log-analysis-loop-skill
andy/hermes-agent:fix/tirith-startup-noise
andy/hermes-agent:fix/docker-explicit-forward-env
andy/hermes-agent:sid/persistent-backend
andy/hermes-agent:fix/1071-dict-tool-args
andy/hermes-agent:hermes/hermes-60456cd2
andy/hermes-agent:fix/1219-cron-thread-context
andy/hermes-agent:fix/1244-env-override
andy/hermes-agent:fix/1336-discord-voice-reliability
andy/hermes-agent:fix/1414-gateway-shutdown-restart
andy/hermes-agent:fix/1412-session-delete-prefix
andy/hermes-agent:fix/1409-photo-burst-interrupts
andy/hermes-agent:fix/1247-preserve-mcp-toolsets
andy/hermes-agent:fix/1264-env-secret-blocklist
andy/hermes-agent:fix/1056-dm-session-isolation
andy/hermes-agent:hermes/gws-hybrid
andy/hermes-agent:hermes/hermes-daa73839
andy/hermes-agent:hermes/slack-thread-docs
andy/hermes-agent:hermes/hermes-45b79a59-clawhub-search
andy/hermes-agent:hermes/hermes-8bb24bf8
andy/hermes-agent:hermes/hermes-7ef7cb6a
andy/hermes-agent:hermes/hermes-eca4a640
andy/hermes-agent:hermes/hermes-629f8bde
andy/hermes-agent:hermes/hermes-aa701810
andy/hermes-agent:hermes/hermes-0fadff1b
andy/hermes-agent:hermes/hermes-45b79a59-pr1087
andy/hermes-agent:hermes/hermes-45b79a59
andy/hermes-agent:hermes/plan-workspace-storage
andy/hermes-agent:fix/retry-history-replacement
andy/hermes-agent:hermes/hermes-51c02bb3
andy/hermes-agent:hermes/hermes-39158886-docs
andy/hermes-agent:hermes/hermes-781f9235-docs
andy/hermes-agent:hermes/hermes-39158886-scope-prompts
andy/hermes-agent:hermes/hermes-781f9235
andy/hermes-agent:hermes/hermes-39158886
andy/hermes-agent:feat/aux-delegation-direct-endpoints
andy/hermes-agent:hermes/hermes-cf8340fc
andy/hermes-agent:hermes/hermes-f1104def
andy/hermes-agent:fix/cron-same-target-send-suppression
andy/hermes-agent:hermes/hermes-ec1096a3
andy/hermes-agent:hermes/hermes-1fc28d17
andy/hermes-agent:hermes/hermes-048e6599
andy/hermes-agent:hermes/hermes-771dc4f8
andy/hermes-agent:salvage/pr-977-mcp-stdio
andy/hermes-agent:hermes/hermes-3702edad
andy/hermes-agent:hermes/hermes-f48b210a
andy/hermes-agent:hermes/hermes-cc060dd9
andy/hermes-agent:hermes/hermes-24af4d63
andy/hermes-agent:hermes/hermes-8ea7cef0
andy/hermes-agent:hermes/hermes-720acdad
andy/hermes-agent:hermes/hermes-645b95a6
andy/hermes-agent:fix/worktree-terminal-requirements
andy/hermes-agent:fix/file-tool-log-noise
andy/hermes-agent:hermes/hermes-07d947aa
andy/hermes-agent:feat/cache-aware-context-compaction
andy/hermes-agent:hermes/hermes-50716de4
andy/hermes-agent:hermes/hermes-7c22e5c1
andy/hermes-agent:hermes/hermes-31d07af4
andy/hermes-agent:fix/honcho-cache-stability
andy/hermes-agent:hermes/hermes-e0e71a89
andy/hermes-agent:hermes/hermes-6299a8b2
andy/hermes-agent:hermes/hermes-294208e8
andy/hermes-agent:hermes/hermes-447d1ebd
andy/hermes-agent:hermes/hermes-4cde5efa
andy/hermes-agent:hermes/hermes-80175760
andy/hermes-agent:hermes/hermes-1ba70e80
andy/hermes-agent:fix/hygiene-threshold
andy/hermes-agent:fix/compression-session-sync
andy/hermes-agent:hermes/hermes-6ec3b1a9
andy/hermes-agent:fix/packaging-bugs
andy/hermes-agent:hermes/hermes-42bc21fb
andy/hermes-agent:hermes/hermes-d28bf447
andy/hermes-agent:hermes/hermes-f47f71c0
andy/hermes-agent:hermes/hermes-e31afb4d
andy/hermes-agent:hermes/hermes-7ade10b5
andy/hermes-agent:hermes/hermes-c877bdeb
andy/hermes-agent:hermes/hermes-3ea433e3
andy/hermes-agent:sid/xitter-skill
andy/hermes-agent:hermes/hermes-465f3702
andy/hermes-agent:hermes/hermes-4b9773d6
andy/hermes-agent:feat/optional-rl-training
andy/hermes-agent:hermes/hermes-3a9bd319
andy/hermes-agent:hermes/hermes-5da06378
andy/hermes-agent:hermes/hermes-37fb78aa
andy/hermes-agent:hermes/hermes-cf9f7d54
andy/hermes-agent:voice/default-soul
andy/hermes-agent:fix/landing-page
andy/hermes-agent:feat/devex-tooling
andy/hermes-agent:feat/phone-call-tool
andy/hermes-agent:hermes/hermes-74edaf38
andy/hermes-agent:hermes/hermes-b86fddbe
andy/hermes-agent:hermes/hermes-106e92b2
andy/hermes-agent:hermes/hermes-20ea56c0
andy/hermes-agent:fix/smart-vision-setup
andy/hermes-agent:fix/cron-naive-timestamps
andy/hermes-agent:hermes/hermes-7ac629f4
andy/hermes-agent:hermes/hermes-ece5a45c
andy/hermes-agent:feat/streaming
andy/hermes-agent:feat/custom-compaction-prompt-config
andy/hermes-agent:fix/multimodal-compress-content
andy/hermes-agent:feat/codex-handoff-prefix
andy/hermes-agent:feat/codex-compaction-prompt
andy/hermes-agent:hermes/hermes-98b7f9b9
andy/hermes-agent:hermes/hermes-ecb374ec
andy/hermes-agent:hermes/hermes-90ec9b1f
andy/hermes-agent:hermes/hermes-5f68598a
andy/hermes-agent:hermes/hermes-b0162f8d
andy/hermes-agent:feat/show-full-dangerous-command
andy/hermes-agent:hermes/hermes-21d8bacc
andy/hermes-agent:hermes/hermes-281ff8aa
andy/hermes-agent:hermes/hermes-3d744afd
andy/hermes-agent:hermes/hermes-1a683351
andy/hermes-agent:feat/checkpoint-rollback
andy/hermes-agent:hermes/hermes-5ab2a29e
andy/hermes-agent:add-upstream-atropos-tool-use-changes
andy/hermes-agent:hermes/hermes-b611b2fe
andy/hermes-agent:hermes/hermes-0cbb57e2
andy/hermes-agent:fix/vision-test-flake
andy/hermes-agent:feat/parallelize-tests
andy/hermes-agent:feat/devex-help
andy/hermes-agent:feat/streaming-tui
andy/hermes-agent:hermes/hermes-d2f5523a
andy/hermes-agent:feat/telegram-send-document
andy/hermes-agent:optional-builtin
andy/hermes-agent:feat/budget-pressure-via-tool-result
andy/hermes-agent:hermes/hermes-e56c0f70
andy/hermes-agent:feat/discord-allow-bots
andy/hermes-agent:feat/file-permissions-hardening
andy/hermes-agent:feat/configurable-compaction-protection
andy/hermes-agent:feat/head-tail-truncation-execute-code
andy/hermes-agent:hermes/hermes-c53b7cba
andy/hermes-agent:hermes/hermes-abbf790e
andy/hermes-agent:hermes/hermes-f8d56335
andy/hermes-agent:hermes/hermes-3cd7c62d
andy/hermes-agent:hermes/hermes-2cb83eed
andy/hermes-agent:feat/bell-on-complete
andy/hermes-agent:hermes/hermes-cfe83dd1
andy/hermes-agent:pass-session-id
andy/hermes-agent:fuck-it-ship-it
andy/hermes-agent:feat/session-naming
andy/hermes-agent:revert-659-feat/skill-prerequisites
andy/hermes-agent:custom_auxiliary_models
andy/hermes-agent:rewbs/nous-key-remint-attempt-on-401
andy/hermes-agent:feat/modular-setup-wizard
andy/hermes-agent:feat/insights
andy/hermes-agent:feat/modal
andy/hermes-agent:feature/obliteratus-skill
andy/hermes-agent:endless-terminal-new
andy/hermes-agent:fix-widescreen-prompt-box
andy/hermes-agent:fix/none-content-pattern
andy/hermes-agent:rewbs/fix-nous-refresh-token-rotation-on-key-mint-failure
andy/hermes-agent:rewbs/nous-portal-integration
andy/hermes-agent:nomad-backend-fanout-pr3
andy/hermes-agent:terminal-backend-fanout-pr2
andy/hermes-agent:atropos-integrations-pr
andy/hermes-agent:atropos-integrations
andy/hermes-agent:endless-terminals
andy/hermes-agent:atropos-hermes-agent
andy/hermes-agent:modal-integration
andy/hermes-agent:rl-capabilities
andy/hermes-agent:macbook-tests
andy/hermes-agent:architecture-planning
andy/hermes-agent:add-prokletor
andy/hermes-agent:asyncio
andy/hermes-agent:thought-sig
andy/hermes-agent:profiling
andy/hermes-agent:simplify-terminal
andy/hermes-agent:cluster-fail
andy/hermes-agent:tc-logging
andy/hermes-agent:update-snapshot-id
andy/hermes-agent:test
andy/hermes-agent:fix-leakage
andy/hermes-agent:fix-terminal
andy/hermes-agent:UI
andy/hermes-agent:add-morph-snapshot
andy/hermes-agent:terminal
andy/hermes-agent:v2026.5.29
andy/hermes-agent:v2026.5.28
andy/hermes-agent:v2026.5.16
andy/hermes-agent:v2026.5.7
andy/hermes-agent:v2026.4.30
andy/hermes-agent:v2026.4.23
andy/hermes-agent:v2026.4.16
andy/hermes-agent:v2026.4.13
andy/hermes-agent:v2026.4.8
andy/hermes-agent:v2026.4.3
andy/hermes-agent:v2026.3.30
andy/hermes-agent:v2026.3.28
andy/hermes-agent:v2026.3.23
andy/hermes-agent:v2026.3.17
andy/hermes-agent:v2026.3.12
1 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
7e9ea9ba05 |
fix(feishu): correct identity model docs and prefer tenant-scoped user_id
Feishu's open_id is app-scoped (same user gets different open_ids per bot app), not a canonical identity. Functionally correct for single-bot mode but semantically misleading. - Add comprehensive Feishu identity model documentation to module docstring - Prefer user_id (tenant-scoped) over open_id (app-scoped) in _resolve_sender_profile when both are available - Document bot_open_id usage for @mention matching - Update user_id_alt comment in SessionSource to be platform-generic Ref: closes analysis from PR #8388 (closed as over-scoped) |
3 changed files with 66 additions and 6 deletions
@@ -13,6 +13,35 @@ Supports:
|
||||
- Interactive card button-click events routed as synthetic COMMAND events
|
||||
- Webhook anomaly tracking (matches openclaw createWebhookAnomalyTracker)
|
||||
- Verification token validation as second auth layer (matches openclaw)
|
||||
|
||||
Feishu identity model
|
||||
---------------------
|
||||
Feishu uses three user-ID tiers (official docs:
|
||||
https://open.feishu.cn/document/home/user-identity-introduction/introduction):
|
||||
|
||||
open_id (ou_xxx) — **App-scoped**. The same person gets a different
|
||||
open_id under each Feishu app. Always available in
|
||||
event payloads without extra permissions.
|
||||
user_id (u_xxx) — **Tenant-scoped**. Stable within a company but
|
||||
requires the ``contact:user.employee_id:readonly``
|
||||
scope. May not be present.
|
||||
union_id (on_xxx) — **Developer-scoped**. Same across all apps owned by
|
||||
one developer/ISV. Best cross-app stable ID.
|
||||
|
||||
For bots specifically:
|
||||
|
||||
app_id — The application's canonical credential identifier.
|
||||
bot open_id — Returned by ``/bot/v3/info``. This is the bot's own
|
||||
open_id *within its app context* and is what Feishu
|
||||
puts in ``mentions[].id.open_id`` when someone
|
||||
@-mentions the bot. Used for mention gating only.
|
||||
|
||||
In single-bot mode (what Hermes currently supports), open_id works as a
|
||||
de-facto unique user identifier since there is only one app context.
|
||||
|
||||
Session-key participant isolation prefers ``union_id`` (via user_id_alt)
|
||||
over ``open_id`` (via user_id) so that sessions stay stable if the same
|
||||
user is seen through different apps in the future.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -267,7 +296,7 @@ class FeishuNormalizedMessage:
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FeishuAdapterSettings:
|
||||
app_id: str
|
||||
app_id: str # Canonical bot/app identifier (credential, not from event payloads)
|
||||
app_secret: str
|
||||
domain_name: str
|
||||
connection_mode: str
|
||||
@@ -275,7 +304,11 @@ class FeishuAdapterSettings:
|
||||
verification_token: str
|
||||
group_policy: str
|
||||
allowed_group_users: frozenset[str]
|
||||
# Bot's own open_id (app-scoped) — returned by /bot/v3/info. Used only for
|
||||
# @mention matching: Feishu puts this value in mentions[].id.open_id when
|
||||
# a user @-mentions the bot in a group chat.
|
||||
bot_open_id: str
|
||||
# Bot's user_id (tenant-scoped) — optional, used as fallback mention match.
|
||||
bot_user_id: str
|
||||
bot_name: str
|
||||
dedup_cache_size: int
|
||||
@@ -2900,10 +2933,22 @@ class FeishuAdapter(BasePlatformAdapter):
|
||||
return "group"
|
||||
|
||||
async def _resolve_sender_profile(self, sender_id: Any) -> Dict[str, Optional[str]]:
|
||||
"""Map Feishu's three-tier user IDs onto Hermes' SessionSource fields.
|
||||
|
||||
Preference order for the primary ``user_id`` field:
|
||||
1. user_id (tenant-scoped, most stable — requires permission scope)
|
||||
2. open_id (app-scoped, always available — different per bot app)
|
||||
|
||||
``user_id_alt`` carries the union_id (developer-scoped, stable across
|
||||
all apps by the same developer). Session-key generation prefers
|
||||
user_id_alt when present, so participant isolation stays stable even
|
||||
if the primary ID is the app-scoped open_id.
|
||||
"""
|
||||
open_id = getattr(sender_id, "open_id", None) or None
|
||||
user_id = getattr(sender_id, "user_id", None) or None
|
||||
union_id = getattr(sender_id, "union_id", None) or None
|
||||
primary_id = open_id or user_id
|
||||
# Prefer tenant-scoped user_id; fall back to app-scoped open_id.
|
||||
primary_id = user_id or open_id
|
||||
display_name = await self._resolve_sender_name_from_api(primary_id or union_id)
|
||||
return {
|
||||
"user_id": primary_id,
|
||||
@@ -3058,7 +3103,13 @@ class FeishuAdapter(BasePlatformAdapter):
|
||||
return False
|
||||
|
||||
def _message_mentions_bot(self, mentions: List[Any]) -> bool:
|
||||
"""Check whether any mention targets the configured or inferred bot identity."""
|
||||
"""Check whether any mention targets the configured or inferred bot identity.
|
||||
|
||||
Feishu @mention payloads carry the mentioned entity's open_id (app-scoped).
|
||||
Since the bot's own open_id and the mention open_id share the same app
|
||||
context, a direct comparison works correctly here. The user_id and
|
||||
bot_name checks are fallbacks for rare cases where open_id is absent.
|
||||
"""
|
||||
for mention in mentions:
|
||||
mention_id = getattr(mention, "id", None)
|
||||
mention_open_id = getattr(mention_id, "open_id", None)
|
||||
@@ -3084,7 +3135,13 @@ class FeishuAdapter(BasePlatformAdapter):
|
||||
return False
|
||||
|
||||
async def _hydrate_bot_identity(self) -> None:
|
||||
"""Best-effort discovery of bot identity for precise group mention gating."""
|
||||
"""Best-effort discovery of bot identity for precise group mention gating.
|
||||
|
||||
Fetches the app's display name from the application info API. The bot's
|
||||
open_id (used for @mention matching) is typically set from FEISHU_BOT_OPEN_ID
|
||||
env var or from the /bot/v3/info probe during onboarding. This method only
|
||||
fills in bot_name as a last-resort mention match when open_id is unavailable.
|
||||
"""
|
||||
if not self._client:
|
||||
return
|
||||
if any((self._bot_open_id, self._bot_user_id, self._bot_name)):
|
||||
@@ -3816,6 +3873,9 @@ def probe_bot(app_id: str, app_secret: str, domain: str) -> Optional[dict]:
|
||||
|
||||
Uses lark_oapi SDK when available, falls back to raw HTTP otherwise.
|
||||
Returns {"bot_name": ..., "bot_open_id": ...} on success, None on failure.
|
||||
|
||||
Note: ``bot_open_id`` here is the bot's app-scoped open_id — the same ID
|
||||
that Feishu puts in @mention payloads. It is NOT the app_id.
|
||||
"""
|
||||
if FEISHU_AVAILABLE:
|
||||
return _probe_bot_sdk(app_id, app_secret, domain)
|
||||
|
||||
+1
-1
@@ -81,7 +81,7 @@ class SessionSource:
|
||||
user_name: Optional[str] = None
|
||||
thread_id: Optional[str] = None # For forum topics, Discord threads, etc.
|
||||
chat_topic: Optional[str] = None # Channel topic/description (Discord, Slack)
|
||||
user_id_alt: Optional[str] = None # Signal UUID (alternative to phone number)
|
||||
user_id_alt: Optional[str] = None # Platform-specific stable alt ID (Signal UUID, Feishu union_id)
|
||||
chat_id_alt: Optional[str] = None # Signal group internal ID
|
||||
|
||||
@property
|
||||
|
||||
@@ -1603,7 +1603,7 @@ class TestAdapterBehavior(unittest.TestCase):
|
||||
adapter._dispatch_inbound_event.assert_awaited_once()
|
||||
event = adapter._dispatch_inbound_event.await_args.args[0]
|
||||
self.assertEqual(event.message_type, MessageType.TEXT)
|
||||
self.assertEqual(event.source.user_id, "ou_user")
|
||||
self.assertEqual(event.source.user_id, "u_user") # tenant-scoped user_id preferred over app-scoped open_id
|
||||
self.assertEqual(event.source.user_name, "张三")
|
||||
self.assertEqual(event.source.user_id_alt, "on_union")
|
||||
self.assertEqual(event.source.chat_name, "Feishu DM")
|
||||
|
||||
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.