What's Changed
- chore: bump version to 0.1.4 by @jacoblee-io in #152
- feat(frontend): add Dig deeper button for diagnostic depth control by @chent1996 in #153
- chore(scripts): add NFS session memory cleanup tool by @chent1996 in #156
- feat: Skill Space — collaborative skill sharing and management by @LikiosSedo in #154
- chore: remove outdated Chinese internal docs by @LikiosSedo in #160
- fix(security): prevent sensitive data leaking into AI context via kubectl by @chent1996 in #158
- fix(db): enable MySQL connection keep-alive by @jacoblee-io in #161
- Decouple Deep Investigation from normal mode with explicit state machine by @LikiosSedo in #155
- Fix skill fork path traversal error for relative skillsDir by @LikiosSedo in #163
- Fix skill diff: baseline tracking + personal fork eye icon by @LikiosSedo in #166
- fix(kb): persist document content in Gateway DB for vector recovery by @jacoblee-io in #164
- fix(tools): add kubectl rate protection for API server safety by @chent1996 in #165
- feat(security): add sensitive path protection for exec tools by @chent1996 in #162
- fix(skills): sync skill name between DB and SKILL.md frontmatter by @LikiosSedo in #170
- refactor(tools): restructure src/tools/ into 6 typed subdirectories by @chent1996 in #171
- refactor(prompt): streamline system prompt and add Understand Before Acting by @jacoblee-io in #169
- refactor(security): replace pre-execution blocking with post-execution sanitization by @chent1996 in #172
- docs(tools): add rate protection rules to tool descriptions by @chent1996 in #167
- fix(tools): align tool descriptions with actual runtime behavior by @chent1996 in #168
- refactor(tools): rename run_skill, stdin pipe, simplify netns tools by @jacoblee-io in #173
- fix(tools): handle backslash-escaped metacharacters in command parser by @jacoblee-io in #174
- docs(tools): sync docs with tool refactor, remove dead contexts by @jacoblee-io in #176
- fix(models): test connection reuses stored API key and verifies auth properly by @LikiosSedo in #181
- fix(web): reset hasLoadedRef on WS disconnect so pages reload on reconnect by @jacoblee-io in #178
- fix(db): provide explicit updatedAt in system_config insert by @jacoblee-io in #180
- fix(tools): support kubectl flag-before-subcommand and relax -A rate protection by @jacoblee-io in #183
- fix(tools): increase debug pod memory limit and remove requests by @jacoblee-io in #184
- refactor(skills): rename scope 'team' to 'global' across codebase by @LikiosSedo in #182
- fix(web): reconnect WebSocket when tab becomes visible by @jacoblee-io in #185
- refactor(security): unify command security model into COMMANDS + CONTEXT_POLICIES by @chent1996 in #189
- feat(memory): add workspace memory clearing by @chent1996 in #191
- refactor(tools): security pipeline facade + directory restructure by @chent1996 in #190
- feat(knowledge): batch upload and auto title extraction by @jacoblee-io in #192
- refactor(tools): directory cleanup + extract LLM utilities to shared by @chent1996 in #194
- refactor(skills): fork-edit-sync model with full lifecycle by @jacoblee-io in #188
- refactor(core): introduce guard pipeline to replace scattered monkey-patching by @chent1996 in #195
- docs: align harness framework with current codebase, add DDL parity test by @LikiosSedo in #193
- fix(cron): capture structured reports from models that produce empty text by @LikiosSedo in #198
- refactor(tools): introduce Tool Registry for declarative tool registration by @chent1996 in #196
- fix(security): remove POST and data flags from curl whitelist by @chent1996 in #200
- feat(web): make clear memory synchronous with success/error feedback by @chent1996 in #199
- fix(tools): remove kubectl exec from restricted-bash, consolidate to pod_exec/node_exec by @chent1996 in #197
- fix(core): add knowledgeDir to file read allowed directories by @jacoblee-io in #202
- fix(prompt): remove hardcoded 5-minute reference from cron section by @LikiosSedo in #201
- feat(models): add model editing support by @jacoblee-io in #203
- feat(cron): persist tool call traces for cron job executions by @LikiosSedo in #205
- fix(config): move debug pods to siclaw namespace by @chent1996 in #208
- fix(prompt): improve diagnostic completeness and stuck detection by @jacoblee-io in #206
- refactor(tools): replace skill management tools with skill_preview by @jacoblee-io in #207
- fix(web): fix steer pending message state management bugs by @jacoblee-io in #210
- fix(skills): forked personal/skillset skills now shadow their builtin origin by @jacoblee-io in #211
- fix(skills): check name conflict at contribute time and propagate approve errors by @jacoblee-io in #212
- fix(tools): add multi-cluster kubeconfig hint to bash tool description by @jacoblee-io in #213
- fix(web): replace hardcoded suggested prompts with rotating taglines by @LikiosSedo in #214
- fix(web): improve abort UX with visual feedback and prompt restore by @LikiosSedo in #215
- fix(cron): surface model errors in cron execution results and notifications by @jacoblee-io in #217
- docs: remove stale roadmap and outdated planning sections by @LikiosSedo in #219
- fix(tools): clarify that KUBECONFIG= env prefix is not supported in bash tool by @jacoblee-io in #220
- optimize(prompt): make knowledge/memory search on-demand by @jacoblee-io in #222
- feat(cron): add execution trace view to run history by @LikiosSedo in #221
- optimize(skill): add hardware diagnostic discovery to node-health-check by @jacoblee-io in #223
- fix(config): use default namespace for debug pods by @chent1996 in #224
- fix(brain): add empty response retry guard to pi-agent brain by @jacoblee-io in #225
- fix(prompt): enforce skill-first as hard gate before ad-hoc commands by @jacoblee-io in #227
- fix(command-sets): move -r/-R/--recursive block from category to per-command by @chent1996 in #226
- fix(tools): allow agent to read truncated output files in /tmp by @jacoblee-io in #228
- chore(oss): sync sanitized new commits from GitLab by @jacoblee-io in #235
- docs: align public docs with current architecture by @LikiosSedo in #236
- feat(portal-web): collapsible sidebar + promote Metrics to top-level by @LikiosSedo in #238
- feat(cli): unify TUI with local Portal via read-only snapshot by @LikiosSedo in #237
- docs(readme): add prominent Try-Demo link by @LikiosSedo in #240
- docs(readme): update architecture diagram to reflect current design by @LikiosSedo in #241
- refactor(helm): manage shared data PVC via chart by @chent1996 in #242
- refactor(runtime): drop legacy REST + jwtSecret; enforce singleton by @jacoblee-io in #245
- refactor(runtime): drop trusted-proxy + runtimeSecret + dead inbound /ws by @jacoblee-io in #248
- fix(internal-api): pass agentId to config.getMcpServers + getSkillBundle by @jacoblee-io in #249
- fix(local): wire knowledge sync, task notifications, and schedule card rendering by @LikiosSedo in #239
- refactor(dp): rebuild deep investigation on async delegation by @LikiosSedo in #247
- chore(helm): drop stale runtimeSecret from values-standalone by @jacoblee-io in #251
- revert: enforce session ownership on chat.* write RPCs (#247) by @LikiosSedo in #252
- fix(portal): order skills/mcp_servers DDL before junction tables by @chent1996 in #253
- feat(error-envelope): inline error bubbles for chat flow by @LikiosSedo in #254
- fix(pi-agent-brain): skip empty-response retry on stopReason=error by @LikiosSedo in #255
- fix(runtime): make chat.send ack async to escape sicore's 30s RPC timeout by @LikiosSedo in #256
Full Changelog: v0.1.4...v0.1.5