Commit Graph

563 Commits

Author SHA1 Message Date
Shaun Arman
f6787accd6 fix(agentic): inline format arg in writeln! to satisfy clippy::uninlined_format_args
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m36s
Test / frontend-typecheck (pull_request) Successful in 1m34s
Test / frontend-tests (pull_request) Successful in 1m37s
Test / rust-clippy (pull_request) Successful in 3m7s
PR Review Automation / review (pull_request) Successful in 4m24s
Test / rust-tests (pull_request) Successful in 4m22s
Rust 1.88 enforces clippy::uninlined_format_args as a style lint under
-D warnings. Change `writeln!(stdin, "{}", password)` to the inline
form `writeln!(stdin, "{password}")`.
2026-05-31 14:19:29 -05:00
Shaun Arman
06956940e2 fix(ci): reduce AI review hallucinations in pr-review workflow
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m46s
Test / frontend-typecheck (pull_request) Successful in 1m49s
Test / frontend-tests (pull_request) Successful in 1m46s
Test / rust-clippy (pull_request) Failing after 3m12s
PR Review Automation / review (pull_request) Successful in 4m37s
Test / rust-tests (pull_request) Successful in 4m34s
Three changes:
- Exclude Cargo.lock/lockfiles from the diff — removes ~163 lines of
  hash noise that waste the review budget with no value
- Raise line cap from 500 to 3000 and add a truncation notice when
  the diff is cut, so the model knows the diff is incomplete
- Harden prompt: require quoted evidence for every finding; add explicit
  self-verification step for missing-identifier claims (search full diff
  before raising); tighten no-hallucinate instruction
2026-05-31 14:08:10 -05:00
Shaun Arman
cf1d5adb83 docs(analysis): document zip-slip safety guarantee in extract_docx_text
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m35s
Test / frontend-typecheck (pull_request) Successful in 2m16s
Test / frontend-tests (pull_request) Successful in 2m13s
Test / rust-clippy (pull_request) Failing after 3m43s
PR Review Automation / review (pull_request) Successful in 4m11s
Test / rust-tests (pull_request) Successful in 4m59s
Only a single hardcoded entry (word/document.xml) is ever accessed from
the ZIP archive; no arbitrary path extraction occurs, so path traversal
attacks cannot apply. Add a comment to make this invariant explicit for
future maintainers.
2026-05-31 13:57:38 -05:00
Shaun Arman
ed2e25f835 chore: update Cargo.lock for lopdf, zip, quick-xml deps 2026-05-31 13:51:08 -05:00
Shaun Arman
f47ec90d05 feat(upload): add safe file extension validation and binary text extraction
- Add extension allowlist (SAFE_TEXT_EXTENSIONS + SAFE_BINARY_EXTENSIONS)
  rejecting unsupported file types at both upload_log_file and
  upload_log_file_by_content entry points
- Add extract_text_content() with PDF text extraction via lopdf and
  DOCX extraction via zip+quick-xml
- Binary files (PDF/DOCX) get extracted text written to .extracted.txt
  for downstream PII detection
- Expand frontend file input accept list and add collapsible
  supported-formats disclosure element
- Add 11 unit tests covering allowlist logic and extraction paths
2026-05-31 13:50:59 -05:00
Shaun Arman
cd67a09a6a fix(ai,search): load history across all conversations; deep search related tables
AI history continuity: Changed the history-load query in chat_message to
JOIN ai_conversations and select by issue_id instead of single conversation_id.
This preserves full context when provider/model changes mid-triage.

Deep search: Added DISTINCT to list_issues SELECT and extended the search
filter with EXISTS subqueries covering ai_messages, resolution_steps,
log_files, and timeline_events. Ensures comprehensive search without
duplicate results.

