What's Changed
- build(deps): bump qs from 6.14.0 to 6.15.0 in /.mcp in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1387
- build(deps): safe dependency bumps (cherry-picked from #1388) by @mrveiss in #1393
- feat(i18n): prompt language injection for all agents (#1327) by @mrveiss in #1395
- build(deps): remaining security bumps from #1388 by @mrveiss in #1398
- fix: resolve orphaned work from Dev_new_gui (#1386) by @mrveiss in #1399
- feat(i18n): wire TranslationAgent to chat tool shortcuts (#1328) by @mrveiss in #1400
- feat(voice): STT multilingual + Whisper airgapped fallback (#1329) by @mrveiss in #1409
- fix(i18n): replace hardcoded title strings in KnowledgeUpload.vue (#1410) by @mrveiss in #1412
- feat(i18n): language switcher component in Settings (#1330) by @mrveiss in #1413
- fix(tts): normalize audio to 90% peak for consistent volume (#1394) by @mrveiss in #1414
- feat(secrets): system secrets management (#1417) by @mrveiss in #1419
- feat(voice): TTS voice-per-language mapping in personality profiles (#1333) by @mrveiss in #1422
- feat(browser): interactive browser control with click/scroll/type/hover (#1416) by @mrveiss in #1423
- feat(templates): community template descriptions, secrets metadata, and UI (#1415) by @mrveiss in #1424
- feat(analytics): sequential scan runner, progress tracking, bug prediction batching (#1418) by @mrveiss in #1426
- fix(frontend): correct knowledge index endpoint in CodebaseAnalytics (#1421) by @mrveiss in #1427
- feat(voice): language awareness in voice conversation pipeline (#1334) by @mrveiss in #1428
- fix(chat): LangGraph checkpointer + ConfigManager model method (#1433) by @mrveiss in #1434
- feat(approval): add approval gates for agent workflows (#1402) by @mrveiss in #1437
- feat(llm): formal adapter registry for LLM backends (#1403) by @mrveiss in #1438
- fix(approval): add auth, input validation, and security hardening (#1402) by @mrveiss in #1441
- fix(wizard): filter active roles and add infra vars to dynamic inventory (#1431) by @mrveiss in #1442
- feat(i18n): add translated locale files for 6 languages (#1335) by @mrveiss in #1445
- fix(analytics): fix bug prediction display filter and raise file limit (#1430) by @mrveiss in #1444
- fix(wizard): filter active roles and add infra vars to dynamic inventory (#1431) by @mrveiss in #1446
- build(deps): bump cryptography 46.0.5 and pillow 12.1.1 by @mrveiss in #1447
- build(deps): bump MCP SDK to 1.26.0 (security fix) by @mrveiss in #1448
- perf(i18n): guard usePreferences init to run once (#1502) by @mrveiss in #1546
- build(deps): bump the npm_and_yarn group across 7 directories with 13 updates by @dependabot[bot] in #1560
- refactor(analytics): decompose CodebaseAnalytics.vue into sub-components (#1469) by @mrveiss in #1576
- feat(chat): add TTL to LangGraph Redis checkpoints by @mrveiss in #1582
- security(deps): replace python-jose with PyJWT (#1575) by @mrveiss in #1590
- chore(deps): generate uv.lock for knowledge-base-mcp (#1578) by @mrveiss in #1591
- feat(i18n): re-land RTL layout support + ar.json + RTL tests by @mrveiss in #1593
- feat(i18n): translate knowledge.* keys, common/nav, and add he/fa/ur locales by @mrveiss in #1595
- security(deps): migrate LangChain ecosystem to 1.x (#1572) by @mrveiss in #1596
- chore(docs): document subagent Bash permission constraints (#1580) by @mrveiss in #1594
- chore(docs): warn against isolation:worktree for PR-creating agents (#1597) by @mrveiss in #1599
- fix(deploy): install pip/npm deps during code-sync (#1603) by @mrveiss in #1609
- feat(slm): detect crash-looping services and degrade node status (#1604) by @mrveiss in #1610
- fix(slm): code_status reflects service health (#1605) by @mrveiss in #1615
- refactor(analytics): extract 6 oversized functions (#1588) by @mrveiss in #1619
- fix(deploy): run Alembic migrations during code-sync (#1608) by @mrveiss in #1620
- fix(slm): add pip install and frontend build to self-sync path (#1607) by @mrveiss in #1617
- fix: dead code removal + wire missing integrations (#1612, #1613, #1614) by @mrveiss in #1621
- fix(slm): widen code_status column to VARCHAR(50) (#1622) by @mrveiss in #1625
- fix(ansible): sync slm_agent role with canonical agent code (#1623) by @mrveiss in #1626
- feat(analytics): shared getCssVar composable + wire uniqueEndpoints (#1602) by @mrveiss in #1627
- fix(slm): fix frontend ownership before npm build in self-sync (#1624) by @mrveiss in #1628
- fix(ansible): deploy gaps — SLM migrations, shared ownership, NPU health, drift CI by @mrveiss in #1634
- refactor(analytics): migrate scoped CSS to 8 extracted panels (#1589) by @mrveiss in #1639
- fix(ansible): replace hardcoded IPs in update-all-nodes.yml (#1636) by @mrveiss in #1642
- fix(chat): eliminate set_chat_context race on singleton (#1641) by @mrveiss in #1643
- fix(deps): dependency compatibility sweep — llama-index, transformers, numpy 2.x, fastapi by @mrveiss in #1644
- fix(config): use SSOT URL properties in voice tests (#1618) by @mrveiss in #1646
- fix(config): add TTS worker URL/port to ssot_mappings (#1648) by @mrveiss in #1649
- chore(ci): auto-close issues for PRs merged to Dev_new_gui by @mrveiss in #1652
- fix(hooks): worktree branch guard prevents stash corruption (#1654) by @mrveiss in #1657
- refactor(frontend): shared CSS utils composable (#1606, #1647) by @mrveiss in #1658
- fix(ci): resolve dep conflicts and split requirements into roles (#1655) by @mrveiss in #1662
- deps: raise numpy lower bound to >=2.0.0 in 7 satellite files by @mrveiss in #1668
- refactor(frontend): migrate 4 arrow-function getCssVar to shared composable (#1666) by @mrveiss in #1669
- feat(i18n): browser locale auto-detection with Arabic support by @mrveiss in #1672
- fix(i18n): RTL tests exercise real setLocale, not mock copy by @mrveiss in #1673
- fix(hooks): branch guard to prevent stash-induced branch switches by @mrveiss in #1676
- chore(ci): upgrade GitHub Actions to Node.js 24 runtime (#1664) by @mrveiss in #1678
- fix(vllm): replace removed destroy_model_parallel with 0.8+ cleanup (#1571) by @mrveiss in #1680
- fix(prompts): add doc-first safeguard to 3 intent context files (#1517) by @mrveiss in #1681
- cleanup(frontend): remove dead defineExpose({ getCssVar }) (#1671) by @mrveiss in #1682
- feat(frontend): add routes for 11 analytics dashboard components (#1677) by @mrveiss in #1688
- fix(hooks): wrap pre-commit with branch guard at git hook level by @mrveiss in #1693
- feat(i18n): bulk translate ~3,200 keys across 6 locales (#1555) by @mrveiss in #1694
- fix(hooks): serialize worktree commits via flock (#1684) by @mrveiss in #1696
- chore(docs): worktree --unset-upstream to prevent PR bypass (#1695) by @mrveiss in #1698
- Chore/context7 verification by @mrveiss in #1703
- fix(hooks): fix flock deadlock, fallback anchor, permissions pattern (#1699, #1700) by @mrveiss in #1704
- fix(knowledge): align score_threshold defaults to 0.3 (#1532) by @mrveiss in #1722
- fix(code-intel): enforce TTL check in _learn_bug_patterns_async (#1563) by @mrveiss in #1723
- fix(knowledge): add _LOAD_FAILED sentinel to get_cross_encoder (#1562) by @mrveiss in #1724
- fix(analytics): normalize endpoints and bound api_frequencies (#1554) by @mrveiss in #1727
- fix(knowledge): wire up query_cache in AdvancedRAGOptimizer (#1548) by @mrveiss in #1728
- feat(knowledge): add POST /reindex_with_context endpoint (#1513) by @mrveiss in #1735
- fix(codebase): persist indexing queue to Redis (#1717) by @mrveiss in #1736
- fix(security): deploy service auth keys via Ansible setup + safe rotation (#1734) by @mrveiss in #1739
- feat(config): config audit trail with versioning and rollback (#1404) by @mrveiss in #1740
- fix(knowledge): break long line to satisfy E501 (#1737) by @mrveiss in #1741
- feat(agents): agent org charts with role hierarchy (#1405) by @mrveiss in #1745
- fix(security): correct Redis key prefix in validate-service-auth.sh (#1742) by @mrveiss in #1750
- fix(security): add authentication to knowledge_vectorization endpoints (#1738) by @mrveiss in #1755
- feat(processes): process adapters for background task decomposition (#1406) by @mrveiss in #1746
- fix(security): move emergency admin password hash to Ansible Vault (#1743) by @mrveiss in #1758
- fix(ansible): replace hardcoded IPs with inventory vars in deploy-full.yml (#1744) by @mrveiss in #1762
- refactor(knowledge): make ContextGeneratorCognifier.is_enabled() public (#1760) by @mrveiss in #1763
- feat(knowledge): add GET /reindex_with_context/status endpoint (#1761) by @mrveiss in #1764
- fix(ansible): replace 36 hardcoded IPs in 13 playbooks (#1766) by @mrveiss in #1767
- feat: wire backend services and add delegation (#1747, #1748, #1751, #1753, #1754) by @mrveiss in #1773
- feat(slm): agent admin panels — org chart, config history, process monitor (#1404, #1405, #1406) by @mrveiss in #1775
- fix(frontend): normalize _backendWaitTimer field initialization (#1519) by @mrveiss in #1776
- fix(analytics): remove dead api_call_tracker code (#1731) by @mrveiss in #1778
- fix(rag): add max size limit to query_cache (#1732) by @mrveiss in #1783
- fix(analytics): update stale directory paths in pattern_extractor (#1725) by @mrveiss in #1784
- fix(middleware): register LLMAwarenessMiddleware (#1768) by @mrveiss in #1785
- fix: resolve 3 gaps — auth token, recursive tree, WebSocket streaming (#1777, #1779, #1780) by @mrveiss in #1786
- fix(hooks): add 120s timeout to flock serialization (#1765) by @mrveiss in #1787
- fix(audit): handle asyncio.create_task() from sync context (#1568) by @mrveiss in #1788
- fix(workflow): re-enable POST /api/workflow/execute (#1770) by @mrveiss in #1790
- fix(tests): update stale autobot-user-* paths in test files (#1796) by @mrveiss in #1799
- fix(nginx): inject X-Internal-API-Key into /autobot-api proxy (#1791) by @mrveiss in #1798
- refactor(i18n): derive SUPPORTED_LOCALES from locale file glob (#1675) by @mrveiss in #1810
- test(i18n): add unit tests for detectBrowserLocale (#1674) by @mrveiss in #1811
- fix(frontend): restore backend-wait polling after max reconnects (#1795) by @mrveiss in #1813
- feat(docker): fresh containerization for current codebase (#1809) by @mrveiss in #1818
- chore: rename claude_agent_service.py to specialized_agent_service.py (#1819) by @mrveiss in #1832
- docs: verify LangChain 1.x import compatibility (#1600) by @mrveiss in #1837
- test: add unit tests for SpecializedAgentService (#1821) by @mrveiss in #1833
- fix: no-direct-redis hook — eliminate false positives on comments/docstrings (#1829) by @mrveiss in #1834
- chore(i18n): extract hardcoded strings in AgentRegistryView.vue (#1820) by @mrveiss in #1838
- refactor: replace deprecated asyncio.get_event_loop() across backend (#1752) by @mrveiss in #1839
- fix(security): add path traversal validation to session_id (#1825) by @mrveiss in #1840
- fix(backend): classify security updates by repo origin (#1827) by @mrveiss in #1841
- fix(devops): use Python tokenize in no-direct-redis hook (#1829) by @mrveiss in #1842
- fix(frontend): resolve 11 TypeScript type errors in analytics panels (#1665) by @mrveiss in #1843
- fix(ci): remove continue-on-error from backend code quality checks (#1848) by @mrveiss in #1849
- fix: update test import path after agent service rename (#1846) by @mrveiss in #1850
- fix: check analysis keywords before implementation in _categorize_agent (#1844) by @mrveiss in #1851
- fix(backend): detect Ubuntu Pro ESM security updates (#1847) by @mrveiss in #1852
- chore: add deprecation warnings for langchain_community OllamaEmbeddings fallback (#1845) by @mrveiss in #1853
- fix(ci): remove || echo patterns that silently swallow failures (#1855) by @mrveiss in #1859
- fix: use per-node service list in apply-system-updates verification (#1828) by @mrveiss in #1860
- fix(backend): resolve installed version for ESM packages (#1856) by @mrveiss in #1863
- fix: use AUTOBOT_BASE_DIR for CompletionTrainer model_dir (#1857) by @mrveiss in #1864
- fix(ci): remove || echo from frontend-test.yml test steps (#1867) by @mrveiss in #1868
- fix(ci): remove || echo patterns from frontend test steps (#1855) by @mrveiss in #1869
- fix: rename SLM admin users table to resolve user_mfa FK mismatch (#1854) by @mrveiss in #1872
- refactor(i18n): derive RTL_LOCALES from locale file _meta.dir (#1812) by @mrveiss in #1873
- fix(backend): use AUTOBOT_BASE_DIR for CompletionTrainer model_dir (#1857) by @mrveiss in #1874
- fix(ci): remove continue-on-error from code-quality.yml checks (#1870) by @mrveiss in #1881
- fix(backend): lazy-import config_manager to break circular import (#1862) by @mrveiss in #1883
- fix(backend): lazy-init LLMFailsafeAgent to prevent import-time crash (#1858) by @mrveiss in #1885
- feat(docker): Ubuntu 22.04 + Python 3.12 Docker stack by @mrveiss in #1886
- fix(testing): fix pytest.ini testpaths and add directory exclusions (#1865) by @mrveiss in #1887
- fix: add noqa: redis to NPU worker standalone Redis instantiation (#1793) by @mrveiss in #1888
- refactor: extract helpers from infra scripts exceeding 65-line limit (#1792) by @mrveiss in #1890
- fix: persist SLM SECRET_KEY/ENCRYPTION_KEY to data/.slm_keys (#1726) by @mrveiss in #1894
- feat: add timeout + granular error mapping to chat processing (#1797) by @mrveiss in #1899
- fix: check monitored services only for node code_status (#1709) by @mrveiss in #1901
- fix(ci): remove continue-on-error from code-quality.yml checks (#1870) by @mrveiss in #1905
- refactor(infra): standardize Python to deadsnakes PPA + venv (#1898) by @mrveiss in #1920
- fix(backend): break model_constants circular import (#1882) by @mrveiss in #1914
- fix(testing): add pythonpath to pytest.ini for reliable test collection (#1884) by @mrveiss in #1915
- fix(frontend): remove hardcoded SLM IP, use /slm proxy path (#1875) by @mrveiss in #1916
- fix(backend): replace nonexistent require_auth with get_current_user (#1880) by @mrveiss in #1917
- fix(backend): replace datetime.UTC with timezone.utc for Python 3.10 (#1889) by @mrveiss in #1918
- fix: correct _PROJECT_ROOT path for Docker in conversation_file_manager (#1861) by @mrveiss in #1919
- fix: use db_service.session() instead of get_session() in a2a_card_fetcher (#1876) by @mrveiss in #1913
- refactor(slm): consolidate User models to single UUID-PK (#1900) by @mrveiss in #1921
- chore(infra): rename setup-runner-pyenv.sh + legacy cleanup (#1924) by @mrveiss in #1931
- fix(knowledge): lazy-load heavy deps to fix pipeline test imports (#1514) by @mrveiss in #1929
- fix(slm): fleet sync startup reconciliation + concurrent guard (#1729, #1730) by @mrveiss in #1928
- fix(slm): add ansible_name column for proper Ansible targeting (#1814) by @mrveiss in #1932
- fix(docker): resolve 8 Docker deployment bugs by @mrveiss in #1926
- fix(security): harden VNC to require password authentication (#1939, #1940) by @mrveiss in #1941
- feat(docker): resource limits + production hardening (#1897) by @mrveiss in #1930
- feat(docker): add optional TLS/HTTPS support (#1896) by @mrveiss in #1934
- feat(docker): add dev override for hot-reload (#1911) by @mrveiss in #1935
- fix(backend): expand GPU detection beyond RTX to all vendors (#1959) by @mrveiss in #1989
- fix(backend): read AUTOBOT_OLLAMA_ENDPOINT before OLLAMA_HOST fallback (#1963) by @mrveiss in #1991
- fix(infra): add dependabot.yml for dependency update monitoring (#1938) by @mrveiss in #1992
- feat(models): VRAM-aware model selection — prevent OOM (#1966) by @mrveiss in #1993
- fix(slm): add fleet sync guard to schedule and executor paths (#1979) by @mrveiss in #1995
- fix(hardware): real OpenVINO detection replacing placeholder (#1950) by @mrveiss in #1996
- fix(docker): add missing autobot_users database to init script (#1981) by @mrveiss in #2001
- fix(slm): auto-populate ansible_name from heartbeat hostname (#1986) by @mrveiss in #1997
- fix(costs): update MODEL_PRICING with 2025-2026 models (#1961) by @mrveiss in #1999
- fix(analytics): fix stale paths + silent error hiding after restructure (#1712) by @mrveiss in #2002
- fix(docker): add dev entrypoint scripts to fix bind mount issues (#1985) by @mrveiss in #2006
- feat(perf): experiment tracker, pipeline profiler, cache benchmark (#1988) by @mrveiss in #2008
- fix(slm): wire fleet sync concurrent guard into schedule paths (#1979) by @mrveiss in #2009
- fix(models): VRAM-aware memory estimation to prevent OOM (#1966) by @mrveiss in #2007
- feat(search): add context tracker for multi-step retrieval (#2005) by @mrveiss in #2019
- feat(search): add query complexity classifier (#1719) by @mrveiss in #2018
- feat(search): configurable reranker blend weights (#2004) by @mrveiss in #2020
- fix(backend): update LLM pricing, add staleness check + pattern fallback (#1961) by @mrveiss in #2010
- feat(search): upgrade keyword search to BM25 scoring (#1720) by @mrveiss in #2021
- feat(rag): emit retrieval feedback events (#1516) by @mrveiss in #2023
- feat(mesh): add edge sync service (#2029) by @mrveiss in #2039
- feat(pipeline): add RAPTOR recursive clustering summarizer (#2027) by @mrveiss in #2040
- feat(pipeline): add MeshSeeder loader (#2028) by @mrveiss in #2041
- feat(pipeline): add NLP-light relationship extraction (#2026) by @mrveiss in #2042
- fix(deps): add spacy + scikit-learn for Neural Mesh RAG (#2043) by @mrveiss in #2048
- feat(pipeline): add NLP-light entity extraction (#2025) by @mrveiss in #2036
- feat(rag): integrate complexity classifier into feedback hook (#2024) by @mrveiss in #2038
- fix(hardware): check correct key in NPU selection (#2022) by @mrveiss in #2054
- fix(cost): use deterministic model matching in cost tracker (#2030) by @mrveiss in #2061
- fix(model): compare model memory against GPU VRAM instead of system RAM (#2015) by @mrveiss in #2063
- fix(rag): forward rerank_weights from config to reranker (#2034) by @mrveiss in #2075
- fix(rag): separate pre-rerank and post-rerank IDs in feedback (#2035) by @mrveiss in #2078
- fix(pipeline): use chunk_id as canonical node ID in MeshSeeder (#2050) by @mrveiss in #2062
- feat(pipeline): add SIMILAR_TO cosine edges to MeshSeeder (#2049) by @mrveiss in #2065
- feat(pipeline): wire RAPTOR build_raptor_tree into process() (#2051) by @mrveiss in #2074
- fix(search): trigger BM25 corpus stats recomputation on KB changes (#2033) by @mrveiss in #2070
- security: fix sensitive data logging/storage CodeQL alerts (#1721) by @mrveiss in #2069
- security: fix critical injection CodeQL alerts (#1721) by @mrveiss in #2080
- fix(frontend): align KnowledgeBaseStatus type with backend response (#2073) by @mrveiss in #2086
- fix(frontend): wire LiveEventService into app startup (#2064) by @mrveiss in #2084
- fix(frontend): unify ChatMessage type definitions (#2066) by @mrveiss in #2088
- fix(frontend): align ServiceStatus with backend health enum (#2076) by @mrveiss in #2093
- fix: replace ShareKnowledgeDialog mock data with user search API (#2072) by @mrveiss in #2087
- security: fix stack trace exposure CodeQL alerts (#1721) by @mrveiss in #2089
- feat(mesh): add PostgreSQL mesh schema and async MeshDB client (#2055) by @mrveiss in #2108
- feat(mesh): add EdgeLearner — Hebbian reinforcement (#2056) by @mrveiss in #2099
- feat(mesh): add PersonalizedPageRank for graph expansion (#2057) by @mrveiss in #2104
- feat(mesh): add NeuralMeshRetriever — unified mesh-aware retrieval (#2058) by @mrveiss in #2114
- feat(rag): add mesh feature flags and RAGService integration (#2059) by @mrveiss in #2112
- fix(security): add backward-compat dual-check for HMAC API key migration (#2083) by @mrveiss in #2123
- fix(search): use Redis EXISTS for BM25 lazy recompute sentinel (#2082) by @mrveiss in #2124
- fix(search): single BM25 recompute after bulk_delete instead of N (#2079) by @mrveiss in #2125
- fix(analytics): remove dead _store_problem_to_chromadb with unawaited coroutine (#2017) by @mrveiss in #2126
- fix(rag): use mean-pooled embeddings for RAPTOR L1+ instead of random (#2044) by @mrveiss in #2127
- feat(mesh): add EdgeDiscoverer — LLM relationship naming (#2117) by @mrveiss in #2129
- feat(mesh): add MeshPruner — weekly entropy control (#2118) by @mrveiss in #2130
- feat(mesh): add NodePromoter — daily anchor emergence (#2119) by @mrveiss in #2131
- feat(mesh): add MeshBrainScheduler + health API (#2120) by @mrveiss in #2132
- fix(tracker): cap experiment Redis list at 10k entries (#2031) by @mrveiss in #2142
- fix(rag): align relationship extractor threshold to chunk count (#2052) by @mrveiss in #2144
- fix(nodes): use stable identifier for node_id hash fallback (#1936) by @mrveiss in #2146
- fix(frontend): add missing navigation links for registered routes (#2071) by @mrveiss in #2100
- fix: add placeholder states for Code Intelligence findings (#2068) by @mrveiss in #2107
- feat: add batch vectorization endpoint (#2077) by @mrveiss in #2106
- security: fix path injection CodeQL alerts (#1721) by @mrveiss in #2101
- feat(mesh): add QueryDecomposer — MA-RAG multi-hop (#2134) by @mrveiss in #2147
- feat(mesh): add AgentTopology — dynamic DAG (#2137) by @mrveiss in #2149
- feat(mesh): add EvidenceExtractor — sentence-level precision (#2135) by @mrveiss in #2150
- fix(agents): wire AgentRouter to read TaskPatternLearner strategies (#2105) by @mrveiss in #2158
- feat(mesh): topology-aware routing + agent specialization (#2138) by @mrveiss in #2151
- feat(mesh): add A-RAG autonomous strategy selection (#2136) by @mrveiss in #2156
- fix(security): remove str(e) from batch vectorize error response (#2173) by @mrveiss in #2188
- perf(mesh): vectorize SIMILAR_TO edge extraction with numpy (#2081) by @mrveiss in #2189
- fix(reports): use PROJECT_ROOT for data_base path (#2163) by @mrveiss in #2190
- fix(rag): skip diversity filter when reranking enabled (#2103) by @mrveiss in #2191
- fix(rag): handle abbreviations in sentence splitter (#2170) by @mrveiss in #2192
- fix(workflow): warn when unsupported condition nodes are dropped on save (#2182) by @mrveiss in #2185
- fix(scheduler): implement real dependency checking in WorkflowQueue (#2180) by @mrveiss in #2187
- fix(orchestration): add circuit breaker and parallel step execution (#2168, #2172) by @mrveiss in #2197
- fix(mesh): clean stale Redis entries on edge sync (#2053) by @mrveiss in #2183
- fix(orchestration): wire WorkflowExecutor into scheduler startup (#2166) by @mrveiss in #2201
- feat(db): Alembic migration for agent topology tables (#2177) by @mrveiss in #2184
- feat(mesh): implement MeshDB Pruner/Promoter methods (#2178) by @mrveiss in #2186
- feat(mesh): AgentTopology pruning + last_updated (#2167) by @mrveiss in #2193
- fix(mesh): abbreviation-safe sentence splitting in EvidenceExtractor (#2170) by @mrveiss in #2199
- fix(rag): consume feedback streams with cursor tracking (#2102) by @mrveiss in #2179
- fix(ci): make Code Quality workflow fully green (#2128) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2164
- fix(slm): add tablename collision check for dual SQLAlchemy bases (#1878) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2205
- fix(slm): remove stale SQLite references, use PostgreSQL in bootstrap (#1815) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2198
- fix(chat): stop silently swallowing exceptions in load_session (#1906) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2176
- refactor(tests): migrate legacy redis_client imports to autobot_shared (#2047) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2171
- refactor(gpu): cache vendor detection to avoid duplicate subprocess calls (#1990) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2221
- refactor(auth): deduplicate SLM login endpoints (#1922) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2223
- refactor(frontend): decompose CodebaseAnalytics.vue (#1469) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2225
- refactor(gpu): reuse nvidia-smi GPU name and handle multi-GPU (#2222) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2237
- refactor(auth): remove dead AuthService.authenticate_user() (#2227) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2231
- refactor(orchestrator): consolidate overlapping orchestrators (#2181) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2233
- fix(auth): restore user_type field in /me response (#2241) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2250
- fix(auth): add audit log for MFA challenge path (#2242) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2246
- fix(auth): validate X-Forwarded-For against trusted proxies (#2239) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2251
- fix(auth): add typed response model for login endpoint (#2240) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2247
- refactor(analytics): continue decomposing CodebaseAnalytics.vue (#1579) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2236
- fix(orchestrator): address code review findings from PR #2233 (#2235) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2254
- cleanup(analytics): remove 826 lines of dead CSS from CodebaseAnalytics.vue (#2244) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2249
- refactor(analytics): decompose CodebaseAnalytics.vue script into composables (#2228, #2230) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2253
- fix(ci): add CodeQL custom sanitizer config to reduce false positives (#1826) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2203
- fix(analytics): wire extraScans and fix debug composable init order (#2258, #2259) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2264
- cleanup(analytics): remove orphaned CodebaseStatsSection.vue (#2229) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2275
- fix(analytics): correct inaccurate comment about POST-based triggers (#2271) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2276
- fix(docs): update CLAUDE.md line length to match .flake8 (#2217) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2278
- fix(ci): add missing autoflake flags to match pre-commit (#2218) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2286
- fix(shared): update redis_client.py docstring to canonical import path (#2219) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2287
- fix(shared): document backend coupling in redis_client imports (#2220) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2288
- fix(ci): replace global B113 bandit skip with per-file annotations (#2272) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2289
- fix(hooks): update header comments to include new exclusions (#2273) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2290
- fix(tests): update 8 stale mock patches to correct module name (#2261) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2268
- cleanup(tests): remove dead archive path references from llm_interface_core_test (#2265) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2269
- cleanup(analytics): remove dead barrel exports for deleted components (#2262) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2270
- fix(security): add VNC passwd pre-check before server start (#1965) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2279
- fix(logs): preserve subdirectory in _validate_log_path (#2194) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2285
- fix(db): add mesh_nodes_archive migration (#2212) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2284
- fix(analytics): add stale collection retry for problems storage (#1712) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2291
- feat(monitoring): wire GPU acceleration optimizer to API endpoints (#2267) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2281
- feat(workflow): add per-workflow RBAC and audit trail (#2152) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2280
- feat(workflow): add encrypted secret management for credentials (#2153) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2282
- fix(security): sanitize session_id in tempfile.mkdtemp prefix (#2298) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2300
- fix(slm): remove hardcoded Redis IP from bootstrap-slm.sh (#2224) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2292
- fix(topology): set last_updated in _update_pair (#2213) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2297
- fix(routing): normalise task_type vocabulary (#2208) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2299
- fix(db): resolve Alembic revision collision (#2302) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2314
- fix(security): remove path echo from 403 response (#2307) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2317
- fix(workflow): eliminate race in parallel step execution (#2204) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2318
- fix(test): mock datetime on correct module in redis_thread_safety_test (#2211) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2319
- fix(monitoring): correct decorator order, prefix, GPU guard, tags (#2315) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2324
- fix(ansible): make SLM login resilient in update-all-nodes.yml (#2295) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2328
- fix(chat): return error for unknown tool names instead of silent drop (#2305) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2331
- fix(slm): remove escaped $ so REDIS_HOST resolves at bootstrap (#2326) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2330
- fix(hooks): reduce orphan detector false positives (#2094) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2329
- fix(devtools): disable format-on-save to prevent edit conflicts (#1518) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2332
- fix(migrations): resolve duplicate revision 20260324_015 collision (#2302) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2316
- refactor(frontend): extract shared CodeSource interface (#2238) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2333
- fix(slm): load db credentials in migration runner (#2293) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2338
- fix(ansible): add slm_server/infrastructure groups to production.yml (#2294) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2339
- fix(ansible): add fix-node-ownership playbook (#2296) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2340
- fix(chat): wire knowledge base into chat manager after Phase 2 init (#2309) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2336
- fix(workflow): replace pg_insert with dialect-neutral upsert (#2320) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2334
- cleanup: remove dead _ComplexWorkflowRequired exception (#2256) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2341
- refactor: move workflow_rbac.py to services/ (#2323) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2343
- refactor: consolidate EnhancedOrchestrator into singleton (#2207) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2337
- security: fix CodeQL stack-trace-exposure + sensitive-logging alerts (#1733) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2335
- fix(security): require VNC password auth in all x11vnc launches (#1969) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2344
- fix(rag): persist EdgeLearner cursors to Redis (#2210) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2345
- fix(security): add TLS to websockify VNC proxy (#1962) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2350
- perf: add in-memory TTL cache for learned strategies (#2209) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2351
- fix(rag): thread max_results through _diversify_results (#2200) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2349
- refactor: move co-located test files to tests/ directory (#2037) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2354
- refactor(codebase_analytics): decompose scanner.py god module into 5 focused sub-modules (#2013) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2347
- fix(agents): normalise task_type in clear_strategy (#2325) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2353
- test(security): add path_validator unit tests (#2162) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2355
- test(gpu): add unit tests for gpu_detection.py (#2243) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2356
- test(slm): add tablename collision unit test (#2226) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2357
- test(mesh): add EdgeLearner multi-batch pagination test (#2214) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2358
- test(mesh): add EvidenceExtractor abbreviation-aware splitting tests (#2202) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2359
- fix(security): replace hardcoded VNC password with random generation (#1987) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2362
- fix(security): make HMAC API key secret configurable (#2160) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2361
- fix(shared): re-raise HTTPException in with_error_handling decorator by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2365
- fix(security): validate X-Forwarded-For against trusted proxies (#2252) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2366
- fix(analytics): expand INTERNAL_MODULE_PREFIXES for call graph (#2360) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2369
- fix(slm): add unique constraint and validation on ansible_name (#2011) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2352
- refactor(frontend): decompose useCodeIntelAnalysis.ts (#2260) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2370
- fix(analytics): update stale autobot-vue path references (#2016) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2375
- fix(slm): warn when _generate_node_id falls back from ansible_name (#2175) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2376
- fix(npu): add logger and decompose oversized functions in npu_worker.py by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2377
- cleanup(orchestration): remove dead _check_step_dependencies (#2206) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2378
- fix(npu): add logger and decompose oversized functions in npu_worker.py (#2346) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2382
- fix(frontend): add source_id to Redis health endpoint (#2374) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2384
- feat: remove /vision route and nav references (#2379) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2387
- feat: add VISION sidebar group to automation page (#2380) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2385
- feat: add vision workflow nodes to canvas (#2381) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2386
- feat(slm): move LLM config to SLM admin settings (#2371) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2391
- fix(slm): add SELECT FOR UPDATE to fleet sync guard (#1937) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2389
- fix(security): scope redact_secrets to workflow owner's secrets only by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2392
- fix(security): remove stack trace exposure from API responses (#2195) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2398
- refactor(config): replace hardcoded mistral:7b-instruct with DEFAULT_LLM_MODEL (#2383) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2406
- fix(frontend): add withSourceId to loadRedisHealth endpoint (#2374) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2411
- fix(backend): add missing init.py for search_components test discovery (#2395) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2426
- fix(backend): replace postgresql.UUID with dialect-neutral Uuid (#2402) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2424
- fix(backend): move imports after copyright header in 2 files (#2414) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2422
- fix(frontend): track .vscode/settings.json properly in .gitignore (#2412) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2421
- fix(backend): add advisory lock to fleet sync guard (#2401) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2448
- fix(backend): deprecate LLM config write endpoints with 410 Gone (#2400) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2451
- fix(frontend): auto-load CodebaseSecurityPanel on page visit (#2404) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2453
- docs: add Docker quick-start to README and INSTALL.md (#2443) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2452
- chore(scripts): remove legacy setup_wizard.sh (#2425) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2450
- refactor(frontend): remove orphaned LLM config files (#2399) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2442
- chore(deps): bump @xterm/addon-web-links from 0.11.0 to 0.12.0 in /autobot-frontend by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2438
- chore(deps): bump the npm_and_yarn group across 3 directories with 1 update by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2437
- chore(deps): bump onnxruntime-web from 1.24.2 to 1.24.3 in /autobot-frontend by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2435
- chore(deps): bump vue from 3.5.28 to 3.5.31 in /autobot-frontend by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2431
- chore(deps-dev): bump picomatch from 2.3.1 to 2.3.2 in /autobot-frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2430
- refactor(shared): consolidate proxy_utils into autobot-shared (#2408) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2447
- refactor(shared): extract _check_tablename_collisions utility (#2413) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2446
- chore(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2427
- chore(deps): bump opentelemetry-exporter-otlp from 1.34.0 to 1.40.0 in /autobot-backend by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2439
- chore(deps): bump opentelemetry-proto from 1.34.0 to 1.40.0 in /autobot-backend by @dependabot[bot] in https://github.com/mrveiss/AutoBot-AI/pull/2436
- chore(frontend): remove orphaned VisionAutomationPage.vue (#2396) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2455
- docs(system-state): replace stale setup.sh references (#2441) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2464
- docs(setup): update PHASE_5_DEVELOPER_SETUP.md to current install paths (#2440) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2454
- refactor(frontend): decompose useSpecializedAnalysis (#2372) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2456
- chore(frontend): remove unused variables in CodebaseAnalytics.vue (#2405) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2466
- chore: replace stale mistral:7b-instruct refs with qwen3.5:9b (#2418) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2470
- refactor(shared): move redis_management to autobot-shared (#2313) by @mrveiss in https://github.com/mrveiss/AutoBot-AI/pull/2469
Full Changelog: v0.1.0...v0.2.0