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.
π
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
See Go Backend Overview for current system state.