Includes 11 new unit tests covering both features.
2026-05-31 13:50:29 -05:00
5e596f0cd3 fix(ci): pass release_tag as job output; fix equal-version case; drop git-describe [skip ci] 2026-05-23 22:48:14 +00:00
0c366180fa Merge pull request 'fix(ci): replace tea CLI with curl; honour Cargo.toml version for tags' (#54) from fix/ci-auto-tag-tea into master
Some checks failed
Test / rust-fmt-check (push) Successful in 1m40s
Test / frontend-typecheck (push) Successful in 2m15s
Test / rust-tests (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Auto Tag / autotag (push) Successful in 6s
Auto Tag / wiki-sync (push) Successful in 7s
Auto Tag / changelog (push) Failing after 35s
Auto Tag / build-macos-arm64 (push) Successful in 3m23s
Auto Tag / build-linux-amd64 (push) Successful in 8m36s
Auto Tag / build-windows-amd64 (push) Successful in 10m10s
Auto Tag / build-linux-arm64 (push) Successful in 10m24s
2026-05-23 22:39:23 +00:00
Shaun Arman
28f579a1ae fix: bump tauri.conf.json version to 0.3.0
Some checks failed
Test / frontend-typecheck (pull_request) Successful in 1m50s
Test / frontend-tests (pull_request) Successful in 1m45s
Test / rust-fmt-check (pull_request) Successful in 1m55s
Test / rust-clippy (pull_request) Successful in 3m24s
Test / rust-tests (pull_request) Successful in 5m38s
PR Review Automation / review (pull_request) Has been cancelled
Cargo.toml was updated to 0.3.0 for the MCP feature but tauri.conf.json
was missed. Bundle artifact filenames are derived from tauri.conf.json,
so all builds were producing files named 0.2.68.
2026-05-23 17:36:38 -05:00
047772d719 fix(ci): replace tea with curl, honour Cargo.toml version [skip ci] 2026-05-23 22:31:45 +00:00
Shaun Arman
75f8a006ea fix(ci): replace tea CLI with curl in changelog steps; read Cargo.toml for version
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m33s
Test / frontend-typecheck (pull_request) Successful in 1m40s
Test / frontend-tests (pull_request) Successful in 1m52s
Test / rust-clippy (pull_request) Successful in 3m25s
PR Review Automation / review (pull_request) Successful in 4m21s
Test / rust-tests (pull_request) Successful in 4m29s
tea is not available in alpine:latest containers. Replace both tea calls
with curl API requests against the Gitea releases endpoint.

Also: auto-tag now reads src-tauri/Cargo.toml version first. If it is
ahead of the latest git tag (major/minor bump), that version is used
directly instead of incrementing the patch.
2026-05-23 17:30:41 -05:00
ea7f484ce6 Merge pull request 'feat(mcp): add MCP Server Support' (#53) from feature/mcp-server-support into master
Some checks failed
Auto Tag / autotag (push) Successful in 7s
Auto Tag / wiki-sync (push) Successful in 7s
Auto Tag / changelog (push) Failing after 1m19s
Test / rust-fmt-check (push) Successful in 1m42s
Test / frontend-tests (push) Successful in 2m3s
Test / frontend-typecheck (push) Successful in 2m7s
Test / rust-clippy (push) Successful in 3m30s
Test / rust-tests (push) Successful in 5m12s
Auto Tag / build-linux-amd64 (push) Successful in 10m1s
Auto Tag / build-windows-amd64 (push) Successful in 12m0s
Auto Tag / build-linux-arm64 (push) Successful in 11m43s
Auto Tag / build-macos-arm64 (push) Failing after 12m46s
Reviewed-on: #53
2026-05-23 22:15:10 +00:00
Shaun Arman
28cfcf1ef4 fix(mcp): add timeouts, delete audit log, OAuth state nonce; improve PR review prompt
All checks were successful
Test / frontend-typecheck (pull_request) Successful in 1m54s
Test / rust-fmt-check (pull_request) Successful in 2m0s
Test / frontend-tests (pull_request) Successful in 1m53s
Test / rust-clippy (pull_request) Successful in 3m33s
PR Review Automation / review (pull_request) Successful in 4m54s
Test / rust-tests (pull_request) Successful in 4m57s
- call_tool: 30s hard timeout via tokio::time::timeout
- discover_server: 60s hard timeout wrapping full connect+discover sequence
- delete_mcp_server: write_audit_event before cascade delete, capturing
  server name, tool count, and resource count
- initiate_mcp_oauth: append cryptographically random state nonce for CSRF
- pr-review.yml: rewrite prompt to require line-quoted evidence for every
  finding and eliminate hallucinated false positives
2026-05-23 17:08:23 -05:00
Shaun Arman
8e1145ec7a fix(ci): use qwen3-coder-next model for PR review
Some checks failed
Test / rust-fmt-check (pull_request) Has been cancelled
Test / frontend-typecheck (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Test / frontend-tests (pull_request) Has been cancelled
PR Review Automation / review (pull_request) Successful in 6m46s
2026-05-23 16:54:26 -05:00
Shaun Arman
a779756e48 style(mcp): apply rustfmt formatting
Some checks failed
PR Review Automation / review (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Successful in 1m46s
Test / frontend-typecheck (pull_request) Successful in 1m39s
Test / frontend-tests (pull_request) Successful in 1m39s
Test / rust-clippy (pull_request) Successful in 3m26s
Test / rust-tests (pull_request) Successful in 4m54s
2026-05-23 16:48:26 -05:00
Shaun Arman
3588399dfd feat(mcp): add MCP Server Support with TDD implementation
Some checks failed
Test / rust-fmt-check (pull_request) Failing after 2m12s
Test / frontend-typecheck (pull_request) Successful in 2m23s
Test / frontend-tests (pull_request) Successful in 2m22s
Test / rust-clippy (pull_request) Successful in 3m55s
Test / rust-tests (pull_request) Successful in 5m10s
PR Review Automation / review (pull_request) Failing after 11m6s
Adds full Model Context Protocol (MCP) server management, enabling the
AI assistant to discover and call tools from external MCP servers during
triage conversations.

Backend (Rust):
- rmcp 1.7.0 dependency (client + stdio + Streamable HTTP transports)
- Migration 018: mcp_servers, mcp_tools, mcp_resources tables with
  CHECK constraints for transport_type, auth_type, discovery_status
- src/mcp/ module: models, store, client, adapter, discovery, commands,
  transport/{stdio,http}
- AppState gains mcp_connections: Arc<TokioMutex<HashMap<...>>>
- .setup() hook auto-discovers enabled servers at startup
- 8 new Tauri commands wired into invoke_handler
- execute_mcp_tool_call: PII scan + mandatory audit_log before execution
- Auth values encrypted at rest via integrations::auth::encrypt_token();
  scrubbed before any frontend response

Frontend:
- MCPServers.tsx settings page (/settings/mcp) with server list,
  status badges, Discover Now, Add/Edit modal, enable/disable toggle
- tauriCommands.ts: McpServer, McpTool, McpServerStatus types + 8 cmds
- App.tsx: Plug icon, /settings/mcp route, sidebar nav entry

Tests (TDD): 15 new tests, all green
- 5 migration tests (written before migration, red → green)
- 5 store CRUD + encryption tests
- 5 adapter sanitization + conversion tests

Verification: 185/185 Rust, 94/94 Vitest, clippy -D warnings: 0
2026-05-23 16:23:48 -05:00
Shaun Arman
85c67cfbe9 docs: update CHANGELOG.md for v0.2.71
Some checks failed
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / rust-fmt-check (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Auto Tag / autotag (push) Successful in 1m6s
Auto Tag / wiki-sync (push) Successful in 1m9s
Auto Tag / changelog (push) Failing after 39s
Auto Tag / build-macos-arm64 (push) Successful in 4m35s
Auto Tag / build-linux-amd64 (push) Successful in 9m17s
Auto Tag / build-linux-arm64 (push) Successful in 11m7s
Auto Tag / build-windows-amd64 (push) Successful in 11m32s
2026-04-29 21:37:16 -05:00
Shaun Arman
43099f9706 fix(auto-tag): use tea CLI instead of hardcoded tokens
Some checks failed
Auto Tag / autotag (push) Successful in 7s
Auto Tag / wiki-sync (push) Successful in 8s
Auto Tag / changelog (push) Failing after 1m9s
Test / rust-fmt-check (push) Successful in 1m29s
Test / frontend-tests (push) Successful in 1m31s
Test / frontend-typecheck (push) Successful in 1m31s
Auto Tag / build-macos-arm64 (push) Successful in 3m25s
Test / rust-clippy (push) Successful in 3m40s
Auto Tag / build-windows-amd64 (push) Has been cancelled
Auto Tag / build-linux-amd64 (push) Has been cancelled
Auto Tag / build-linux-arm64 (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
2026-04-29 21:32:47 -05:00
ba3ae80b7d chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-04-30 02:16:42 +00:00
Shaun Arman
4380830052 Merge origin/master - keep local CHANGELOG with v0.2.66-0.2.71
Some checks failed
Auto Tag / autotag (push) Successful in 7s
Auto Tag / wiki-sync (push) Successful in 7s
Test / rust-fmt-check (push) Successful in 1m12s
Test / frontend-typecheck (push) Successful in 1m18s
Test / frontend-tests (push) Successful in 1m21s
Auto Tag / changelog (push) Successful in 1m8s
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Auto Tag / build-macos-arm64 (push) Successful in 3m22s
Auto Tag / build-linux-amd64 (push) Successful in 9m31s
Auto Tag / build-windows-amd64 (push) Successful in 11m40s
Auto Tag / build-linux-arm64 (push) Successful in 11m49s
2026-04-29 21:15:02 -05:00
Shaun Arman
2b0aeec340 docs: update CHANGELOG.md for v0.2.69-v0.2.71 2026-04-29 21:14:13 -05:00
78d450b5b1 chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-04-30 02:06:31 +00:00
Shaun Arman
cb185e1e0d docs: update CHANGELOG.md for v0.2.68
Some checks failed
Auto Tag / build-linux-arm64 (push) Blocked by required conditions
Auto Tag / autotag (push) Successful in 1m12s
Auto Tag / wiki-sync (push) Successful in 1m9s
Test / rust-fmt-check (push) Successful in 1m49s
Auto Tag / changelog (push) Successful in 1m6s
Test / frontend-typecheck (push) Successful in 1m35s
Test / frontend-tests (push) Successful in 1m26s
Auto Tag / build-macos-arm64 (push) Successful in 3m33s
Test / rust-clippy (push) Successful in 4m26s
Test / rust-tests (push) Successful in 5m31s
Auto Tag / build-linux-amd64 (push) Successful in 7m55s
Auto Tag / build-windows-amd64 (push) Has been cancelled
2026-04-29 21:04:16 -05:00
f29dd03207 chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-04-30 02:00:35 +00:00
Shaun Arman
e043da8b89 fix(auto-tag): use correct tag range for release notes
Some checks failed
Auto Tag / autotag (push) Successful in 7s
Auto Tag / wiki-sync (push) Successful in 6s
Auto Tag / changelog (push) Successful in 1m16s
Test / frontend-typecheck (push) Successful in 1m24s
Test / rust-fmt-check (push) Successful in 1m30s
Test / frontend-tests (push) Successful in 1m27s
Auto Tag / build-macos-arm64 (push) Successful in 2m49s
Test / rust-clippy (push) Successful in 4m13s
Auto Tag / build-linux-amd64 (push) Has been cancelled
Auto Tag / build-windows-amd64 (push) Has been cancelled
Auto Tag / build-linux-arm64 (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
2026-04-29 20:59:40 -05:00
c53835ec9b chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-04-30 01:36:41 +00:00
ffb8d15187 Merge pull request 'feat(ai): add devops-incident-responder agent with domain auto-detection' (#52) from feature/agent-system into master
Some checks failed
Auto Tag / autotag (push) Successful in 7s
Auto Tag / wiki-sync (push) Successful in 7s
Test / rust-fmt-check (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Auto Tag / changelog (push) Successful in 1m4s
Auto Tag / build-macos-arm64 (push) Successful in 3m14s
Auto Tag / build-linux-amd64 (push) Successful in 9m32s
Auto Tag / build-linux-arm64 (push) Successful in 11m50s
Auto Tag / build-windows-amd64 (push) Successful in 11m59s
Reviewed-on: #52
2026-04-30 01:34:53 +00:00
Shaun Arman
0b7f1cd9ab feat(ai): add devops-incident-responder agent with domain auto-detection
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m29s
Test / frontend-typecheck (pull_request) Successful in 1m28s
Test / frontend-tests (pull_request) Successful in 1m30s
Test / rust-clippy (pull_request) Successful in 3m33s
Test / rust-tests (pull_request) Successful in 4m54s
PR Review Automation / review (pull_request) Failing after 8m49s
- Implement AgentRegistry system with devops-incident-responder agent
- Add domain detection based on conversation keywords
- Inject devops-incident-responder as primary system prompt
- Auto-switch domain prompts silently when context shifts
- Fix version update script to handle JSON format correctly
- Always display version in bottom-left corner
- Add release notes fallback to git commits if CHANGELOG empty

This implements the full devops-incident-responder agent as the primary
system prompt, with domain-specific SME prompts layered on top based on
conversation content analysis. The version display bug is fixed by removing
the collapsed condition, and release notes now have a fallback mechanism.
2026-04-29 19:41:47 -05:00
c0d482ace7 chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-04-20 01:26:00 +00:00
5a12718566 Merge pull request 'fix(test): await async data in auditLog test' (#51) from fix/audit-log-test into master
Some checks failed
Auto Tag / autotag (push) Successful in 15s
Auto Tag / wiki-sync (push) Successful in 15s
Test / rust-fmt-check (push) Successful in 1m4s
Test / frontend-typecheck (push) Successful in 1m22s
Auto Tag / changelog (push) Successful in 53s
Test / frontend-tests (push) Successful in 1m29s
Test / rust-clippy (push) Successful in 8m5s
Test / rust-tests (push) Successful in 11m30s
Auto Tag / build-linux-amd64 (push) Successful in 16m13s
Auto Tag / build-linux-arm64 (push) Successful in 17m54s
Auto Tag / build-windows-amd64 (push) Successful in 18m51s
Auto Tag / build-macos-arm64 (push) Failing after 11m59s
2026-04-20 01:21:55 +00:00
Shaun Arman
4a0c7957ec fix(test): await async data in auditLog test to prevent race condition
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m11s
Test / frontend-typecheck (pull_request) Successful in 1m23s
Test / frontend-tests (pull_request) Successful in 1m33s
PR Review Automation / review (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
2026-04-19 20:21:37 -05:00
12a76b4dd8 chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-04-20 00:47:35 +00:00
Shaun Arman
0e6fd09455 chore: retrigger auto-tag pipeline
Some checks failed
Auto Tag / autotag (push) Successful in 6s
Auto Tag / wiki-sync (push) Successful in 5s
Auto Tag / changelog (push) Successful in 51s
Test / rust-fmt-check (push) Successful in 1m10s
Test / frontend-typecheck (push) Successful in 1m28s
Test / frontend-tests (push) Failing after 1m38s
Auto Tag / build-macos-arm64 (push) Successful in 4m18s
Test / rust-clippy (push) Successful in 7m56s
Test / rust-tests (push) Has been cancelled
Auto Tag / build-linux-amd64 (push) Successful in 19m44s
Auto Tag / build-linux-arm64 (push) Successful in 22m7s
Auto Tag / build-windows-amd64 (push) Successful in 23m18s
2026-04-19 19:46:34 -05:00
Shaun Arman
b7f348bf34 chore: retrigger build pipeline 2026-04-19 19:42:39 -05:00
Shaun Arman
7234704636 chore: trigger build pipeline 2026-04-19 19:40:02 -05:00
06b0c10b17 Merge pull request 'docs: add v0.2.66 changelog entry' (#50) from chore/trigger-build-2 into master 2026-04-20 00:34:55 +00:00
Shaun Arman
ab231b6564 docs: add v0.2.66 changelog entry
Some checks failed
PR Review Automation / review (pull_request) Has been cancelled
Test / frontend-tests (pull_request) Has been cancelled
Test / frontend-typecheck (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
2026-04-19 19:33:52 -05:00
8b828fe4c3 Merge pull request 'docs: clarify changelog exclusion criteria' (#49) from chore/trigger-build into master
Reviewed-on: #49
2026-04-20 00:29:55 +00:00
Shaun Arman
27193c91e6 docs: clarify changelog exclusion criteria
All checks were successful
Test / rust-fmt-check (pull_request) Successful in 1m5s
Test / frontend-typecheck (pull_request) Successful in 1m15s
Test / frontend-tests (pull_request) Successful in 1m22s
PR Review Automation / review (pull_request) Successful in 3m46s
Test / rust-clippy (pull_request) Successful in 4m17s
Test / rust-tests (pull_request) Successful in 5m29s
2026-04-19 19:20:57 -05:00
cb542d7f22 Merge pull request 'fix(ci): switch PR review to liteLLM + add push trigger to tests' (#46) from fix/litellm-pr-review into master
Reviewed-on: #46
2026-04-19 23:56:22 +00:00
Shaun Arman
d066e71eeb fix(ci): switch PR review from Ollama to liteLLM (qwen2.5-72b)
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m9s
Test / frontend-typecheck (pull_request) Successful in 1m17s
Test / frontend-tests (pull_request) Successful in 1m22s
Test / rust-clippy (pull_request) Successful in 4m19s
Test / rust-tests (pull_request) Successful in 5m46s
PR Review Automation / review (pull_request) Failing after 1m15s
Replace direct Ollama API calls with liteLLM proxy at
172.0.0.29:11434 using qwen2.5-72b (72B VLLM model). Increase
timeouts to 300s for larger model inference. Reuses existing
OLLAMA_API_KEY secret for liteLLM auth.

Also add push-to-master trigger on test.yml so merges to master
run the full CI suite (previously only pull_request events triggered).
2026-04-19 18:41:54 -05:00
257b2fb9c5 Merge pull request 'feat: incident response methodology + UTC timeline tracking' (#45) from feat/incident-response-timeline into master
Reviewed-on: #45
2026-04-19 23:34:34 +00:00
Shaun Arman
d715ba0b25 docs: update wiki for timeline events and incident response methodology
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m12s
Test / frontend-typecheck (pull_request) Successful in 1m17s
Test / frontend-tests (pull_request) Successful in 1m25s
PR Review Automation / review (pull_request) Failing after 2m45s
Test / rust-clippy (pull_request) Successful in 4m26s
Test / rust-tests (pull_request) Successful in 5m42s
- Database.md: document timeline_events table (migration 017), event
  types, dual-write strategy, correct migration count to 17
- IPC-Commands.md: document get_timeline_events, updated
  add_timeline_event with metadata, chat_message system_prompt param
- Architecture.md: document incident response methodology integration,
  5-phase framework, system prompt injection, correct migration count
2026-04-19 18:26:21 -05:00
Shaun Arman
8b0cbc3ce8 fix: harden timeline event input validation and atomic writes
Address security review findings:
- Validate event_type against whitelist of 7 known types (M-3)
- Validate metadata is valid JSON and under 10KB (M-2, M-4)
- Include metadata in audit log details (M-2)
- Wrap timeline insert + audit write + timestamp update in a
  SQLite transaction for atomicity (M-5)
- Fix TypeScript TimelineEvent interface: add issue_id, metadata
  fields and correct created_at type to string (L-3)
- Add timeline_events to IssueDetail TypeScript interface (L-4)
2026-04-19 18:25:53 -05:00
Shaun Arman
13c4969e31 feat: wire incident response methodology into AI and record triage events
Add INCIDENT_RESPONSE_FRAMEWORK to domainPrompts.ts and append it to
all 17 domain prompts via getDomainPrompt(). Add system_prompt param
to chat_message command so frontend can inject domain expertise. Record
UTC timeline events (triage_started, log_uploaded, why_level_advanced,
root_cause_identified, rca_generated, postmortem_generated,
document_exported) at key moments with non-blocking calls.

Update tauriCommands.ts with getTimelineEventsCmd, optional metadata on
addTimelineEventCmd, and systemPrompt on chatMessageCmd.

12 new frontend tests (9 domain prompts, 3 timeline events).
2026-04-19 18:13:47 -05:00
Shaun Arman
79a623dbb2 feat: populate RCA and postmortem docs with real timeline data
Add format_event_type() and calculate_duration() helpers to convert
raw timeline events into human-readable tables and metrics. RCA now
includes an Incident Timeline section and Incident Metrics (event
count, duration, time-to-root-cause). Postmortem replaces placeholder
timeline rows with real events, calculates impact duration, and
auto-populates What Went Well from evidence.

10 new Rust tests covering timeline rendering, duration calculation,
and event type formatting.
2026-04-19 18:13:30 -05:00
Shaun Arman
107fee8853 feat: add timeline_events table, model, and CRUD commands
- Add migration 017_create_timeline_events with indexes
- Update TimelineEvent struct with issue_id, metadata, UTC string timestamps
- Add TimelineEvent::new() constructor with UUIDv7
- Add timeline_events field to IssueDetail
- Rewrite add_timeline_event to write to new table + audit_log (dual-write)
- Add get_timeline_events command for ordered retrieval
- Update get_issue to load timeline_events
- Update delete_issue to clean up timeline_events
- Register get_timeline_events in generate_handler
- Add migration tests for table, indexes, and cascade delete
- Fix flaky derive_aes_key test (env var race condition in parallel tests)
2026-04-19 18:02:38 -05:00
6d105a70ad chore: update CHANGELOG.md for v0.2.66 [skip ci] 2026-04-15 02:11:31 +00:00
ca56b583c5 Merge pull request 'feat: implement dynamic versioning from Git tags' (#42) from fix/version-dynamic-build into master
All checks were successful
Auto Tag / autotag (push) Successful in 12s
Auto Tag / wiki-sync (push) Successful in 13s
Auto Tag / changelog (push) Successful in 41s
Auto Tag / build-linux-amd64 (push) Successful in 13m51s
Auto Tag / build-linux-arm64 (push) Successful in 15m41s
Auto Tag / build-windows-amd64 (push) Successful in 16m36s
Auto Tag / build-macos-arm64 (push) Successful in 2m22s
Reviewed-on: #42
2026-04-15 02:10:10 +00:00
Shaun Arman
8c35e91aef Merge branch 'master' into fix/version-dynamic-build
Some checks failed
Test / rust-fmt-check (pull_request) Successful in 1m8s
Test / frontend-typecheck (pull_request) Successful in 1m17s
Test / frontend-tests (pull_request) Successful in 1m23s
PR Review Automation / review (pull_request) Failing after 2m11s
Test / rust-clippy (pull_request) Successful in 6m11s
Test / rust-tests (pull_request) Successful in 9m7s
2026-04-14 21:09:11 -05:00