Recent Changes & Evolution
The dLANDiscord project has evolved significantly since its inception in 2021. This document tracks the major shifts, including the 2026 architectural overhaul.
๐
Late July 2026 - dIRC Services Daemon (dircservices)
A new standalone package โ dircservices/ โ implements a full IRC services daemon linking into UnrealIRCd as a U:Lined S2S peer (services.dlan, irc.dlan:6700). 14 pseudoclient services shipped in 3 milestone waves plus a gap-fill session, all built between 2026-07-23 and 2026-07-24 (โฅ20 commits). Pure Go (modernc.org/sqlite, no CGO, no AI deps).
๐๏ธ Foundation (M1)
| Commit |
Change |
Files |
58a8405d |
dIRC analysis + dLAN Services plan docs |
docs/dIRC_Analysis.md, docs/dLAN_Services_Plan.md (new) |
c0f7683e |
dirc client: default SASL off + Anope-compatible NickServ flow for UnrealIRCd (pre-M1 alignment) |
dirc/dirc.go, dirc/ircagents.go |
c7487f5f |
Scaffold dircservices/ package โ config, crypto, opertypes, protocol interface, pseudoclient placeholder |
9 new files |
90401a55 |
SQLite store โ WAL + integrity_check/restore + backup rotation + ~40-table schema |
store/{store,backup,schema}.go (new) |
781d9a51 |
protocol/unreal4 TS6/UID S2S handshake + dispatch + 4 tests |
protocol/unreal4/{handshake,uid,svs,dispatch,messages}.go + test |
4e2f0302 |
Wire unreal4 โ Protocol interface + real link config (config.example.json) |
protocol/*, config/* |
5686dafb |
M1 smoke harness verified โ link established on irc.dlan:6700 (EAUTH-before-SID order fix) |
cmd/dircservices/main.go, protocol |
dec1d2e5 |
M1 smoke results logged |
docs/dLAN_Services_DevLog.md |
Wire protocol: PASS โ PROTOCTL NOQUIT TOKEN SSJ3 ... PROTOCOL=1202 โ PROTOCTL EAUTH=services.dlan โ PROTOCTL SID=00X โ PROTOCTL TS=<unix> โ SERVER services.dlan 1 :dLAN IRC Services โ peer SERVER + EOS (Unreal uses EOS not Anope's SVINFO).
๐ก๏ธ M2 โ Global, NickServ, OperServ, ChanServ, HostServ
| Commit |
Change |
Files |
4e4e930b |
Pseudoclient framework + UserRegistry + Global + OperServ essentials; services/services.go Registry |
pseudoclient.go, state/users.go, services/{services,global,operserv}/* |
b37d1b54 |
NickServ (REGISTER/IDENTIFY/GHOST/INFO/AUTOOP/VHOST/HELP/STATUS); Kill added to protocol interface |
services/nickserv/, store/store.go, protocol/unreal4/svs.go |
b928edc6 |
HostServ + wire all M2 services + shared IdentifiedMap (sync.Map, NickServ writes/ChanServ reads) |
services/hostserv/, store/vhost.go |
15940f28 |
ChanServ โ REGISTER/ACCESS/AKICK/MODE/KICK/BAN/TOPIC/OP/DEOP/HELP; 5 access levels (0/100/200/300/400) |
services/chanserv/, store/chanserv.go |
ae91b304 |
Fix groupโgroup_name rename in group_members (SQLite reserved word) |
store/schema.go |
๐ฒ M3 โ BotServ, ALIS + ChannelRegistry, GroupServ
| Commit |
Change |
Files |
e210c2eb |
Add Kick to Protocol interface + group_invites schema |
protocol/protocol.go, protocol/unreal4/svs.go, store/schema.go |
bea9c8f1 |
ALIS + ChannelRegistry โ LIST w/ filters (glob, ยฑmembers, -topic, -mode) + channel tracking |
state/channels.go, services/alis/alis.go, store/botserv.go |
19dd3a42 |
BotServ โ BOT/ASSIGN/BADWORDS/KICK enforcement/SET/INFO; real-time kick engine via OnPrivmsg (CAPS/FLOOD/REPEAT/BOLDS/COLORS/ITALICS/REVERSES/UNDERLINES/AMSG) |
services/botserv/ |
381b5016 |
GroupServ โ REGISTER/DROP/JOIN/PART/INVITE/FLAGS/SET/INFO/LIST; r/F/c flags model |
services/groupserv/, store/groupserv.go |
๐ M4+M5 โ StatServ, SecureServ, GameServ, IdleRPGServ, LoveServ
| Commit |
Change |
Files |
23db538c |
All 13 v1 services implemented โ StatServ (snapshot loop), SecureServ (DNSBL+clone+flood+proxyscan), GameServ (calc/8ball/roll/rps/namegen/lottery/trivia), IdleRPGServ (idle-to-level + 30-90min quests), LoveServ (16 gestures) |
30 new files in services/{statserv,secureserv,gameserv,idlerpg,loveserv}/ + store/* + data/trivia/*.txt |
146b4e40 |
M4+M5 smoke test results verified end-to-end vs irc.dlan:6700 โ 13 regulators + full channel burst clean shutdown |
docs/dLAN_Services_DevLog.md |
Smoke test (commit 23db538c): 13 UIDs introduced in burst (00X001โ00X00D), peer SID 001 + EOS synced, 14-channel burst captured (WeatherWatch, FoodFacts, TechTrivia, DadJokes, MovieQuotes, BTC, ChristmasCountdown, random, general, Solana, dBot, NOC, Agents, opers), clean reverse-order shutdown on SIGTERM.
๐ Gap Fill (2026-07-24) โ HelpServ, full NickServ, OperServ expansion, ChanServ SET, HostServ approval, lifecycle hardening
| Commit |
Change |
Files |
2fb10a93 |
NickServ profile expansion (8 social/identity columns) + HelpServ multi-language ({LANG}.{Svc}.md โ base โ EN fallback) + 13 EN.*.md per-service docs |
services/{nickserv,helpserv}/*, store/store.go, docs/EN.*.md |
b6a3974e |
Lifecycle hardening (panic recovery in dispatch, Reconnect() + auto-reconnect exponential backoff, store close on panic) + ChanServ expansion (19 SET sub-cmds, 8 user modes, 13 utility cmds, FDROP/STATUS/WHY/UP/DOWN/RECOVER/LIST) + HostServ approval queue (REQUEST/WAITING/ACTIVATE/REJECT) + bulk ops (SETALL/DELALL/GROUP/VHOSTNICK) + shared vhost pool (OFFER/TAKE/UNOFFER) at ~100% + NickServ REGAIN/two-arg IDENTIFY/SET KILL QUICK/ACCESS CLEAR + OperServ OPER INFO/STATS per-type/LOGSEARCH + BotServ fantasy routing โ GameServ + GameServ per-channel context + GroupServ SET PASSWORD/JOINFLAGS/GROUPFLAGS + LoveServ per-channel MUTE + most-slapped + SecureServ WALLOPS oper notify + rewrite all 13 EN docs |
23 files (see DevLog 2026-07-24 session 3) |
This session also added HelpServ (HELP <service> [command], LIST) as the 14th service โ reads ## headers from dircservices/docs/*.md, language-aware via NickGetLanguage. Smoked: 14 services operational. Undocumented M2 skeleton (47-line NickServ with only HELP) was fully rewritten to ~17 commands โ noted as a critical lesson on subagent accountability (see DevLog 2026-07-24 gap audit).
Architecture Notes
- Decoupled from
dirc + assistant: the dirc client still connects as a regular IRC user, while dircservices is the S2S services peer owning nickname/channel registration, oper tooling, and games.
- Protocol interface: 28 methods + 11 multi-subscriber
On* event hooks (RLock + snapshot copy + dispatch loop) โ services share UserRegistry / ChannelRegistry / IdentifiedMap.
- Per-operation ordering:
OnUIDIntroduce โ UserRegistry โ service subscribers; OnPrivmsg โ BotServ kick engine โ flood counters โ StatServ line count.
- Operator types:
access.OperType glob (path.Match) privileges installed at startup; pseudoclient.IsOper(cfg, nick) for oper-gated commands.
- Gated but not enforcing (v1): NickServ ENFORCE engine (60s nick reservation), ChanServ mode-drift ENFORCE, HostServ actual vhost application via SVSMODE โ all stored/parsed but enforcement deferred.
See: dIRC Services Overview ยท Services Suite ยท dIRC overview
๐
July 2026 - ServerPing, Tool Timeouts, dMUD Realm Model, Agent Model Migration, Reliability Round
July 2026 brought a new infrastructure monitoring package (ServerPing), a centralized tool timeout system, the dMUD realm/zone world model, a wave of agent model migrations off gemma2:2b, and a deep reliability fix round covering tools, SSH, memory distillation, and Mission Control.
๐ก ServerPing โ Multi-Server Monitoring (new package serverping/)
| Commit |
Change |
Files |
11f7513c |
New serverping package โ TCP/HTTP/SSL monitoring for all dLAN servers with per-group WhatsApp alerts + /server-ping web dashboard |
serverping/serverping.go (new), main.go |
472de083 |
Fix display names for monitored servers |
serverping/serverping.go |
0d47017a |
Fix ping targets for Enterprise and Enhanced servers |
serverping/serverping.go |
Monitors 5 servers across 3 WhatsApp groups (Sysafe, LondonHosting, Delicious). Checks TCP ports, HTTP response codes, and SSL certificate expiry. Alerts on failure, recovery message on restore.
See: ServerPing Overview
โฑ๏ธ Tool Timeout Tiers (new file assistant/tooltimeouts.go)
| Commit |
Change |
Files |
011e8038 |
Fix shell_execution (10s โ 90s) and remote_ssh_execution (dead 60s entry โ explicit 360s) |
assistant/tooltimeouts.go |
ebb3dbf8 |
Fix den_file_upload + execute_python_code โ tools never worked; log dropped Error text |
assistant/assistant.go |
Centralized per-tool timeouts with 4 tiers (Fast 5s, Normal 45s, Slow 120s, Extended 300s). Key overrides: call_agent 25m, execute_playbook 15m, plan 10m, remote_ssh_execution 360s. The old dead "remote_ssh" map entry was a silent bug โ never matched actual tool names.
See: Tool Timeout Tiers
๐ dMUD Realm/Zone Model
| Commit |
Change |
Files |
68b26338 |
Multi-realm world architecture โ room_meta.go, realm/zone derivation, home bind, stable dailies, mode-aware /play |
dmud/room_meta.go (new), dmud/room.go, dmud/user.go, dmud/quest.go, dmud/web_handlers.go, 80 files changed |
a4af856b |
New /what status command โ everyday snapshot with room, quests, next-up hints, pet, tip |
dmud/commands.go |
2434e010 |
Tutorial T0/T1 polish โ coach Guide NPC, starter quest chain, claim UX |
dmud/commands.go, dmud/data/scripts/tutorial_guide.lua, dmud/data/quests/tutorial.ini |
84cf52ee |
/play tab UI improvements + dMUD analysis docs |
dmud/web_handlers.go, dmud_analysis/ (new) |
Rooms now auto-derive realm and zone from ID/theme. Room modes: ambient, rpg, hub, social, partyline. WoW Classic Elwynn realm (17+ rooms) separated into its own realm. Home bind allows /bind and /home. /what provides a quick "how am I / what next" snapshot without the full /stats sheet.
See: Realm/Zone Model ยท WoW Elwynn Realm
๐ฅ๏ธ Mission Control โ Live Den Shell & Enhancements
| Commit |
Change |
Files |
03bdd6d9 |
Live den shell tab, company comments, load bar |
assistant/missioncontrol.go, assistant/nikkishell.go, assistant/static/mission_control_modals.js |
0bb86b02 |
Repair modals.js parse error + task board fixes |
assistant/static/mission_control_modals.js |
New MC features: interactive shell access to Nikki's den (live terminal), company comment threads on business entries, and a visual load bar for long-running operations.
See: Mission Control Depth
๐ก๏ธ Graceful Shutdown System (new file assistant/graceful.go)
New ShutdownManager coordinates orderly shutdown across all subsystems. Each subsystem implements Stop() (graceful drain) + ForceStop() (emergency) with per-component timeouts and a 2-minute global hard cap. Panic-safe callbacks prevent cascading failures during shutdown.
See: Graceful Shutdown
๐ฎ Larry Castaway Enhancement
| Commit |
Change |
Files |
412349be |
Embed HTML, delta-time animation, local image serving, robust fallbacks |
larrycastaway/index.html, larrycastaway/larrycastaway.go, main.go |
Game now uses //go:embed for the HTML bundle (no filesystem dependency), delta-time based animation for frame-rate independence, and local image serving with graceful fallback.
๐ WoW Check Site Overhaul
| Commit |
Change |
Files |
1d25cd66 |
SVG progress charts, path traversal fix, IDโname map perf fix, templating overhaul |
wowcheck/wowcharts.go (new), wowcheck/wowchecksite.go, wowcheck/wowchecksite_test.go (new), templates/char.html |
df85a194 |
Fix 6-field cron spec parsing โ WoW summaries were dead |
main.go, wowcheck/wowcheck.go |
New wowcharts.go generates SVG progress charts per metric on character pages (90d/180d toggle). Path traversal vulnerability fixed via allowlist. Performance improved by replacing per-ID JSON re-parsing with IDโname maps (O(nยฒ) โ O(n)). httptest smoke tests added.
๐ง Agent Model Migration โ gemma2:2b Purge
| Commit |
Change |
Files |
f7731c85 |
Swap Skutters from gemma2:2b โ qwen2.5:3b โ gemma template can't do tool calls |
assistant/prompts/agent/skutters.md |
2b4a8f65 |
Swap remaining gemma2:2b primaries (analyst, auditor, researcher, reviewer, robocop) |
5 agent .md files |
7b64d7c0 |
Downgrade Delicious primary to flash-lite |
assistant/prompts/agent/delicious.md |
aa77f201 |
Sysadmin/sysafe to NIM glm-5.2; shell heredoc guard; technitium type aliases |
agent .md files, assistant/nikkishell.go, sasha/technitium_dns.sh |
gemma2:2b models were fundamentally unable to produce tool-call output due to Jinja template incompatibility. All remaining primaries migrated to qwen2.5:3b or glm-5.2.
๐ SSH Case-Insensitive Registry
| Commit |
Change |
Files |
82ced841 |
Case-insensitive registry lookup + short-name aliases for SSH host matching |
dpersistantssh/dpersistantssh.go |
SSH host lookup now case-insensitive with short-name aliases (e.g., druid matches druid.sysafe.co.uk). Prevents silent connection failures from case mismatches in tool configurations.
See: Persistent SSH Overview
๐งน Reliability & Fix Round
| Commit |
Change |
Files |
5a4c86c2 |
Circuit breaker defer+notify, recovery nil panic, placeholder guard, execute_tool strip, WIS unmarshal, flash-lite registration |
assistant/adaptive_planner.go, assistant/assistant.go, assistant/assutils.go, assistant/conversation_intelligence.go, assistant/scheduler.go |
ee00f7d9 |
Stop <thinking> / <tool_call> tags leaking into messages |
assistant/assistant.go, assistant/assutils.go, assistant/planner.go |
eeb616a9 |
Reject raw HTML masquerading as markdown in view_website_as_markdown |
assistant/prompts/tools/shared/view_website_as_markdown.sh |
1a4aa9c5 |
Stop hardcoding Source: Wowhead regardless of content in WoW playbook |
assistant/playbooks/global/wow_news_briefing.json |
3845b7e4 |
manage_notes is_agent_note no longer required |
5 tool .md files |
4cc41bfa |
Stop rejecting items findTask already found in another list |
assistant/notes.go |
6ebfc040 |
Repair unescaped embedded quotes and mid-string fences in JSON |
assistant |
9c5deb1b |
Surface silently-recovered watchdog timeouts in scheduler |
assistant/scheduler.go |
2d70fa07 |
Stop overnight distillation contention + timeout collapse |
assistant/conversation_intelligence.go, assistant/heartbeat.go |
3f6e9a7d |
Finish dead-model purge; repair summary-chain provider bug |
assistant/assutils.go, assistant/multillm.go, assistant/planner.go |
e5c906e9 |
Purge dead fallback models; retune memorymaster; kill summarizer false lead |
assistant/assistant.go, assistant/assutils.go, assistant/free-models.go |
๐ Scheduler & Heartbeat Fixes
| Commit |
Change |
Files |
30121bf5 |
Once-daily low-credits admin alert on any HTTP 402 from OpenRouter |
assistant/openrouter_client.go, assistant/scheduler.go |
459f8e76 |
Route quiet-hours heartbeat ticks to cheaper model (MVP) |
assistant/heartbeat.go |
0c6da5a4 |
Stop merging 4 architect audit types into one TaskType bucket |
assistant/architect.go |
1baf11ce |
Trim Loop 4 to safe scope, fix dead timing on 2 loops |
assistant/heartbeat.go |
99e3062c |
Stop internal-text leaks to WhatsApp |
assistant |
d104d5ed |
Same-run recipient tier in double-delivery dedupe |
assistant/scheduler.go |
383c4781 |
Content-based double-delivery dedupe (guard v2) |
assistant/scheduler.go |
fd66d9c8 |
Remove [DONE] prompt hint that suppressed briefing delivery |
assistant/scheduler.go |
4b7b349f |
Skip completion notification when session already delivered |
assistant/scheduler.go |
95233d34 |
Outbound message audit round โ wakeup, monitor sweeps, heartbeat interims, scheduler warnings |
multiple files |
๐ค Nikki Delegation Observability
| Commit |
Change |
Files |
9452b2dc |
New get_delegation_status tool + improved delegation summaries/observability |
assistant/assistant.go, assistant/nikkishell.go, assistant/prompts/tools/nikki/get_delegation_status.md (new) |
b996e77d |
Stop paying for async-delegation capability her own directive already forbids |
assistant/nikkishell.go |
5a761b2c |
Cap get_nikki_shell_history output at the source |
assistant/nikkishell.go |
Nikki can now query get_delegation_status to see pending/recent delegations, which agents were used, and high-level results โ maintaining orchestration awareness without remembering every detail.
๐ PromptIntel Shield Fixes
| Commit |
Change |
Files |
6cf39399 |
Parse full PromptIntel feed responses (array vs object shapes) |
assistant/shield/shield_sync.go |
๐
June 2026 - SHIELD, Console, Agentic Flow, Custom Skills, dMUD Seasonal + WoW Realm
June 2026 brought a new security detection layer (SHIELD), a live-log Console tab in Mission Control, the custom-skill scoping pipeline, and a major dMUD content pass (seasonal events + WoW Classic Elwynn realm). Agentic-flow reliability saw a batch of fixes around async delegation, watchdog races, and playbook rendering.
๐ก๏ธ SHIELD Detection System (new package assistant/shield/)
| Commit |
Change |
Files |
be1bfc61 |
Wire early-return + hard block for protected roles on critical/suspicious matches |
assistant.go |
88572533 |
Phase 2 feed syncer (PromptIntel pull) via subagent |
shield/shield_sync.go (new) |
d93b0934 |
Integrate syncer startup (StartFeedSync + SyncNow) via sync.Once after shield.Init |
assistant.go |
91365cba |
SHIELD.md generator (GenerateSHIELDMD + generateAndWrite on Init) + base data/shield/SHIELD.md |
shield.go, data/shield/SHIELD.md |
318aa581 |
MC SHIELD tab(s) integration + prerequisite enhancements |
missioncontrol.go, shield/, static/mission_control.js |
6ec08e26 / f66d0d57 |
Resolve duplicate GetRecentDecisions / GetLast* declarations |
shield.go, shield_sync.go |
29b4ebae |
Hardcode PromptIntel API key, lazy syncer init, improved MC status |
shield_sync.go, assistant.go, static/mission_control.js |
ebb9a312 / 03f9b54a / 28b1610d |
Fix PromptIntel response parsing (array vs object shapes) โ Data is now json.RawMessage and dispatches on first non-whitespace byte |
shield/shield_sync.go |
64678479 |
Tune seed rules (broad_simple_examples.json) to avoid overblocking |
data/shield/seeds/ |
See: SHIELD System
๐ฅ๏ธ Mission Control โ Console Tab (commit ec309850)
New Infrastructure-segment tab between Servers and Radar that live-streams /root/botlog.log via 1.5s polling.
- New route
/api/mc/console/logs + mcConsoleLogsHandler + readTailLines / readLinesFromOffset helpers in missioncontrol.go
- New
tab_console.html template, mission_control_console.js, base.html nav button, switchTab hook in mission_control.js
- 5 operator features delivered: auto-scroll toggle, pause/resume, text filter, log-level colour coding, clear screen
- 5000-line DOM cap, status bar, "file not found" banner, HTML auto-escaping via
textContent
See: Mission Control Console
๐จ Custom Skill Scoping Pipeline
A multi-commit pass (14590034 โ 115734d7) introduced owned / scoped custom skills alongside the existing global AntFarm skills catalog.
| Commit |
Change |
Files |
f9d68aa4 |
Wire initial skill activation in NewChatSession for custom/system SkillID at creation time |
assistant.go |
627860cb |
Inject active skill system_prompt_suffix into generateStaticPrompt for main agents |
assistant.go |
b5c603ff |
Correct delegation skill inheritance via parentSessionRef; fix ActivateSkill Field literals + ContextMgr ref |
skills infra |
8fa2070b |
Security: remove blanket RBAC bypass for skillID in NewChatSession โ skills only augment tools, role checks always apply |
assistant.go |
b12737ba |
skill_lookup supports activate action + scope / owner in results for custom skills |
skill_lookup |
bb1715d5 |
Docs: update skill_lookup.md for activate action + custom scoping |
skill_lookup.md |
014a5526 |
Implement create_skill tool (writes scoped custom skill JSON + auto-activates + registers) |
create_skill |
b3f70923 |
skill_lookup search respects scoping โ users see own + global, agent-private filtered |
skill_lookup |
115734d7 |
Remove unused swarm_config from example YouTube custom skills; fix required tool name to youtube_toolkit |
example skills |
Design doc updated multiple times: 14590034, 87827be8, 4c3c092f, 2dbccdf7, b04158f9 (skills_scoping_design.md + nikki.md + create_skill.md).
See: Skills System โ Custom Skill Scoping
๐ณ dMUD Seasonal Event System & WoW Classic Elwynn Realm
| Commit |
Change |
Files |
b03682a6 |
New seasonal.go (seasons, festivals, weather, seasonal stat bonuses, seasonal NPC spawns) + events.go new EventTypes (seasonal/seasonal_start/seasonal_end/weather/festival/random) + new actions give_xp / apply_seasonal_bonus / set_weather |
dmud/seasonal.go (new), dmud/events.go |
3deed0af |
Per-system seasonal integration โ rooms + NPC Lua APIs |
dmud/ |
3d8f05ff |
Character pass โ seasonal stat bonuses + seasonal equipment effects (SeasonalStatBonus) |
dmud/ |
9fe6c6be |
Stop holiday_end events from re-triggering every minute |
dmud/events.go |
7ca5ec6f |
WoW Classic Elwynn Forest realm โ 9 rooms + 8 NPCs |
dmud/data/rooms/wow_.ini, dmud/data/scripts/wow_.lua |
48bdf8be |
Rename wow_elwynn_portal โ wow_azeroth_gateway (lore accuracy) |
room INI |
b84e0e53 |
Expand Elwynn Forest โ 8 new rooms, 7 NPCs, 2 expansion hooks (Westfall / Redridge stubs) |
room INI + scripts |
67cfe10 |
Enable WoW Classic realm |
dmud |
693b5583 / 2d896c1d |
Separate RPG worlds by theme (multi-realm architecture) |
dmud |
964dd80c |
Fix /play page keyboard input and disconnect message display |
dmud frontend |
a26e29d9 |
dmud frontend refresh: Play tab, world life stats, improved users page |
dmud/data/admin |
See: Seasonal Events ยท WoW Elwynn Realm
โ๏ธ dMUD Async Pipeline & Structured Logging
| Commit |
Change |
Files |
0e155400 |
Async command pipeline with per-session worker goroutine โ bounded buffered channel (cap 16), non-blocking enqueue + drop-on-full warn, 30s per-command context timeout, atomic response + prompt render (eliminates ambient interleaving) |
dmud/pipeline.go (new), dmud/server.go, dmud/user.go, dmud/input_test.go |
29de0c56 |
Structured logging with log/slog โ new dmud/logger.go (per-component sub-loggers + domain helpers), ~100 log.* calls across 17 files migrated, log.Fatalf โ slog.Error (no fatal exits in library code) |
dmud/logger.go (new), 17 files |
c3810acd |
Panic fix โ Logger initialised as package-level var with no-op init() stub (Go initialises package vars before init(), so the original logServer = logWith("server") panicked on cold start) |
dmud/logger.go |
See: Async Command Pipeline & Structured Logging
๐ Agentic Flow & Reliability Round 1
| Commit |
Change |
Files |
50f77b4c |
Agentic flow round 1 โ async delegation, fallback recovery, session lifecycle |
assistant/ |
14ad356b |
Dedupe async delegation completion context (#8) |
assistant/ |
55c58583 |
Gate zero-tool-call retry to autonomous tasks (#4) |
assistant/ |
8b66ece5 |
Trim live-status monitoring payloads before LLM context (#10) |
assistant/ |
07c72677 |
Raise orchestration tool timeouts โ call_agent 25m, playbooks 15m, plan 10m, distill/reflect 5m (default 45s) |
assistant/ |
ca31ce79 |
Allow call_agent playbook steps targeting non-planner agents (#B) |
assistant/ |
013a05e8 |
Watchdog race โ StopInterimUpdates CancelFunc cancels ctx before result is read |
assistant/ |
b7c9cac1 |
Remove CancelFunc from StopInterimUpdates to fix watchdog race permanently |
assistant/ |
692a0f4b |
Early-exit cosmetic fix, autonomous task nudges, watchdog timeout, FreshSession for command tasks, token-based hygiene threshold |
assistant/ |
28981721 |
Playbook JSON field casing bug + free-models cleanup + Sasha model fix + adaptive planner text nudge |
assistant/ |
bbfc60c9 |
Comprehensive tool/delegation/playbook/model fixes from June 2026 analysis |
assistant/ |
b39fb25e |
Filter execute_playbook during playbook delegation + strip unresolved templates from output |
assistant/ |
81c77acf |
All 6 playbooks now include actual {step_N_result} placeholder(s) in finish_task so the LLM sees prior data |
playbooks/*.json |
591fdb14 |
Fix trigger patterns for Morning Infra Summary and Weekly Tech Round-up |
playbooks/*.json |
๐ Context & Hygiene Improvements
| Commit |
Change |
Files |
e144c688 |
Refine context management and agent model alignment |
assistant/ |
79d44640 |
Size/hygiene/scheduled command improvements |
assistant/ |
a49ce9d0 |
Prompt section truncation in dsysadmin + sysafe to prevent context bloat |
dsysadmin/, sysafe/ |
61555f67 |
Reduce max history: single-shot 40โ30, force 10 for Internal_Monitoring rehydrates; trim top CPU/mem processes at source; summarize/dedup NOC batches; update May-problems.md |
assistant/ |
dfa2bfe1 |
Reduce Architect telemetry scope โ remove SYSAFEINFRA / LDNINFRA / DELICIOUSINFRA / NOCPULSE from default list to reduce context bloat in critical/audit messages |
architect |
๐ค Model Additions & Tweaks
| Commit |
Change |
Files |
659c9621 |
Add nvidia/moonshotai/kimi-k2.6 to availableModels |
assutils.go |
6636a180 |
Add openrouter/google/gemini-2.5-flash to availableModels |
assutils.go |
83c48d26 |
Add openrouter/z-ai/glm-5.2 and openrouter/x-ai/grok-4.2-fast to availableModels |
assutils.go |
6f36e1e1 |
Update DefaultHighEndModel + SummaryModel; move Sasha/Murloc to glm-5.2 |
assutils.go, agent .md files |
cda308c1 |
Model updates for sysafe / sysadmin after critical panic fix |
assutils.go |
bcdc6235 |
Model tweaks |
assutils.go |
๐ Misc Fixes
| Commit |
Change |
Files |
cc38c5dc |
GitLab poller error logging + UniFi presence watchdog logging |
gitlab_poller.go, unifi |
2e9c1077 |
Resolve fatal error: sync: Unlock of unlocked RWMutex in GetVoiceStatsMonthly |
voice stats |
02b4c7d8 |
Enforce LF line endings + clean up .gitignore |
repo |
e9992a2d / ffa01040 |
Scheduler/heartbeat isolation (no blocking, goros + zombie ticker); Nikki den early-exit mitigations; LXC/service/check_alerts head limits; May-problems.md updates |
heartbeat, scheduler, May-problems.md |
9e56db1a / 88cddd34 |
Restore full May-problems.md and append 2026-06-17 refinements summary |
May-problems.md |
09cecacf |
Make some monitors fresh starts |
monitoring |
98ba426a |
Update scheduler DB task field for "Creative Playtime" entry with detailed autonomous prompt |
scheduler DB |
70201e9d |
Commit additional untracked files including ASSISTANT_AGENTIC_SYSTEM_REVIEW.md |
docs |
๐
May 18, 2026 - Model Migrations & Stability Fixes
Panic Recovery Overhaul
| Commit |
Change |
Files |
f56931b6 |
Add safeGo() panic recovery wrapper to all goroutines, SQLite WAL mode for scheduler DB |
heartbeat.go, scheduler.go |
Root cause: Any unhandled panic permanently kills heartbeat/scheduler goroutines with zero logging and zero recovery โ causing silent service degradation.
Changes applied:
safeGo() helper wraps all 18 heartbeat goroutines with recover() + debug.Stack() logging
- Main scheduler goroutine (
scheduler.go:665) and checkAndExecuteDueTasks() now have per-tick recover()
- SQLite WAL mode +
busy_timeout=5000 on scheduler DB (matches observability pattern)
Affected loops: telemetry, resumption, subagent cleanup, project/company/team managers, memory cleanup, playbook discovery, Nikki/Liz work loops, architect audits, midnight snapshot, notes fix, self-evolution, async cleanup, CCTV polling/overnight, GitLab monitor, security audit, financial anomaly, WoW pulse, free games
Model Migrations (GLM-4.7 โ GLM-5, Grok-4.3 for Nikki)
| Commit |
Change |
Files |
a2612db3 |
Migrate agents from GLM-4.7 to GLM-5, try grok-4.3 for Nikki |
assutils.go, agent .md files |
893ffd9b |
Update agent models to glm-5/grok-4, normalize playbook line endings |
prompts/agent/.md, playbooks/.json |
Nikki: openrouter/x-ai/grok-4.3 primary, fallback โ glm-5
All other agents: glm-5 (Lenore, Nova, Oracle, Sasha, Sysadmin, Sysafe, + 10 others)
Lia: glm-5-flash
7 playbooks: glm-4.7-flash โ glm-4.5-air:free
Context Overflow Detection
| Commit |
Change |
Files |
41536d47 |
Detect context length errors from llama-server 400 responses, trigger fallback chain (โ gemini-2.5-flash-lite) |
llama_client.go |
Added ErrContextOverflow sentinel in llama_client.go. Triggered from both ReAct loop and Single-Shot paths. Falls back to gemini-2.5-flash-lite on context exhaustion.
Heartbeat Tweaks
| Commit |
Change |
Files |
ff1b1a7e |
Murloc WoW pulse: 5h โ 24h interval, add isHostReachable('wow.dlan') check. BTC threshold 5%โ2% for earlier detection. Platform changed to 'whatsapp'. |
heartbeat.go |
110f51e5 |
Model name changes |
assutils.go |
Added isHostReachable() helper (1-ping, 3s timeout) for liveness checks.
WoW Health Check Playbook Fix
| Commit |
Change |
Files |
a70dee25 |
Fix dlan_health_check.json playbook: Step 2 (system_vitals) missing "command": "all", Step 3 (unifi_network) missing "command": "devices" |
assistant/playbooks/global/dlan_health_check.json |
Failing daily on the 9am scheduler run for 7+ consecutive days.
๐
May 17, 2026 - dMUD Command System Overhaul
Command Registry & Tags
| Commit |
Change |
Files |
f02f3b7c |
Dynamic command registry (commands_registry.go) with 60+ commands across 12 categories, admin alias manager, public /commands page |
dmud/commands_registry.go, dmud/commands.go, dmud/web_handlers.go |
ab88319a |
Add Tags field on all 60+ commands (mud, irc, warcraft, arcade, telnet, rpg, bbs, generic, discord), /whois, /topic, /ignore, /emote |
dmud/commands.go |
3239cc6b |
Fix missing tags, add 15 new commands (/shout, /yell, /motd, /nick, /inspect, /duel, /channel, /coin, /dance, /wave, /think, /flip, /weather, /rng, /yesno, /jimjoke) |
dmud/commands.go |
2c18478f |
Special-case 'back' in cmdGoto so /go back works |
dmud/commands.go |
abab0ee0 |
Fix WebSocket login capturing terminal control messages as usernames |
dmud/server.go |
c9494ea8 |
Strip terminal escape sequences from WebSocket login input |
dmud/server.go |
Admin UI Enhancements
| Commit |
Change |
Files |
0d74b3be |
Add Events tab, Activity monitor, room filter, enhance admin cards (item Type/Rarity badges, quest rewards preview) |
dmud/data/admin/index.html, dmud/web_handlers.go |
๐
May 10, 2026 - Web UI & Quest Refinements
Quest & Item System Refinements
| Commit |
Change |
Files |
ede8427b |
Enhance Items/Quests pages: Type/Rarity badges with color coding, effects boxes, wider cards |
dmud/web_handlers.go |
c531e95b |
Enhance quest admin UI: Create/Edit/Delete quest modal, chain filter, NPC/room/level badges |
dmud/data/admin/index.html |
a5667438 |
Per-user config, per-room config, quest chains (tutorial_welcome โ tutorial_first_chat โ tutorial_explore โ tutorial_game), web viewers for items/quests |
dmud/user.go, dmud/room.go, dmud/quest.go, dmud/web_handlers.go |
๐
May 9, 2026 - Tool System & OpenRouter Enhancements
Progressive Disclosure & Tool Guidelines
| Commit |
Change |
Files |
3cd6e03b |
Tools load with name + 120-char one-liner; full details via get_capabilities. Tool-use guidelines added (Execute Don't Describe, Direct Execution, No Preambles, Finish is Mandatory) |
assistant/assistant.go |
87e1bcad |
Enable OpenRouter prompt caching |
assistant/openrouter_client.go |
๐
May 6, 2026 - dMUD & Teams Stabilization
WoW Check & Notifications
| Commit |
Change |
Files |
f860ed15 |
Enable notifications for 447917134999 and add summary logging |
wowcheck.go |
f3eb8783 |
Ensure 447917134999 receives all summary types |
wowcheck.go |
b7c8467b |
Fix WoW check ensuring all summary types |
wowcheck.go |
656f8056 |
Update go.mod |
go.mod |
dMUD Partyline
| Commit |
Change |
Files |
5552d6b8 |
Add more dMUD design details |
dmud/ |
a97ff9d6 |
Thread safety for stats/gold/quests/items |
dmud/games.go, dmud.go |
37f4832f |
Race condition, case stripping, telnet backspace |
dmud/ |
9f2bcb4a |
Add Quests/Pets tabs, error handling |
dmud/ |
af17fc93 |
Type assertion safety in games.go |
dmud/games.go |
4335a4bd |
Modularize JSON persistence |
dmud/ |
1bed6b5e |
Admin Dashboard with User/Item CRUD |
dmud/ |
5e6dfdbc |
Phase 1 Admin Dashboard |
dmud/ |
Mail System
| Commit |
Change |
Files |
da66e766 |
Add mail system with /mail command |
mail.go, dmud/ |
Teams Module & Agent Fixes
| Commit |
Change |
Files |
f47a7bf0 |
Update heartbeat interval and specialist guardrails |
teams.go, heartbeat.go |
b051bf7a |
Critical fixes for system panics and team logic |
teams.go, agent_bridge.go |
e0745ad4 |
Model & Timeout Alignment |
llm_utils.go, adaptive_planner.go |
7e094c7b |
Circuit Breaker 300s, scheduler 20m timeout |
adaptive_planner.go, scheduler.go |
VB Tickets (Disabled)
| Commit |
Change |
Files |
5dc85518 |
Module disabled (SD+ API key required) |
vbtickets.go |
803dc9f3 |
New probe utility |
cmd/vbprobe/, vbtickets.go |
Wiki & Assistant Fixes
| Commit |
Change |
Files |
94085b5f |
JSON truncate repair for unclosed model responses |
assistant.go |
13b490b6 |
Resolve startup deadlock in loadSessions |
publicai/ |
25c7fcd1 |
Define substr template function |
discorddash/ |
1fd52840 |
Robustify JSON parsing for LLM outputs |
assistant.go |
8a1b25f7 |
UX improvements โ collapsible nav |
wikiserver/ |
๐
April 25, 2026 - Light Refresh Summary
Wiki Server Bug Fixes
| Commit |
Change |
Files |
740fb2c6 |
TOC ReferenceError fix + favicon |
wikiserver/static/js/wiki.js, wiki_server.go |
40a31627 |
404 panic, nil pointer, nav caching fixes |
wiki_server.go, wiki_navigation.go, wiki_renderer.go |
7d96b693 |
Navigation tree and .md link handling |
wiki.js, wiki_server.go |
5ef270fa |
Static asset path mismatch fix |
wiki_server.go |
GitLab & Heartbeat Optimization
| Commit |
Change |
Files |
2d21c25c |
GitLab push batching and cooldown logic |
gitlab_poller.go, heartbeat.go |
a2fc324f |
Quiet Hour Focus for Nikki/Lenore work loops |
heartbeat.go |
93d70316 |
Heartbeat interval optimization, quiet-hour throttling |
heartbeat.go |
e09aeb18 |
System tasks aligned to 8 AM schedule |
webserver.go |
Context & Token Optimization
| Commit |
Change |
Files |
b56baa59 |
Summarization timeout increased to 15 minutes |
conversation_intelligence.go |
f1b72bf8 |
Proactive compaction threshold 30k tokens |
assistant.go |
0d348ec0 |
Proactive and universal context compaction |
assistant.go |
Discord & Notifications
| Commit |
Change |
Files |
63cbca8b |
Discord channel notifications restored, telemetry prune |
ddiscord.go, dsysadmin.go |
4ab23e0c |
Gilfoyle switched to flash model |
prompts/agent/gilfoyle.md |
1f5ff7be |
Skip first interim Discord update |
- |
29f1daf6 |
Interim status handling for Discord |
- |
Playbook System
| Commit |
Change |
Files |
a9f3e540 |
Reduced iteration limits, free games playbook |
playbook.go |
08c13f5b |
Playbooks reorganized into agent directories |
- |
๐ฐ๏ธ Historical Evolution
- 2021-2023: Initial development as a Discord bot with various integrated packages (WoW, crypto, etc.). AI integration began with basic Claude and OpenAI wrappers.
- 2024-2025: Modularization into specialized packages. The core assistant framework started to take shape with the introduction of planning and task decomposition.
- January 2026:
- Claude Deprecation: The legacy
claude package was retired. All AI interactions, including WhatsApp and image analysis, now route through the centralized assistant and localai packages.
- Multimodal AI: WhatsApp image analysis migrated to use
localai.QueryOllamaMultimodal (Ollama/Llama-server).
- March 2026:
- Ollama to Llama Migration: A large-scale shift to use
llama-server for local LLM inference, while retaining Ollama for multimodal tasks.
- MrTool Implementation: Introduction of autonomous tool and skill creation for agents.
๐ Major Updates (April 2026)
1. Robustness & Stability
- Deadlock Fixes: A critical deadlock in the session logging system was resolved by standardizing lock orders.
- Zombie Cleanup: The
scheduler now features an automated cleanup for "zombie" tasks that were stuck in an 'executing' state due to system restarts.
- Nil Safety Audit: A comprehensive audit of all
defer calls and pointer accesses in the assistant module was completed to prevent nil pointer panics.
2. Monitoring & Observability
- JSONL Session Logs: Every agent session now writes its events (thinking, tools, results) into a structured
.jsonl file in real-time.
- Mission Control Fallback: Mission Control was updated to automatically read these JSONL files if the observability SQLite database becomes corrupted.
- Structured Audit Trails: All tool executions and agent decisions are logged with unique execution IDs to enable deep tracing and forensic analysis.
3. Intelligence Expansion & Agent Realignment
- New Specialized Agents:
- Murloc (WoW Shaman): Dedicated AzerothCore analyst using a hybrid SQL/SOAP bridge for real-time player and server intelligence.
- CommanderData (Ops Officer): Android disaster monitor tracking global telemetry (seismic, space weather, grid load, gov alerts).
- Security & Posture Shift: Responsibility for full perimeter security audits (LXC package/OS scanning) was moved to MrRobot to align with his paranoid guardian persona.
- Nightly Security Ritual: Coordinated audit where Gilfoyle (detecting pushes) summons SkriptKiddie (scanning CVEs) at 03:00 to analyze code changes.
- Adaptive Heartbeats: Expanded the heartbeat system to 18 concurrent loops, adding adaptive intervals (faster during day, slower at night) to optimize token usage.
4. Infrastructure & Tool Repairs
- CCTV Firmware Fix: Overhauled
cctv_monitor.go with a raw HTTP polling implementation to bypass a Reolink firmware bug causing unmarshalling failures.
- Tactical Suite Upgrades:
- RoboCop: Added
perimeter_event_summary and neighborhood_pulse (UK Police API).
- SkriptKiddie: Added
leak_check (HIBP) and shodan_infra_lookup.
- Lenore: Fully transitioned to Executive Guardian for Liz, equipped with London-Hosting "Business Sorcery" tools (WHMCS/Jira).
๐ Critical Fixes (April 2026, Continued)
1. WhatsApp LIDโJID Resolution
- Issue: Async delegation notifications failed because WhatsApp LID format wasn't being resolved to JID format.
- Fix: Implemented 3-tier fallback in
planner.go, scheduler.go, and wakeup.go:
- Direct ChatID use if already JID format
- Phone number extraction +
@s.whatsapp.net suffix
- Fallback to stored ZombieParent ChatID
- Files:
assistant/planner.go, assistant/scheduler.go, assistant/wakeup.go
2. Empty ChatID in ZombieParent Registration
- Issue: ZombieParent registration captured empty ChatID, breaking async notification delivery.
- Fix: Added fallback in
AsyncCallAgent() to use stored parent ChatID when current is empty.
- File:
assistant/planner.go
3. LLM Semaphore Timeout Handling
- Issue: Ollama requests cancelled while waiting for semaphore due to queue timeout overlap.
- Fix: Separate 30-minute queue timeout, reduced concurrent slots 5โ3 to prevent saturation.
- File:
assistant/ollama_client.go, assistant/llama_client.go
4. Reolink CCTV Search Parsing
- Issue: NVR returns object instead of array for certain queries, causing JSON unmarshal failures.
- Fix: Created
searchRecordings() wrapper that handles both object and array responses.
- File:
assistant/cctv_monitor.go
5. Playbook Placeholder Format
- Issue: Playbooks used
[From Step X] format which isn't recognized by substitution engine.
- Fix: Corrected 7 playbooks to use
{step_X_result} format.
- Files:
assistant/playbooks/*.json
6. Planner Session Reliability
- Issue: WhatsApp-initiated planner sessions failed because LLM returned empty/text responses without calling
get_capabilities.
- Fix:
ProcessReActLoop now forces get_capabilities for ALL planner sessions regardless of source.
- File:
assistant/planner.go
7. Shared Tools Full Definitions
- Issue:
get_capabilities returned only tool names, not full definitions.
- Fix:
GetSystemCapabilities now returns complete Tool structs.
- File:
assistant/assistant.go
8. dMUD Stability & Concurrency Overhaul (Phases A-D)
- Issue: The dMUD engine suffered from 50+ identified concurrency issues, leading to deadlocks during reconnection and panics in mini-games.
- Fixes (20 Applied):
- Phases A & B (Panic Prevention): Added nil guards to
Send() and CurrentRoom, fixed Blackjack empty deck panic, and implemented sync.Once for config watchers.
- Phase C (UsersMu - High Impact): Introduced
UsersMu RWMutex to the Room struct. This resolved data races in chat broadcasting, ambient rendering, and NPC script interactions by protecting the Users map.
- Phase D (Blocking & Deadlock Mitigation): Optimized the
Register() flow by moving bcrypt hashing outside of mutex locks, reducing global lock contention. Added non-blocking selects for internal save channels.
- Files:
dmud/room.go, dmud/user.go, dmud/server.go, dmud/config.go, dmud/games.go
- Result: Server-side panics and "session hangs" during multi-user interactions have been eliminated.
๐๏ธ Voice Pipeline & UI Overhaul (April 2026)
1. WhatsApp Voice Note Dual Output
- Issue: Voice note responses couldn't include image generation results; agent routing defaulted to "sysafe" instead of last-used agent.
- Fix:
- Added
Callback to voice QueryOptions so image generation results are delivered
- Added
GetLastUsedAgent() check before defaulting agent selection
- Added
SaveLastUsedAgent() call after voice responses for sticky agent persistence
- Files:
dwhatsapp/dwhatsapp.go
2. Lenore TTS Configuration
- Issue: Lenore agent had no TTS voice configuration, causing fallback to default voice.
- Fix: Added Lenore's Inworld voiceID (
Selene) to TTS config map and assutils.go voiceID registry.
- Files:
assistant/tts.go, assistant/assutils.go
3. TTS Sanitization
- Issue: Voice notes included raw emojis and markdown formatting, causing unnatural TTS output.
- Fix: Added
SanitizeForTTS() function that strips emojis, markdown, and code blocks before TTS synthesis.
- Files:
assistant/tts.go
4. Voice UI Kiosk Mode & Accessibility
- Issue: Voice UI (
voice.html, wake.html) wasn't optimized for tablet/kiosk use and lacked accessibility features.
- Fix:
- Added kiosk mode detection (
?kiosk=true&agent=xxx) with hidden controls and larger touch targets
- Added
aria-live regions for screen reader announcements
- Added responsive CSS for tablet/mobile layouts
- Changed hardcoded "Dan:" to "User:" in history display
- Files:
assistant/static/voice.html, assistant/static/voice.js, assistant/static/wake.html, assistant/static/wake.js
5. Lenore Theme & TTS Default Selector
- Issue: Lenore agent had no visual theme; TTS selector lacked "Agent Default" option.
- Fix:
- Added Lenore theme (Indigo/MediumPurple) to
AgentThemes map
- Added "Agent Default" TTS option that respects per-agent voice configuration
- Updated backend
nikki_voice.go to handle "default" TTS fallback
- Files:
assistant/nikki_voice.go, assistant/static/voice.js, assistant/static/wake.js
6. Canvas Blur Performance
- Issue: CSS
filter: blur() on canvas was GPU-intensive, causing performance issues on tablets.
- Fix: Moved blur effect from CSS filter to JavaScript rendering in
aura.js for better performance control.
- Files:
assistant/static/aura.js
๐ Major Updates (April 2026 - Continued)
5. IRC Platform Enhancements
- Automatic Channel Registration: Implemented ChanServ integration for automatic channel registration on join
- Personal Agent Channels: Each agent bot now has a personal channel for private communications
- Specialized Channels: Added #NOC (infrastructure metrics), #dBot (bot operations), and #Solana (blockchain monitoring)
- Intelligent Dynamic Topics: Channel topics now update automatically based on system state and agent activity
- Identity-Aware Message Processing: Fixed multiple reply issue by making message processing identity-aware
- ErgoIRCd Integration: Enhanced SASL/nickname handling and improved connection stability
- Log Throttling: Implemented log throttling to prevent message delivery hangs
- Operator Status: Master Dan automatically granted operator status on join
6. Context Optimization & Token Efficiency
- Active LLM Summarization: Implemented middle-out context compaction using active summarization for long sessions
- Tool Result Hashing: Added hashing to prevent redundant context bloat from repeated tool calls
- Prompt Reordering: Reordered prompts to maximize LLM prefix caching efficiency
- Conversation Summary Limits: Optimized truncation limits (3000 characters) for better context management
- Intelligent Task List Pruning: Implemented smart pruning for task list tool to reduce token usage
- Circuit Breaker: Extended circuit breaker to all adaptive planner LLM call sites with fallback loops
- Session Counter Reset: Reset session counters on new user message with 2s delay before LLM retries
7. Dual-Platform Notification System
- WhatsApp + Discord Dispatch: Unified notification routing to both platforms simultaneously
- Gilfoyle Nightly Ritual: Enhanced 3am Gilfoyle notifications with dual-platform support
- WHMCS Poller Integration: WHMCS ticket notifications now route to both WhatsApp and Discord
- Bulk WhatsApp Consolidation: Individual notifications consolidated into single bulk WhatsApp message
- Nova Response Capture: Explicit capture and routing of Nova's responses to WhatsApp groups
8. Discord HUD System Overhaul
- Message Splitting: Split delicious servers into separate HUD messages (UK/Enterprise staff)
- Public HUD Channel: Added public HUD channel with 10-minute refresh interval
- Persistent HUD Support: Message and embed edit wrappers for persistent HUD updates
- Interim Status Handling: Implemented interim status handling for Discord persona updates
- Telemetry Segmentation: Added specific telemetry segments for different HUD types
- Content Filtering: Public HUD channels filter sensitive data (Status/CPU/RAM/Load only)
- Cluster Isolation: Isolated delicious staff HUD and added sysafe_ldn cluster HUD
9. dMUD RPG System Expansion
- Profession System: Implemented Mining & Woodcutting professions with idle mechanics
- Wallet & Inventory: Added wallet commands, inventory management, and item persistence
- Pet System: Implemented pet auto-feed worker, pet seller NPC, and shop-aware
/pet buyfood
- NPC Logic Ecosystem: Full NPC triggers on
/use and /trade with Lua scripting
- RPG Dashboard: Real-time
/rpg dashboard with inventory and quest tracking
- Quest System: Quest acceptance script hooks, weekly quests, and Mayor/Guard quest NPCs
- Shop Functionality: Tavern shop with item purchasing and NPC interactions
- Multi-Room Zones: Expanded dLand into multi-room zones with proper navigation
10. Playbooks System
- Agent-Specific Directories: Reorganized playbooks into agent-specific directories (analyst, nova, nikki, etc.)
- Server Health Playbook: Automated Gadgetzan infrastructure health checks
- Standups Playbook: Daily London-Hosting standup automation with WHMCS/Jira integration
- SNOW Trend Reports: Daily ticket trend analysis and reporting
- Free Games Playbook: Daily free games briefing with Steam/Epic discovery
- Self-Evolution Pipeline: AI-generated playbook candidates with admin approval workflow
๐ค๏ธ The Roadmap ("God-Tier Upgrades")
The system continues to evolve toward "God-Tier" autonomy. Planned enhancements include:
- Logic Scalpel: Live intervention in agent reasoning via Mission Control.
- ACK Security Protocol: Human-in-the-loop confirmation for medium-risk infrastructure changes.
- Global Event Bus: A unified pub/sub architecture for all system-wide infrastructure events.
๐ Wiki Server Enhancements (April 25, 2026)
Wiki Server Launch
- Port 7779: Standalone documentation server (
wikiserver/wiki_server.go)
- Goldmark Renderer: Full GFM, Footnote, Table, Strikethrough, Linkify support
- Monokai Syntax Highlighting: Code blocks with chroma-based highlighting
- Navigation API: Dynamic sidebar tree from
/api/navigation
Enhanced Wiki Features (commit f187e7b8)
- Search: Client-side page search
- Table of Contents: Auto-generated from headings
- Theme Toggle: Light/dark mode switching
- Share Links: Copy-to-clipboard for page URLs
- Version History: 5 most recently modified pages (sorted by modTime)
- Back to Top: Smooth scroll button
- File Modified Date: Per-page "Last updated" timestamp
- Enhanced 404: Friendly error page with navigation
- Loading Skeleton: Visual feedback during page load
Wiki UX Improvements (commit 88d01408)
- Active Navigation: Highlight current page in sidebar
- Collapsible Sections: Expandable nav sections with animations
- Image Styling: max-width, borders, shadows, border-radius
- Page Transitions: Smooth fadeIn/fadeOut animations
- Lightbox: Full-screen image viewing
- External Links: CSS indicator (โ) for external URLs
- Mermaid.js: Client-side diagram rendering from code blocks
Bug Fixes (commit cfc7384f)
- Navigation Tree: Fixed index-based range to navigate actual tree nodes (nested directories now work)
- Version History: Fixed sorting to use modTime descending (most recent first)
- XSS Escaping: Added
esc() helper using template.HTMLEscapeString for all user-controlled strings
๐ Wiki Server Bug Fixes (April 25, 2026)
Navigation & Path Handling (commit 7d96b693, 40a31627)
- Navigation Tree Fix: Fixed critical index-based range bug in
addToTree() that prevented proper nested directory structure
- 404 Panic Fix: Added nil checks to prevent panics when handling non-existent pages
- Nil Pointer Fix: Fixed nil pointer dereference in nav cache initialization
- Nav Caching: Implemented proper navigation caching with invalidation on file changes
- .md Link Handling: Fixed relative path handling for internal wiki links
Static Asset Path (commit 5ef270fa)
- Path Mismatch Fix: Resolved static asset path issues causing missing CSS/JS files
- File Serving: Fixed proper serving of files from
wikiserver/static/ directory
TOC & UI Fixes (commit 740fb2c6)
- TOC ReferenceError: Fixed JavaScript ReferenceError in Table of Contents generation
- Favicon Addition: Added favicon for wiki branding
Wiki UX Improvements (commits 88d01408, cfc7384f)
- Active Navigation: Highlight current page in sidebar
- Collapsible Sections: Expandable nav sections with animations
- Image Styling: max-width, borders, shadows, border-radius
- Page Transitions: Smooth fadeIn/fadeOut animations
- Lightbox: Full-screen image viewing
- External Links: CSS indicator (โ) for external URLs
- Mermaid.js: Client-side diagram rendering from code blocks
- XSS Escaping: Added
esc() helper using template.HTMLEscapeString for all user-controlled strings
๐
May 27, 2026 - Stability Overhaul & Mission Control UI Refresh
Assistant Core Fixes
| Commit |
Change |
Files |
59808a6e |
Resolve panics, improve mutex contention, fix room configs |
assistant.go, planner.go |
6b01a175 |
Optimize model usage for stability |
conversation_intelligence.go, lenore.md |
Session & Persistence Overhaul
| Commit |
Change |
Files |
5543e088 |
Per-ChatSession persistence worker (Option B) - async DB writes with per-session queue |
assistant/chat_persistence.go, assistant.go, scheduler.go |
6d73bdc8 |
Guaranteed early exit logging + increased TryLock retries + delegation completed log |
assistant/planner.go |
58811645 |
Increase planner TryLock retries + default response for Partner on restricted agents |
assistant/planner.go |
4e89d1c3 |
Guarantee completion logging and cleanup for call_agent |
planner.go, adaptive_planner.go |
Chat Persistence Architecture:
- Per-
ChatSession worker goroutine with dedicated SQLite queue
- Eliminates global DB contention by serializing writes per-session
- Background writes prevent main session loop blocking
AppendMessage truncates get_capabilities calls for background tasks (40k token budget)
Concurrent Session & Mutex Improvements
| Commit |
Change |
Files |
20237c7a |
TryLock in cleanup goroutine to prevent mutex starvation |
planner.go |
a58b20c3 |
Replace blocking mutex Lock() with TryLock+retry in register/deregister |
planner.go |
ceedbad8 |
Goroutine stack dump when mutex TryLock fails |
planner.go |
fb5a47ca |
Detailed debug logging to cleanup goroutine |
planner.go |
a7e289c5 |
Make PlannerSession.Cleanup() async to prevent AB-BA deadlock |
planner.go |
8c3ab5aa |
Eliminate cleanup mutex deadlock |
planner.go |
Mission Control Dashboard Refresh
| Commit |
Change |
Files |
17510d9a |
Implement new Dashboard landing page with mission_control_dashboard.js |
missioncontrol.go, mission_control.html |
e624a6b5 |
Migrate Dashboard, Kanban, Server views to active Go templates (HTML deleted) |
templates/missioncontrol/*, mission_control.html |
fcbbc8f8 |
Redesign Servers tab to 3-column layout, polish NOC stream |
missioncontrol.go |
74a2c732 |
Redesign Kanban taskboard to horizontal scroll layout |
missioncontrol.go |
Go Template Migration:
- Dashboard, Kanban, Servers tabs migrated from static HTML to Go
html/template package
tab_dashboard.html, tab_servers.html, tab_tasks.html in assistant/templates/missioncontrol/
- Reduces static HTML from ~930 lines, enables dynamic data injection at render time
FreshSession Feature (Full Implementation)
| Commit |
Change |
Files |
c8e474bb |
Add FreshSession bool to QueryOptions, update scheduler to respect FreshSession, wakeup uses FreshSession=true |
heartbeat.go, scheduler.go, planner.go |
38326b48 |
FreshSession for Architect audits, upgrade mrrobot/architect/lenore/lia off GLM-5 |
architect.go, agent .md files |
6ba38881 |
FreshSession for WHMCS alerts + audit history trim |
heartbeat.go, nova.go |
fresh_session column added to scheduled_tasks table
- Background tasks (heartbeat, scheduler) now use
FreshSession=true for clean slate
- Architect audits use FreshSession for independent analysis
Model Migrations (May 19-20)
| Commit |
Change |
Files |
23550ce4 |
Nova primary โ llama/qwen3:8b, fallback โ llama/qwen3:30b. Architect fallback โ llama/qwen3:30b (was deepseek-r1:14b). Replaced ministral โ llama/qwen3:30b |
assutils.go, agent .md files |
a2612db3 |
Migrate agents from GLM-4.7 to GLM-5, try grok-4.3 for Nikki |
assutils.go, agent .md files |
893ffd9b |
Update agent models to glm-5/grok-4, normalize playbook line endings |
prompts/agent/.md, playbooks/.json |
5d3d2db7 |
Downgrade nova/mrrobot/architect off 30b due to llama-server load failures |
assutils.go |
f8998f01 |
Fix planner deadlock, migrate EOL nvidia/z-ai/glm5 |
planner.go, assutils.go |
5705f21d |
Migrate remaining glm-4.7-flash model overrides to glm-4.5-air:free |
playbooks/*.json |
Current Model Configuration:
- Nikki: openrouter/x-ai/grok-4.3 primary, fallback glm-5
- Nova: llama/qwen3:8b primary, llama/qwen3:30b fallback
- Architect: llama/qwen3:30b (primary and fallback)
- Lenore/Lia: glm-5 / glm-5-flash
- All other agents: glm-5 or glm-4.5-air:free
Heartbeat Enhancements
| Commit |
Change |
Files |
2a2db148 |
Add daily run guards to nightly_security and cctv_overnight |
heartbeat.go |
cbd6bab6 |
Add initialization logs to remaining loops + daily run guard |
heartbeat.go |
fb12b739 |
Add explicit state transition logging to wakeup |
wakeup.go |
17be4c83 |
Widen free_games window + add initialization logging to key loops |
heartbeat.go |
e43f5e34 |
Add detailed initialization and trigger logging to heartbeat loops |
heartbeat.go |
dd7a7c7a |
Phase C data race fixes |
(multiple files) |
dfd88224 |
Move daily run guard variables to function scope |
heartbeat.go |
Daily Run Guards:
- Prevents re-execution within same 24h period for:
nightly_security, cctv_overnight
- Variables moved to function scope to prevent state leakage across restarts
Context Overflow Detection & Fallback Chain
| Commit |
Change |
Files |
41536c47 |
Detect context length errors from llama-server 400 responses, trigger fallback chain |
llama_client.go |
e8f4da9b |
Non-blocking summarization, 40k compaction threshold, remove tool dedup |
assistant.go, conversation_intelligence.go |
Context Overflow Flow:
- llama-server returns 400 with context length error
ErrContextOverflow sentinel detected in llama_client.go
- Falls back to
gemini-2.5-flash-lite
- If all models exhausted, session fails gracefully with detailed error
Wakeup & Scheduler Resilience
| Commit |
Change |
Files |
d4359af0 |
Add retry logic with fallback handling for LLM calls in wakeup, scheduler, heartbeat |
wakeup.go, scheduler.go, heartbeat.go |
24073eba |
Make RecordSession async to prevent SQLite contention deadlock |
assistant.go |
f56931b6 |
Add panic recovery to all goroutines, WAL mode for scheduler DB |
heartbeat.go, scheduler.go |
Teams Module Improvements
| Commit |
Change |
Files |
a459f323 |
Add cache and resilience to team agents loader |
assutils.go, missioncontrol.go |
- Team agent metadata cached to prevent repeated file reads
- Fallback on cache miss for continued operation during file issues
Heartbeat Model & Alert Threshold Changes
| Commit |
Change |
Files |
ff1b1a7e |
WoW pulse: 5hโ24h interval, add isHostReachable('wow.dlan') check. BTC threshold 5%โ2%. Platform โ whatsapp |
heartbeat.go, wowcheck.go |
a70dee25 |
Fix dlan_health_check.json playbook: missing command fields on system_vitals and unifi_network steps |
playbooks/*.json |
๐
May 18, 2026 - Model Migrations & Stability Fixes