Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
449 commits
Select commit Hold shift + click to select a range
d2ca461
Fix corrupt Cargo.lock (resolve merge conflict markers)
Mar 28, 2026
d5fa92e
Fix clippy: remove needless borrow in line.rs
Mar 28, 2026
2009f47
Fix clippy: remove needless borrow in line.rs
Mar 28, 2026
8a9a416
channels: add startup timeout for telegram control-plane calls
tytsxai Mar 27, 2026
2f4fee9
feat(runtime): recover nested XML tool call parameters
tytsxai Mar 27, 2026
27a0600
fix: detect skills and mcp_servers changes in agent config reload
neo-wanderer Mar 29, 2026
38a9789
test: add test for agent skills/mcp_servers TOML parsing
neo-wanderer Mar 29, 2026
abce609
fix: Alpine Expression Error in settings page caused by x-show
lc-soft Mar 30, 2026
4b54ef0
fix: ensure message history starts with a user turn for Gemini compat…
nldhuyen0047 Mar 30, 2026
c8e49b6
feat: add SearXNG search provider with custom URL and JSON output
Mar 30, 2026
6b7d3f3
fix: SearXNG does not support limit param, truncate results client-side
Mar 30, 2026
5009df8
fix: filter SearXNG noise fields, only expose title/url/content/publi…
Mar 30, 2026
f600d86
refactor: remove redundant max_results from SearxngSearchConfig
Mar 30, 2026
ab23c7f
feat: SearXNG dynamic category support with validation
Mar 30, 2026
fb97120
feat: SearXNG pagination support
Mar 30, 2026
069c6f2
docs: add SearXNG search provider configuration
Mar 30, 2026
fd6f18a
feat: add searxng search specialist skill
Mar 30, 2026
9408a66
build(cross): add armv7 target pre-build configuration
Mar 30, 2026
d595334
ci: add armv7 target to CLI build matrix
Mar 30, 2026
e8e5f0d
fix: version bump to 0.5.5, SSRF allowlist, Ollama context, embedding…
jaberjaber23 Mar 30, 2026
b229376
feat: Add AWS Bedrock LLM provider support with token auth
smitb Mar 30, 2026
77564a1
Merge branch 'RightNow-AI:main' into build/armv7
Myshkouski Mar 30, 2026
36b0a42
Merge pull request #920 from norci/add-searxng-search-provider
jaberjaber23 Mar 30, 2026
cf4eaa2
Merge pull request #917 from lc-soft/fix/alpine-exp-error
jaberjaber23 Mar 30, 2026
efd9708
Merge pull request #900 from neo-wanderer/fix/agent-skills-reload
jaberjaber23 Mar 30, 2026
a9c5a36
Merge pull request #898 from tytsxai/pr/upstream-generic-fixes
jaberjaber23 Mar 30, 2026
fb0aba3
Merge pull request #897 from tytsxai/pr/upstream-nested-xml
jaberjaber23 Mar 30, 2026
25c043e
Merge pull request #881 from pbranchu/fix/token-estimation-tooluse
jaberjaber23 Mar 30, 2026
91d527b
Merge pull request #877 from pbranchu/fix/silent-reinforcement
jaberjaber23 Mar 30, 2026
c13b1d4
Merge pull request #753 from RamXX/fix/dashboard-password-argon2
jaberjaber23 Mar 30, 2026
ac34813
Add Novita AI as LLM provider
Alex-yang00 Mar 31, 2026
54196a7
test: add unit tests for Novita provider defaults, alias, and driver …
Alex-yang00 Mar 31, 2026
e418036
fix: Fix panic due to UTF-8 character boundary errors
felix307253927 Apr 1, 2026
f287a58
fix: inject default items schema for array parameters in Gemini norma…
nldhuyen0047 Apr 2, 2026
4354589
Set GHCR package visibility to public on every release
chrisyoung2005 Apr 2, 2026
1b280a3
fix(nix): add perl to buildInputs for openssl-sys vendored build
t4min0 Apr 2, 2026
075473c
fix: install script skips empty releases, finds latest with binary as…
jaberjaber23 Apr 3, 2026
815b184
fix: new agents default to configured model instead of hardcoded groq
chrisyoung2005 Apr 3, 2026
b5259c0
fix: capture text from intermediate tool_use iterations
JeromeSonnet Apr 5, 2026
e25227e
fix(chat): prevent duplicate message keys on first chat welcome message
lc-soft Apr 7, 2026
9f2ce9a
fix: avoid Alpine SVG template rendering errors in cost charts
lc-soft Apr 7, 2026
afe3c99
fix(comms): OpenFangAPI.baseUrl is undefined
lc-soft Apr 7, 2026
e824f29
refactor(ui): restructure navigation sidebar with Overview as primary…
normal-coder Apr 7, 2026
428d4dc
refactor(ui): introduce CSS theme tokens for consistent accent text c…
normal-coder Apr 7, 2026
f2cd324
fix(manifest): align the `logo.png` with the icon size to resolve bro…
normal-coder Apr 7, 2026
73fc4d8
refactor(ui): replace HTML entity icons with inline SVGs for consiste…
normal-coder Apr 7, 2026
70bea9c
feat(i18n): add Russian localization and i18n framework
AlexZander85 Apr 8, 2026
845e790
v0.5.7: multi-instance hands + 8 critical fixes
jaberjaber23 Apr 8, 2026
b37d043
Merge branch 'main' into feat-ux-optimize
normal-coder Apr 8, 2026
d98aa14
fix: rewrite Copilot driver with OAuth device flow authentication
Apr 9, 2026
6419c36
fix(kernel): preserve cron jobs across hand reactivation
JeromeSonnet Apr 9, 2026
69356a3
fix: strip trailing empty assistant messages for Claude/Gemini via Co…
Apr 9, 2026
6a177c8
debug: add OAI message logging for tool call investigation
Apr 9, 2026
4517e5c
chore: remove debug logging, keep defensive strip_trailing_empty_assi…
Apr 9, 2026
bac8f3c
fix: skip tool calls with empty ID or name from streaming response
Apr 9, 2026
a6c3adb
feat(channels): use plain text as default output formatter for Signal
rozsival Apr 9, 2026
522427b
chore(cargo): fix formatting
rozsival Apr 9, 2026
b506378
chore(clippy): fix warning
rozsival Apr 9, 2026
8599993
fix: strip all trailing assistant messages without tool_calls
Apr 9, 2026
38dd147
fix: revert aggressive assistant strip, keep empty-only version
Apr 9, 2026
fbe0dcd
fix: model-aware assistant message stripping for Claude via Copilot
Apr 9, 2026
4268c0f
test(channels): add assert for Signal default output formatter
rozsival Apr 9, 2026
08b13d3
fix(analytics): correct style attribute binding to ensure it takes ef…
lc-soft Apr 9, 2026
a3048c5
fix: revert Claude-specific strip, keep empty-only + empty tool name fix
Apr 9, 2026
5a2a1ab
fix: add explicit crypto provider
hello-world-bfree Mar 29, 2026
29f8ed8
chore: don't fail silently, leave a debug message.
hello-world-bfree Mar 31, 2026
e5bc2f8
feat: add free_response_channels support for Discord
Hypn0sis Mar 31, 2026
602ad4c
chore: gitignore personal deploy script
Hypn0sis Apr 9, 2026
58b393f
fix: clippy bool_comparison in web_fetch test
Hypn0sis Apr 9, 2026
e50ea16
fix(comms): align task and send modals to center
lc-soft Apr 10, 2026
29f3e14
Fix: Safe char boundary handling for UTF-8 string slicing
zhujg007 Apr 10, 2026
874cf6a
fix: 6 bugs (#962, #939, #983, #987, #970, #882)
jaberjaber23 Apr 10, 2026
2033078
Merge pull request #1020 from rozsival/upstream
jaberjaber23 Apr 10, 2026
9d8ae77
Merge pull request #1019 from letzdoo-js/upstream-pr/cron-loss
jaberjaber23 Apr 10, 2026
0c1a7f0
Merge pull request #1011 from nldhuyen0047/fix/gemini-function-call-t…
jaberjaber23 Apr 10, 2026
fe44c8b
Merge pull request #1010 from nldhuyen0047/fix/gemini-array-items-mis…
jaberjaber23 Apr 10, 2026
98d1e1b
Merge pull request #1004 from lc-soft/fix/analytics-svg-rendering-errors
jaberjaber23 Apr 10, 2026
446b5e4
Merge pull request #989 from letzdoo-js/fix/accumulated-text-response
jaberjaber23 Apr 10, 2026
b43bbfa
Merge pull request #1029 from zhujg007/main
jaberjaber23 Apr 10, 2026
117d3f9
Merge pull request #968 from chrisyoung2005/fix/new-agent-default-model
jaberjaber23 Apr 10, 2026
11113e9
Merge pull request #1027 from lc-soft/fix/comms-page-modals-style
jaberjaber23 Apr 10, 2026
55b3647
Merge pull request #1024 from Hypn0sis/fix/crypto-discord-free-response
jaberjaber23 Apr 10, 2026
baa717a
Merge pull request #1022 from lc-soft/fix/bar-width-style
jaberjaber23 Apr 10, 2026
9b71e20
Merge pull request #1006 from lc-soft/fix/comms-api-base-url
jaberjaber23 Apr 10, 2026
55f92df
Merge pull request #1002 from lc-soft/fix/first-chat-bug
jaberjaber23 Apr 10, 2026
11f08f0
Merge pull request #966 from t4min0/fix/nix-perl-buildinput
jaberjaber23 Apr 10, 2026
66cc974
chore(deps): bump lettre 0.11.19 -> 0.11.20
dependabot[bot] Apr 10, 2026
71becb8
chore(deps): bump prost 0.13 -> 0.14
dependabot[bot] Apr 10, 2026
1f95b2d
build(deps): bump cron from 0.15.0 to 0.16.0
dependabot[bot] Apr 10, 2026
d6f6242
Merge pull request #922 from Myshkouski/build/armv7
jaberjaber23 Apr 10, 2026
6f34882
Merge pull request #1017 from dmbutko/fix/copilot-oauth-device-flow
jaberjaber23 Apr 10, 2026
a965716
Merge pull request #1015 from AlexZander85/feature/russian-i18n-trans…
jaberjaber23 Apr 10, 2026
e521cce
bump v0.5.8
jaberjaber23 Apr 10, 2026
0c373ff
Merge pull request #956 from RightNow-AI/dependabot/cargo/cron-0.16.0
jaberjaber23 Apr 10, 2026
3c14a19
Merge pull request #928 from Alex-wuhu/novita-integration
jaberjaber23 Apr 10, 2026
bbc701c
Merge pull request #965 from chrisyoung2005/fix/ghcr-package-visibility
jaberjaber23 Apr 10, 2026
e7ec201
Merge pull request #945 from felix307253927/pr-main-utf8
jaberjaber23 Apr 10, 2026
7314ed4
Merge pull request #923 from smitb/feat/add-aws-bedrock-llm-provider-…
jaberjaber23 Apr 10, 2026
eac04a2
Merge pull request #1009 from normal-coder/feat-ux-optimize
jaberjaber23 Apr 10, 2026
bf221f8
fix config persistence, PowerShell bypass, WS 404 race, feishu panic,…
jaberjaber23 Apr 10, 2026
915ea57
bump v0.5.9
jaberjaber23 Apr 10, 2026
8f0a534
fix(deps): upgrade wasmtime 41->43 and rumqttc 0.24->0.25 to resolve …
Hypn0sis Apr 11, 2026
e890057
style: apply cargo fmt
Hypn0sis Apr 11, 2026
6e19f03
fix: suppress pre-existing dead code and clippy warnings in openfang-…
Hypn0sis Apr 11, 2026
9d54440
fix: resolve remaining clippy warnings blocking CI (ptr_arg, dead_cod…
Hypn0sis Apr 14, 2026
62c6ccf
style: apply cargo fmt
Hypn0sis Apr 14, 2026
bfa3d4e
fix(hands): correct trader dashboard style
lc-soft Apr 15, 2026
ad49313
build(deps): bump softprops/action-gh-release from 2 to 3
dependabot[bot] Apr 16, 2026
6d5e0dd
Merge pull request #1041 from Hypn0sis/chore/security-deps
jaberjaber23 Apr 17, 2026
5562703
fix(api): reject unauth requests from non-loopback by default (#1034)…
jaberjaber23 Apr 17, 2026
e8c767d
feat(cli): add hand config subcommand (#809) (#1074)
jaberjaber23 Apr 17, 2026
986894e
fix(runtime): re-read agent context.md per turn so external updates t…
jaberjaber23 Apr 17, 2026
3633a8a
fix(cli): config get returns base_url from default_model (#905) (#1076)
jaberjaber23 Apr 17, 2026
4e8bc9f
feat(channels): optional agent name prefix on outbound messages (#980…
jaberjaber23 Apr 17, 2026
7a1a11e
fix(runtime): combine text and image blocks in multimodal user messag…
jaberjaber23 Apr 17, 2026
c2be7b2
fix(scheduler): route schedule_* tools and /api/schedules through ker…
jaberjaber23 Apr 17, 2026
5afaccc
release: v0.5.10
jaberjaber23 Apr 17, 2026
54101cb
fix: expose MiniMax in init provider lists
pandego Apr 18, 2026
5f185a2
fix(security): unify SSRF protection for WASM host calls
ferr079 Apr 15, 2026
7fd7ff4
fix(feishu): respect region setting for WebSocket endpoint URL
Apr 19, 2026
dd2dd3f
skill config
jaberjaber23 Apr 19, 2026
4cc4e88
command registry
jaberjaber23 Apr 19, 2026
4a814ed
cron delivery
jaberjaber23 Apr 19, 2026
c29c6cb
commands ui
jaberjaber23 Apr 19, 2026
5e190ea
cron delivery ui
jaberjaber23 Apr 19, 2026
06aa992
skill config ui
jaberjaber23 Apr 19, 2026
1e8f691
bump v0.6.0
jaberjaber23 Apr 19, 2026
deabda7
Stamp last_active in streaming agent loop to prevent heartbeat false-…
chrisyoung2005 Apr 20, 2026
ce04c9c
feat(discord): smart auto-thread mode (true/false/smart)
Hypn0sis Apr 14, 2026
66156bd
fix(discord): cap dedup set on thread delete, add #[cfg(test)] to tes…
Hypn0sis Apr 17, 2026
fd350e3
fix: system prompt and identity handling, and config form hydration #…
dongtran16092006 Apr 7, 2026
3b839ab
fix(runtime): pass HOME/TMP/TEMP to stdio MCP servers on all platforms
Streamweaver Apr 20, 2026
84f3ef3
fix(ws): broadcast cron job results to WebSocket clients in real-time
nimitbhardwaj Apr 21, 2026
12fbfde
channels/telegram: propagate send failures from api_send_* helpers
Streamweaver Apr 21, 2026
0c1ebbb
channels/telegram: cache terminal setMessageReaction errors per (chat…
Streamweaver Apr 21, 2026
f5f15a0
build(deps): bump uuid from 1.23.0 to 1.23.1
dependabot[bot] Apr 23, 2026
5a4d289
build(deps): bump rustls from 0.23.37 to 0.23.39
dependabot[bot] Apr 23, 2026
6eb703f
build(deps): bump libc from 0.2.183 to 0.2.185
dependabot[bot] Apr 23, 2026
d12cb88
build(deps): bump lettre from 0.11.20 to 0.11.21
dependabot[bot] Apr 23, 2026
2459d2b
fix(kernel): ignore idle reactive heartbeat silence
pandego Apr 23, 2026
1efca43
fix(channels): key router on user, not channel (Discord/Slack)
benhoverter Apr 26, 2026
dd1c242
fix(channels): close write-path keying gap; broadcast user-scoped
benhoverter Apr 26, 2026
2fa93dc
fix(runtime): add subprocess timeout config for claude-code driver
benhoverter Apr 28, 2026
a0f9572
fix(runtime): wire subprocess_timeout_secs through config.toml
benhoverter Apr 28, 2026
e25945c
feat(media): add audio_base_url override for local OpenAI-compat Whis…
guatoc-ecohub Apr 29, 2026
e65cfe0
fix(flake): NixOS build — nativeBuildInputs, wrapGAppsHook3, libayata…
Aypex Apr 29, 2026
cac6f42
Merge pull request #1080 from pandego/fix/1079-minimax-init
jaberjaber23 Apr 29, 2026
58a8261
Merge pull request #1082 from octo-patch/fix/issue-1081-lark-websocke…
jaberjaber23 Apr 29, 2026
15f8625
Merge pull request #1090 from chrisyoung2005/fix/streaming-heartbeat-…
jaberjaber23 Apr 29, 2026
664155a
fix(channels): key router default-agent map on user_id, not channel_i…
benhoverter Apr 29, 2026
9f3e363
Merge pull request #1114 from pandego/fix/1102-idle-heartbeat
jaberjaber23 Apr 29, 2026
419af33
Merge pull request #1099 from nimitbhardwaj/fix#1088/websocket-scheduled
jaberjaber23 Apr 29, 2026
944c432
fix(kernel): sync all agent.toml fields to DB on restart (fixes #1087…
octo-patch Apr 29, 2026
c3e0a46
Merge pull request #1130 from benhoverter/fix/message-timeout-config
jaberjaber23 Apr 29, 2026
021686b
fmt cleanup
jaberjaber23 Apr 29, 2026
4bd0219
fmt drift
jaberjaber23 Apr 29, 2026
f6a7405
preserve workspace
jaberjaber23 Apr 29, 2026
8652e85
fix clippy
jaberjaber23 Apr 29, 2026
3d6fca6
manifest merge
jaberjaber23 Apr 29, 2026
4561299
bump v0.6.1
jaberjaber23 Apr 29, 2026
94c37fd
Merge pull request #1100 from Streamweaver/fix/telegram-silent-failures
jaberjaber23 Apr 29, 2026
41941ab
Merge pull request #1095 from Streamweaver/fix/mcp-stdio-env-passthro…
jaberjaber23 Apr 29, 2026
5d16a43
chore: add health stack and stabilize provider env tests (#1126)
jack-wz Apr 29, 2026
7462ee4
Merge pull request #1058 from lc-soft/fix/trader-dashboard-style
jaberjaber23 Apr 29, 2026
d4d4764
Merge pull request #1060 from ferr079/fix/unify-ssrf-protection
jaberjaber23 Apr 29, 2026
25a6596
Merge pull request #1109 from RightNow-AI/dependabot/cargo/uuid-1.23.1
jaberjaber23 Apr 29, 2026
7026547
Merge pull request #1110 from RightNow-AI/dependabot/cargo/rustls-0.2…
jaberjaber23 Apr 29, 2026
c64ab2b
Merge pull request #1111 from RightNow-AI/dependabot/cargo/libc-0.2.185
jaberjaber23 Apr 29, 2026
77f49f9
Merge pull request #1112 from RightNow-AI/dependabot/cargo/lettre-0.1…
jaberjaber23 Apr 29, 2026
2bce769
fix(clippy): resolve upstream warnings breaking CI
Hypn0sis Apr 29, 2026
bfffa92
binding rule
jaberjaber23 Apr 29, 2026
ba0932f
exec full
jaberjaber23 Apr 29, 2026
c01deda
bump v0.6.2
jaberjaber23 Apr 29, 2026
5102677
feat(channels): harden channel_id binding (extends bfffa92)
benhoverter Apr 30, 2026
b2e9b0b
fix(kernel): lenient binding parsing — partial-success table parse
benhoverter Apr 29, 2026
f1d6879
docs(types): drop internal spec reference from KernelConfig comment
benhoverter May 1, 2026
0b5d896
Merge pull request #1061 from RightNow-AI/dependabot/github_actions/s…
jaberjaber23 May 1, 2026
4efab34
telegram cache
jaberjaber23 May 1, 2026
9062015
slack dedup
jaberjaber23 May 1, 2026
f8e60b3
timeout reload
jaberjaber23 May 1, 2026
787147e
think persist
jaberjaber23 May 1, 2026
06b7088
bump v0.6.3
jaberjaber23 May 1, 2026
8f4f4fe
dashboard bind
jaberjaber23 May 1, 2026
309d8e7
cachyos build
jaberjaber23 May 1, 2026
6894d96
openrouter free
jaberjaber23 May 1, 2026
3d38621
firefox sidebar
jaberjaber23 May 1, 2026
ba0a37f
bump v0.6.4
jaberjaber23 May 1, 2026
75165a0
build(deps): bump open from 5.3.3 to 5.3.4
dependabot[bot] May 1, 2026
757f5a1
channels: add mime and size to ChannelContent::File
benhoverter Apr 30, 2026
610331f
channels/bridge: support file:// URLs in download_image_to_blocks
benhoverter Apr 30, 2026
86eac93
discord: log raw MESSAGE_CREATE/UPDATE payloads at debug
benhoverter Apr 30, 2026
0ceb363
channels: handle Discord image attachments coherently across providers
benhoverter Apr 30, 2026
fcd380c
channels/bridge: disable transparent decompression on image download
benhoverter May 4, 2026
4822768
Fix Latex Rendering in Openfang Web
nimitbhardwaj May 6, 2026
e46daea
Fix getting started documentation links
aqilaziz May 7, 2026
3813618
fix(chat): support Shift+Enter for multi-line input and proper newlin…
nimitbhardwaj May 8, 2026
c402a2e
ws auth
jaberjaber23 May 12, 2026
e12aaa1
local fallback
jaberjaber23 May 12, 2026
83da87e
another timeout
jaberjaber23 May 12, 2026
c86867f
agent history
jaberjaber23 May 12, 2026
e002565
another timeout
jaberjaber23 May 12, 2026
d929624
redacted thinking
jaberjaber23 May 12, 2026
2eb7754
clippy fix
jaberjaber23 May 12, 2026
055b530
docs accuracy
jaberjaber23 May 12, 2026
4457a28
clone agent
jaberjaber23 May 12, 2026
da2f6a2
providers screen
jaberjaber23 May 12, 2026
0959064
Merge pull request #1135 from RightNow-AI/dependabot/cargo/open-5.3.4
jaberjaber23 May 12, 2026
714f264
activate agents
jaberjaber23 May 12, 2026
16a7faf
Merge pull request #1175 from aqilaziz/docs-fix-getting-started-links
jaberjaber23 May 12, 2026
c7fc289
inferencing flag
jaberjaber23 May 12, 2026
cf2724d
server ids
jaberjaber23 May 12, 2026
e5bc75e
Merge pull request #1146 from benhoverter/lenient-binding-parse
jaberjaber23 May 12, 2026
b0a011d
test fix
jaberjaber23 May 12, 2026
4405de7
bump v0.6.5
jaberjaber23 May 12, 2026
611efaf
Merge pull request #1147 from benhoverter/harden-channel-id-binding
jaberjaber23 May 12, 2026
3b2addd
Merge pull request #1176 from nimitbhardwaj/fix/new-line-chat
jaberjaber23 May 12, 2026
813d36a
Merge pull request #1168 from nimitbhardwaj/fix/latex-rendering
jaberjaber23 May 12, 2026
defeb07
Merge pull request #1143 from benhoverter/discord-file-sharing
jaberjaber23 May 12, 2026
8f20cc2
chat agents
jaberjaber23 May 12, 2026
9a278db
create directory
jaberjaber23 May 12, 2026
cbc1e82
integration fixes
jaberjaber23 May 12, 2026
9b5001b
bump v0.6.6
jaberjaber23 May 12, 2026
04d3f84
ws reconnect
jaberjaber23 May 12, 2026
7379a05
docker docs
jaberjaber23 May 12, 2026
ac8074e
require signed
jaberjaber23 May 12, 2026
21303aa
shell env
jaberjaber23 May 12, 2026
2399b3a
hand stop
jaberjaber23 May 12, 2026
afc589a
uninstall agent
jaberjaber23 May 12, 2026
4764a6c
tts image urls
jaberjaber23 May 12, 2026
2d59a73
bump v0.6.7
jaberjaber23 May 12, 2026
478b902
Merge pull request #1054 from Hypn0sis/feat/discord-smart-thread
jaberjaber23 May 12, 2026
d2884d5
ws auth align
jaberjaber23 May 12, 2026
bd6ef49
bedrock redacted
jaberjaber23 May 12, 2026
b024118
Merge pull request #1045 from dongtran16092006/fix-mcp-system-prompt
jaberjaber23 May 12, 2026
898eea9
matrix refresh
jaberjaber23 May 12, 2026
1fb0022
provider refs
jaberjaber23 May 12, 2026
b5dfed0
integration fixes
jaberjaber23 May 12, 2026
1e4c285
workspace split
jaberjaber23 May 12, 2026
03e9e16
skill tools
jaberjaber23 May 12, 2026
5a30d76
add requesty
jaberjaber23 May 12, 2026
2e104e1
codex hardening
jaberjaber23 May 12, 2026
77fe267
audit endpoint
jaberjaber23 May 12, 2026
34891a0
audit hands
jaberjaber23 May 12, 2026
5ba4393
thread routing
jaberjaber23 May 12, 2026
e2d9bfb
toctou staging
jaberjaber23 May 12, 2026
51765c5
clippy lint
jaberjaber23 May 12, 2026
3bf0070
cargo fmt
jaberjaber23 May 12, 2026
e278c87
audit fixes
jaberjaber23 May 12, 2026
bdbed12
bump v0.6.9
jaberjaber23 May 12, 2026
e5a0c46
fix(agents): disable aggressive default schedules in sample agent con…
Hypn0sis May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Ignored advisories — all are transitive dependencies we cannot upgrade directly.
#
# time 0.3.45: pinned by mac-notification-sys (tauri dependency), awaiting upstream fix
# GTK3/glib/pango/etc: tauri uses gtk-rs GTK3 bindings which are unmaintained
# paste, proc-macro-error, fxhash: unmaintained transitive deps
# lexical-core: unmaintained, pulled by tauri dep chain
# serde_cbor: unmaintained, pulled by tao (tauri)
# cocoa/cocoa-foundation: unmaintained, pulled by tauri/tao

[advisories]
ignore = [
"RUSTSEC-2026-0009", # time DoS — pinned by mac-notification-sys
"RUSTSEC-2024-0370", # proc-macro-error unmaintained
"RUSTSEC-2024-0411", # gtk-rs GTK3 unmaintained (gdk-pixbuf)
"RUSTSEC-2024-0412", # gtk-rs GTK3 unmaintained (gdk)
"RUSTSEC-2024-0413", # gtk-rs GTK3 unmaintained (atk)
"RUSTSEC-2024-0414", # gtk-rs GTK3 unmaintained (pango)
"RUSTSEC-2024-0415", # gtk-rs GTK3 unmaintained (gio)
"RUSTSEC-2024-0416", # gtk-rs GTK3 unmaintained (atk-sys)
"RUSTSEC-2024-0417", # gtk-rs GTK3 unmaintained (gdk-pixbuf-sys)
"RUSTSEC-2024-0418", # gtk-rs GTK3 unmaintained (gdk-sys)
"RUSTSEC-2024-0419", # gtk-rs GTK3 unmaintained (gtk3-macros)
"RUSTSEC-2024-0420", # gtk-rs GTK3 unmaintained (pango-sys)
"RUSTSEC-2024-0429", # gtk-rs GTK3 unmaintained (gtk-sys)
"RUSTSEC-2024-0436", # paste unmaintained
"RUSTSEC-2025-0057", # fxhash unmaintained
"RUSTSEC-2025-0075", # glib unmaintained
"RUSTSEC-2025-0080", # cocoa unmaintained
"RUSTSEC-2025-0081", # cocoa-foundation unmaintained
"RUSTSEC-2025-0098", # lexical-core unmaintained
"RUSTSEC-2025-0100", # gio-sys unmaintained
"RUSTSEC-2026-0002", # serde_cbor unmaintained
"RUSTSEC-2023-0086", # lexopt unmaintained (if present)
]
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
# Fireworks AI
# FIREWORKS_API_KEY=...

# Novita AI (multi-model gateway)
# NOVITA_API_KEY=...

# ─── Local LLM Providers (no API key needed) ─────────────────────────

# Ollama (default: http://localhost:11434)
Expand Down
16 changes: 9 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
Expand All @@ -45,7 +45,7 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
Expand All @@ -67,7 +67,7 @@ jobs:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
Expand All @@ -87,17 +87,19 @@ jobs:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --check
# Gate every workspace crate on rustfmt to keep `cargo fmt --all --check` clean.
# See issue #1121.
- run: cargo fmt --all -- --check

audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-audit
Expand All @@ -109,7 +111,7 @@ jobs:
name: Secrets Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Install trufflehog
Expand Down
41 changes: 28 additions & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:

runs-on: ${{ matrix.platform.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install system deps (Linux)
if: runner.os == 'Linux'
Expand Down Expand Up @@ -134,7 +134,7 @@ jobs:
projectPath: crates/openfang-desktop
args: ${{ matrix.platform.args }}

# ── CLI Binary (5 platforms) ──────────────────────────────────────────────
# ── CLI Binary (7 platforms) ──────────────────────────────────────────────
cli:
name: CLI / ${{ matrix.target }}
runs-on: ${{ matrix.os }}
Expand All @@ -148,6 +148,9 @@ jobs:
- target: aarch64-unknown-linux-gnu
os: ubuntu-22.04
archive: tar.gz
- target: armv7-unknown-linux-gnueabihf
os: ubuntu-22.04
archive: tar.gz
- target: x86_64-apple-darwin
os: macos-latest
archive: tar.gz
Expand All @@ -162,24 +165,24 @@ jobs:
archive: zip

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install build deps (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y pkg-config libssl-dev
- name: Install cross (Linux aarch64)
if: matrix.target == 'aarch64-unknown-linux-gnu'
- name: Install cross (Linux aarch64/armv7)
if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf'
run: cargo install cross --locked
- uses: Swatinem/rust-cache@v2
with:
key: cli-${{ matrix.target }}
- name: Build CLI (cross)
if: matrix.target == 'aarch64-unknown-linux-gnu'
if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf'
run: cross build --release --target ${{ matrix.target }} --bin openfang
- name: Build CLI
if: matrix.target != 'aarch64-unknown-linux-gnu'
if: matrix.target != 'aarch64-unknown-linux-gnu' && matrix.target != 'armv7-unknown-linux-gnueabihf'
run: cargo build --release --target ${{ matrix.target }} --bin openfang
- name: Ad-hoc codesign CLI binary (macOS)
if: runner.os == 'macOS'
Expand All @@ -201,7 +204,7 @@ jobs:
$hash = (Get-FileHash "openfang-${{ matrix.target }}.zip" -Algorithm SHA256).Hash.ToLower()
"$hash openfang-${{ matrix.target }}.zip" | Out-File -Encoding ASCII "openfang-${{ matrix.target }}.zip.sha256"
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
with:
files: openfang-${{ matrix.target }}.*
env:
Expand All @@ -212,28 +215,40 @@ jobs:
name: Docker Image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Log in to GHCR
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU (for arm64 emulation)
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: Extract version
id: version
run: echo "version=${GITHUB_REF#refs/tags/v}" >> "$GITHUB_OUTPUT"
- name: Build and push (multi-arch)
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/rightnow-ai/openfang:latest
ghcr.io/rightnow-ai/openfang:${{ steps.version.outputs.version }}
labels: |
org.opencontainers.image.source=https://github.com/RightNow-AI/openfang
org.opencontainers.image.licenses=MIT
org.opencontainers.image.description=OpenFang Agent OS — single-binary Rust agent framework
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Set GHCR package visibility to public
run: |
curl -fsSL -X PATCH \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/orgs/RightNow-AI/packages/container/openfang \
-d '{"visibility":"public"}'
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ BUILD_LOG.md

# OS
.DS_Store
._*
Thumbs.db

# IDE & tools
Expand All @@ -43,3 +44,7 @@ Thumbs.db
*.swp
*.swo
*~
.serena/

# Personal deploy scripts
scripts/deploy-remote.sh
6 changes: 6 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## Health Stack

- typecheck: cargo build --workspace --lib
- lint: cargo clippy --workspace --all-targets -- -D warnings
- test: cargo test --workspace
- shell: shellcheck scripts/install.sh
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,37 @@ All notable changes to OpenFang will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.5.10] - 2026-04-17

### Fixed

- Non-loopback requests with no `api_key` configured now return 401 by default. Opt out with `OPENFANG_ALLOW_NO_AUTH=1`. Fixes the B1/B2 authentication bypass from #1034.
- Agent `context.md` is re-read on every turn so external updates take effect mid-session. Opt out per agent with `cache_context = true` on the manifest. Fixes #843.
- `openfang config get default_model.base_url` now prints the configured URL instead of an empty string. Missing keys return a clear "not found" error. Fixes #905.
- `schedule_create`, `schedule_list`, and `schedule_delete` tools plus the `/api/schedules` routes now use the kernel cron scheduler, so scheduled jobs actually fire. One-shot idempotent migration imports legacy shared-memory entries at startup. Fixes #1069.
- Multimodal user messages now combine text and image blocks into a single message so the LLM sees both. Fixes #1043.

### Added

- `openfang hand config <id>` subcommand: get, set, unset, and list settings on an active hand instance. Fixes #809.
- Optional per-channel `prefix_agent_name` setting (`off` / `bracket` / `bold_bracket`). Wraps outbound agent responses so users in multi-agent channels can see which agent replied. Default is off, byte-identical to prior behavior. Fixes #980.

### Closed as invalid

- #818 and #819. Both reference a knowledge-domain API that does not exist on `main`. Filed against an unmerged feature branch (`plan/013-audit-remediation`). Close with a note to build the proposed validation and stale-timestamp surfacing into that feature when it lands.

## [0.5.9] - 2026-04-10

### Changed

- **BREAKING:** Dashboard password hashing switched from SHA256 to Argon2id. Existing `password_hash` values in `config.toml` must be regenerated with `openfang auth hash-password`. Only affects users with `[auth] enabled = true`.

### Fixed

- Dashboard passwords were hashed with plain SHA256 (no salt), making them vulnerable to rainbow table and GPU-accelerated brute force attacks. Now uses Argon2id with random salts.

## [0.1.0] - 2026-02-24

### Added
Expand Down
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,16 @@ Tests that require a real LLM key will skip gracefully if the env var is absent.
cargo build --workspace
```

### Fast Release Build (for development)

The default `--release` profile uses full LTO and single-codegen-unit, which produces the smallest/fastest binary but is slow to compile. For iterating locally, use the `release-fast` profile instead:

```bash
cargo build --profile release-fast -p openfang-cli
```

This cuts link time significantly (thin LTO, 8 codegen units, `opt-level=2`) while still producing a binary fast enough to run integration tests against. Use `--release` only for final binaries or CI.

### Run All Tests

```bash
Expand Down
Loading
Loading