Commit Graph

136 Commits

Author SHA1 Message Date
Shaun Arman
dd06566375 docs: add Custom REST provider documentation
Some checks failed
Release / build-macos-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
- Added GenAI API User Guide.md with complete API specification
- Added HANDOFF-MSI-GENAI.md documenting custom provider implementation
- Includes API endpoints, request/response formats, available models, and rate limits
2026-04-03 15:45:52 -05:00
Shaun Arman
190084888c feat: add Custom REST provider support
- Extended ProviderConfig with optional custom fields for non-OpenAI APIs
- Added custom_endpoint_path, custom_auth_header, custom_auth_prefix fields
- Added api_format field to distinguish between OpenAI and Custom REST provider formats
- Added session_id field for stateful conversation APIs
- Implemented chat_custom_rest() method in OpenAI provider
- Custom REST provider uses different request format (prompt+sessionId) and response (msg field)
- Updated TypeScript types to match Rust schema
- Added UI controls in Settings/AIProviders for custom provider configuration
- API format selector auto-populates appropriate defaults (OpenAI vs Custom REST provider)
- Backward compatible: existing providers default to OpenAI format
2026-04-03 15:45:42 -05:00
Shaun Arman
4172616c8b feat: implement Confluence, ServiceNow, and Azure DevOps REST API clients
- Confluence: OAuth2 bearer auth, list_spaces, search_pages, publish_page, update_page
- ServiceNow: Basic auth, search_incidents, create_incident, get_incident, update_incident
- Azure DevOps: OAuth2 bearer auth, search_work_items, create_work_item, get_work_item, update_work_item
- Added TicketResult.id field to support both sys_id and ticket_number
- All implementations follow TDD with mockito HTTP mocking
- 19 tests passing across all three integrations
2026-04-03 15:43:37 -05:00
Shaun Arman
1e8ef41e64 feat: add OAuth2 frontend UI and complete integration flow
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 2m5s
Release / build-macos-arm64 (push) Successful in 10m29s
Test / rust-clippy (push) Failing after 18m4s
Release / build-linux-arm64 (push) Failing after 22m1s
Test / rust-tests (push) Successful in 12m44s
Test / frontend-typecheck (push) Successful in 1m29s
Test / frontend-tests (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Phase 2.2: OAuth2 flow - FRONTEND COMPLETE 

Implemented:
- TypeScript command wrappers in tauriCommands.ts
  * initiateOauthCmd(service) -> OAuthInitResponse
  * handleOauthCallbackCmd(service, code, stateKey)
  * test*ConnectionCmd() for all services
  * OAuthInitResponse and ConnectionResult types

- Complete Settings/Integrations UI
  * Three integration cards: Confluence, ServiceNow, ADO
  * Connect with OAuth2 buttons (Confluence, ADO)
  * Basic auth note for ServiceNow
  * Configuration inputs: baseUrl, username, projectName, spaceKey
  * Test connection buttons with loading states
  * Success/error feedback with color-coded messages
  * OAuth2 flow instructions for users

- OAuth2 flow in browser
  * Opens auth URL in default browser via shell plugin
  * User authenticates with service
  * Redirected to localhost:8765/callback
  * Callback server handles token exchange automatically
  * Success message shown to user

- CSP updates in tauri.conf.json
  * Added http://localhost:8765 (callback server)
  * Added https://auth.atlassian.com (Confluence OAuth)
  * Added https://*.atlassian.net (Confluence API)
  * Added https://login.microsoftonline.com (ADO OAuth)
  * Added https://dev.azure.com (ADO API)

- UI improvements
  * Fixed Cancel button variant (ghost instead of secondary)
  * Loading spinners with Loader2 icon
  * Check/X icons for success/error states
  * Disabled states when not configured
  * Optimistic UI updates on connect

Frontend + Backend = COMPLETE END-TO-END OAUTH2 FLOW:
1. User goes to Settings → Integrations
2. Enters base URL and config
3. Clicks 'Connect with OAuth2'
4. Browser opens with service auth page
5. User logs in and authorizes
6. Redirected to localhost:8765/callback
7. Token exchanged and encrypted automatically
8. Stored in SQLite credentials table
9. Ready for API calls to external services 

TypeScript: All types checked, no errors
Frontend build:  Built in 2.26s
Total lines: ~400 lines of new UI code

Next: Phase 2.3 - Integration API clients (Confluence REST, ServiceNow REST, ADO REST)
2026-04-03 15:04:12 -05:00
Shaun Arman
05f4b51370 feat: implement OAuth2 callback server with automatic token exchange
Some checks are pending
Auto Tag / auto-tag (push) Waiting to run
Test / rust-fmt-check (push) Waiting to run
Test / rust-clippy (push) Waiting to run
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Phase 2.2: OAuth2 flow - Part 3 (Callback server) COMPLETE 

Implemented:
- Local HTTP server on localhost:8765 using warp
  * GET /callback?code=...&state=... - OAuth redirect handler
  * GET /health - Health check endpoint
  * Graceful shutdown with oneshot channel

- Automatic callback handling
  * Server auto-starts on first initiate_oauth call
  * Background task listens for OAuth redirects
  * Automatically exchanges code for token
  * Stores encrypted token in database
  * Logs audit event for each successful OAuth

- Updated initiate_oauth command
  * Starts callback server if not running
  * Stores (service, verifier) tuple in OAuth state
  * Returns auth URL to open in browser/webview

- Updated handle_oauth_callback_internal
  * Accepts AppState reference (not State)
  * Called automatically by callback server
  * Exchanges code, encrypts token, stores in DB

- Beautiful success/error HTML pages
  * Green checkmark on success
  * Auto-closes window after 3 seconds
  * Clear error messages on failure

- Global state management
  * OAUTH_STATE: Maps state key -> (service, verifier)
  * CALLBACK_SERVER_SHUTDOWN: Holds shutdown channel
  * Thread-safe with Mutex wrappers

Dependencies added:
- warp 0.3 - Lightweight HTTP framework

TDD tests (7 passing with --test-threads=1):
Callback server tests:
  * Health endpoint verification
  * Callback parameter parsing
  * Missing/partial parameter handling
  * Graceful shutdown

Integration command tests:
  * OAuth state storage and retrieval
  * Multiple key management
  * OAuthInitResponse serialization

COMPLETE OAUTH2 FLOW:
1. User calls initiate_oauth("confluence")
2. Callback server starts (if not running)
3. Frontend receives auth URL
4. User opens URL in browser/webview
5. User authorizes, redirected to localhost:8765/callback?code=...
6. Callback server receives redirect
7. Token exchanged automatically
8. Token encrypted and stored in DB
9. Success page shown to user
10. Window auto-closes

Next: Frontend components (AuthWindow, Settings UI, CSP updates)
2026-04-03 14:59:39 -05:00
Shaun Arman
75302a1cc7 feat: add OAuth2 Tauri commands for integration authentication
Some checks are pending
Auto Tag / auto-tag (push) Waiting to run
Test / rust-fmt-check (push) Waiting to run
Test / rust-clippy (push) Waiting to run
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Phase 2.2: OAuth2 flow - Part 2 (Tauri commands)

Implemented:
- initiate_oauth command
  * Generates PKCE challenge
  * Creates state key for OAuth session
  * Stores verifier in global OAuth state
  * Returns authorization URL for Confluence/ADO
  * ServiceNow uses basic auth (not OAuth2)

- handle_oauth_callback command
  * Retrieves and removes verifier from state
  * Exchanges authorization code for access token
  * Encrypts and stores token in DB
  * Logs audit event for successful OAuth

- OAuthInitResponse type for frontend
  * auth_url: Full OAuth authorization URL
  * state: Session key for callback matching

- Global OAUTH_STATE storage (lazy_static)
  * Thread-safe HashMap for PKCE verifiers
  * Temporary storage during OAuth flow
  * Automatically cleaned up after exchange

Service configuration:
- Confluence: auth.atlassian.com OAuth2
- Azure DevOps: login.microsoftonline.com OAuth2
- ServiceNow: Basic auth (not OAuth2)

Client IDs from env vars:
- CONFLUENCE_CLIENT_ID
- ADO_CLIENT_ID

Dependencies added:
- lazy_static 1.4 - Global static initialization

TDD tests (3 passing):
- OAuth state storage and retrieval
- Multiple key management
- OAuthInitResponse serialization

Commands registered in lib.rs generate_handler![]

Next: Local HTTP callback server for OAuth redirects
2026-04-03 14:50:13 -05:00
Shaun Arman
01474fb5f2 feat: implement OAuth2 token exchange and AES-256-GCM encryption
Phase 2.2: OAuth2 flow - Part 1 (Token exchange + encryption)

Implemented:
- OAuth2 authorization code exchange with PKCE
  * Real HTTP POST to token endpoint
  * Parses access_token, refresh_token, expires_in, token_type
  * Calculates expires_at timestamp

- AES-256-GCM token encryption
  * Uses TFTSR_ENCRYPTION_KEY env var (or dev default)
  * Random nonce per encryption (12 bytes)
  * Base64-encoded output with nonce prepended
  * Proper key derivation (32 bytes)

- Updated credential storage
  * store_pat() now encrypts tokens before DB storage
  * get_pat() decrypts tokens on retrieval
  * Stores both token_hash (audit) and encrypted_token (actual)

Dependencies added:
- mockito 1.7.2 (dev) - HTTP mocking for tests
- aes-gcm 0.10 - AES-256-GCM encryption
- rand 0.8 - Cryptographically secure RNG

TDD tests (20 passing with --test-threads=1):
- OAuth exchange: success, missing token, HTTP error, network error
- Encryption: roundtrip, different nonces, invalid data, wrong key
- PAT storage: store/retrieve, nonexistent service, replacement

Note: Tests require single-threaded execution due to env var
test isolation. This is acceptable for CI/CD.
2026-04-03 14:32:17 -05:00
Shaun Arman
fd244781e1 feat: add database schema for integration credentials and config
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 6s
Release / build-macos-arm64 (push) Failing after 1m32s
Test / rust-fmt-check (push) Successful in 2m6s
Test / rust-clippy (push) Successful in 17m38s
Release / build-linux-arm64 (push) Failing after 20m53s
Test / rust-tests (push) Has been cancelled
Release / build-linux-amd64 (push) Failing after 13m24s
Release / build-windows-amd64 (push) Failing after 7m37s
Phase 2.1: Database schema + credentials storage

Added migration 011 with:
- credentials table: Encrypted OAuth tokens per service
- integration_config table: Base URLs, project names, space keys

Added models:
- Credential: Stores token hash and encrypted token
- IntegrationConfig: Stores service configuration

TDD tests (7 passing):
- Table creation verification
- Column structure validation
- Insert/retrieve operations
- Service uniqueness constraints
- Migration tracking
- Idempotency checks

All tests pass. Schema ready for OAuth2 implementation.
2026-04-03 14:23:49 -05:00
Shaun Arman
bbc43f7428 fix: improve Cancel button contrast in AI disclaimer modal
Changed variant from 'outline' to 'secondary' for better visibility
in dark theme. The outline variant had insufficient contrast making
the button difficult to read.
2026-04-03 14:20:44 -05:00
Shaun Arman
bc93f48711 chore: bump version to 0.2.2
Some checks failed
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 2m11s
Release / build-macos-arm64 (push) Successful in 6m30s
Test / rust-clippy (push) Successful in 17m21s
Release / build-linux-arm64 (push) Failing after 21m36s
Test / rust-tests (push) Successful in 12m42s
Test / frontend-typecheck (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
2026-04-03 13:51:25 -05:00
Shaun Arman
b6b4b9f7f9 chore: bump version to 0.2.1
Some checks failed
Auto Tag / auto-tag (push) Has been cancelled
Test / rust-fmt-check (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
2026-04-03 13:49:33 -05:00
Shaun Arman
60e4fe93a4 feat: add AI disclaimer modal before creating new issues
Some checks failed
Test / rust-fmt-check (push) Successful in 1m28s
Test / rust-clippy (push) Successful in 11m35s
Test / rust-tests (push) Successful in 12m33s
Test / frontend-typecheck (push) Successful in 1m37s
Test / frontend-tests (push) Successful in 1m40s
Auto Tag / auto-tag (push) Successful in 7s
Release / build-macos-arm64 (push) Successful in 6m16s
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Add professional disclaimer warning that users must accept before
creating issues. Modal appears on first visit to New Issue page.

Disclaimer covers:
- AI can make mistakes and hallucinate
- AI may provide incorrect or outdated information
- Commands may have unintended consequences
- User bears full responsibility for any actions taken
- Best practices for using AI recommendations safely

Features:
- Modal overlay with clear warning sections
- Color-coded sections (red for risks, yellow for responsibility)
- Scrollable content area for long disclaimer
- Acceptance stored in localStorage (persists across sessions)
- Re-shows modal if user tries to create issue without accepting
- Cancel button returns to dashboard

Tested: TypeScript compilation ✓, Rust formatting ✓

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 13:03:48 -05:00
Shaun Arman
945ff6c6a4 fix: implement native DOCX export without pandoc dependency
Some checks failed
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Failing after 4s
Test / rust-fmt-check (push) Successful in 1m32s
Test / rust-clippy (push) Has been cancelled
Replace pandoc-based DOCX export with native Rust implementation
using docx-rs crate. DOCX export now works out of the box without
requiring users to install external tools.

Changes:
- Added docx-rs dependency to Cargo.toml
- Implemented export_docx() in exporter.rs
- Removed pandoc subprocess calls from docs.rs
- Uses same markdown parsing as PDF export
- Handles titles, headings, and normal text with appropriate styling

Tested:
- Rust compilation ✓
- Rust formatting ✓
- TypeScript types ✓

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 12:53:36 -05:00
Shaun Arman
f738ee26ed chore: bump version to 0.2.0 after cleanup
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 2m11s
Release / build-macos-arm64 (push) Successful in 5m40s
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Fresh start with clean release history.

All previous tags and releases have been cleaned up.
This commit will trigger auto-tag to create v0.2.0.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 12:39:43 -05:00
Shaun Arman
6602fd7cd2 fix: improve download button visibility and add DOCX export
Some checks failed
Test / rust-fmt-check (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Auto Tag / auto-tag (push) Has been cancelled
1. Download Button Visibility:
   - Changed from variant=outline to default variant (solid background)
   - Provides better contrast and icon visibility in both themes
   - Removed unnecessary text-foreground class

2. DOCX Export Support:
   - Added DOCX export via pandoc conversion
   - Writes temp markdown file, converts with pandoc, cleans up
   - Returns clear error if pandoc not installed
   - Supports same workflow as MD/PDF exports

3. Triaging Status Investigation:
   - triaging status is defined in schema and used in dashboard counts
   - Currently not automatically set when entering triage
   - Kept in filter dropdown as part of the data model

Tested: Rust compilation, TypeScript types, Rust formatting

Note: DOCX export requires pandoc to be installed on the system.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 12:33:27 -05:00
Shaun Arman
952cf4fe27 fix: install jq in Linux/Windows build containers
Some checks failed
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 5s
Test / rust-fmt-check (push) Successful in 2m3s
Test / rust-clippy (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-macos-arm64 (push) Failing after 5m24s
Release / build-linux-amd64 (push) Has been cancelled
Add jq package to apt-get install commands for:
- build-linux-amd64
- build-windows-amd64
- build-linux-arm64

This fixes upload failures where jq was not available to parse
the release API JSON response.

Tested:
- YAML syntax validation ✓
- jq command parsing ✓
- Error handling logic ✓

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 12:16:36 -05:00
Shaun Arman
905487be5b fix: improve release artifact upload error handling
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 2m9s
Release / build-macos-arm64 (push) Successful in 5m41s
Test / rust-clippy (push) Successful in 17m30s
Release / build-linux-arm64 (push) Failing after 21m46s
Test / rust-tests (push) Successful in 12m47s
Test / frontend-typecheck (push) Successful in 1m27s
Test / frontend-tests (push) Successful in 1m29s
Release / build-linux-amd64 (push) Failing after 20m6s
Release / build-windows-amd64 (push) Failing after 14m15s
- Use jq instead of grep for JSON parsing
- Add explicit error checking for RELEASE_ID
- Add informative logging for debugging upload failures
- Fail fast if release ID cannot be retrieved

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 11:01:02 -05:00
Shaun Arman
0279d182ff chore: bump version to 0.1.22
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 2m14s
Release / build-macos-arm64 (push) Failing after 5m36s
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Update tauri.conf.json version to match release tags. This ensures
macOS properly replaces the app when installing from DMG.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 10:53:17 -05:00
Shaun Arman
d6117034ee fix: ARM64 build native compilation instead of cross-compilation
Some checks failed
Auto Tag / auto-tag (push) Successful in 6s
Test / rust-fmt-check (push) Successful in 2m8s
Test / rust-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-macos-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
The linux-arm64 job runs on a native ARM64 runner, so cross-compilation
setup is not needed. Removed dpkg --add-architecture, cross-compiler,
and architecture-specific package suffixes. This fixes "held broken
packages" error during dependency installation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 10:05:55 -05:00
Shaun Arman
484bfbe089 chore: fix Rust formatting
Some checks failed
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 5s
Test / rust-fmt-check (push) Successful in 2m5s
Release / build-linux-arm64 (push) Failing after 2m10s
Release / build-macos-arm64 (push) Successful in 5m15s
Test / rust-clippy (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Apply cargo fmt to fix CI formatting check failures.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 10:00:25 -05:00
Shaun Arman
0235541c9b fix: UI visibility issues, export errors, filtering, and audit log enhancement
Some checks failed
Auto Tag / auto-tag (push) Successful in 5s
Release / build-linux-arm64 (push) Failing after 2m19s
Test / rust-fmt-check (push) Failing after 2m18s
Release / build-macos-arm64 (push) Successful in 7m41s
Test / rust-clippy (push) Successful in 12m4s
Test / rust-tests (push) Successful in 12m40s
Test / frontend-typecheck (push) Successful in 1m43s
Test / frontend-tests (push) Successful in 1m21s
Release / build-linux-amd64 (push) Successful in 20m49s
Release / build-windows-amd64 (push) Successful in 13m59s
- Fix download icons (PDF/DOCX) not visible in dark theme by adding text-foreground class
- Fix "Read-only file system" error by using Downloads directory for exports with proper fallback
- Fix Search button visibility in History page by changing variant and adding icon
- Fix domain-only filtering in History page by adding missing filter.domain handling
- Enhance audit log to capture full transmitted data (provider details, messages, content previews)
- Add dirs crate dependency for cross-platform directory detection
- Add success/error feedback for document exports with file path display
- Update Security page to display pretty-printed JSON audit details

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 08:37:47 -05:00
Shaun Arman
b356eef44f fix: remove Woodpecker CI and fix Gitea Actions ARM64 build
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 5s
Test / rust-fmt-check (push) Successful in 2m11s
Release / build-linux-arm64 (push) Failing after 2m15s
Release / build-macos-arm64 (push) Successful in 5m25s
Test / rust-clippy (push) Successful in 12m10s
Test / rust-tests (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
- Remove .woodpecker/ directory entirely (not in use)
- Fix ARM64 build in .gitea/workflows/release.yml:
  - Remove --platform flag (Docker version too old)
  - Use cross-compilation instead (dpkg multiarch + gcc-aarch64-linux-gnu)
  - Set PKG_CONFIG environment variables for ARM64 libraries
  - Set CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER

This matches the working cross-compilation approach from commit d489338b.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 08:10:29 -05:00
Shaun Arman
0609425140 chore: ignore PNG screenshot files
Some checks failed
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Release / build-linux-arm64 (push) Failing after 1s
Auto Tag / auto-tag (push) Successful in 5s
Test / rust-fmt-check (push) Successful in 1m38s
Test / rust-clippy (push) Has been cancelled
Release / build-macos-arm64 (push) Successful in 4m55s
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 08:06:06 -05:00
Shaun Arman
4c4ca40146 fix: UI contrast issues and ARM64 build failure
**UI Fixes (TDD approach - tests first, then implementation):**
- Resolution steps: improved text contrast (text-foreground vs muted)
- DocEditor preview: added text-foreground class for readability
- History page: fixed domain display (category field) with better contrast
- Audit Log: added expandable rows with View/Hide buttons to show transmitted data
- Dashboard & buttons: already had proper contrast with outline variant
- Export document: fixed missing title/content parameters in command signature

**Tests Added (13 new tests, all passing):**
- tests/unit/resolution.test.tsx - resolution steps contrast
- tests/unit/docEditor.test.tsx - preview mode and export buttons
- tests/unit/exportDocument.test.ts - export parameters validation
- tests/unit/history.test.tsx - domain display and filtering
- tests/unit/dashboard.test.tsx - refresh button visibility
- tests/unit/auditLog.test.tsx - data visibility and expandable rows
- tests/unit/setup.ts - added @testing-library/jest-dom matchers

**CI Fix:**
- Removed platform label from ARM64 build step (native agent, old Docker)

**Test Results:**
- Frontend: 38/38 passing 
- Backend: 64/64 passing 
- TypeScript: no errors 

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-03 08:05:58 -05:00
Shaun Arman
03cc9914ad fix: domainPrompts closing brace too early; arm64 use native platform image
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Release / build-linux-arm64 (push) Failing after 0s
Test / rust-fmt-check (push) Successful in 1m4s
Release / build-macos-arm64 (push) Successful in 5m26s
Test / rust-clippy (push) Successful in 7m41s
Test / rust-tests (push) Successful in 8m13s
Test / frontend-typecheck (push) Successful in 1m28s
Test / frontend-tests (push) Successful in 1m12s
Release / build-linux-amd64 (push) Successful in 16m13s
Release / build-windows-amd64 (push) Successful in 13m30s
- domainPrompts.ts: closing }; was inside the Record object after 'automation',
  leaving hpe_infra/dell_hardware/identity orphaned outside the object — caused
  3 TS1005/TS1109 errors and broke the macOS and all frontend builds
- release.yml: replace multiarch cross-compilation (broken due to WebKit arm64
  package conflicts) with --platform linux/arm64 container option so QEMU runs
  a native ARM64 image directly — no cross-compilation, no package conflicts
2026-03-31 19:36:07 -05:00
Shaun Arman
3d3f877eb3 feat: add HPE, Dell, Identity domains + expand k8s/security/observability/VESTA NXT
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Release / build-macos-arm64 (push) Failing after 37s
Test / rust-fmt-check (push) Successful in 1m4s
Release / build-linux-arm64 (push) Failing after 1m13s
Test / rust-clippy (push) Successful in 7m32s
Test / rust-tests (push) Successful in 8m19s
Test / frontend-typecheck (push) Failing after 1m22s
Test / frontend-tests (push) Successful in 1m20s
Release / build-linux-amd64 (push) Failing after 9m19s
Release / build-windows-amd64 (push) Failing after 6m45s
New domains:
- HPE Infrastructure: OneView v8.5, iLO, Synergy 12000/480 Gen10/11, DL360/320/20,
  Image Streamer, SSP, Smart Update Manager, RACADM equivalents
- Dell Hardware: iDRAC 8/9/10, RACADM, Lifecycle Controller, PERC/StorCLI,
  OpenManage, R-series PowerEdge servers
- Identity & Access: Keycloak realm/SSO/LDAP federation, HashiCorp Boundary,
  SSSD/AD integration, Kerberos

Expanded domains:
- Kubernetes: add RKE2, OpenShift/KubeVirt (OCP operators, must-gather, CDI)
- Security: add Cortex XDR, Trellix, Rapid7, CIS hardening, fapolicyd, AIDE
- Observability: add Beats agents (Filebeat/Metricbeat/Packetbeat), Zabbix Proxy,
  OpenTelemetry collector pipeline troubleshooting
- Public Safety: add full VESTA NXT microservices (Skipper, CTC, i3 services,
  Analytics/PEIDB, Management Console, Porter/Helm deployment context)
2026-03-31 18:32:40 -05:00
Shaun Arman
99ec66c77b feat: expand domains to 13 — add Telephony, Security/Vault, Public Safety, Application, Automation/CI-CD
Some checks failed
Auto Tag / auto-tag (push) Successful in 3s
Release / build-linux-arm64 (push) Failing after 1m7s
Test / rust-fmt-check (push) Successful in 1m7s
Release / build-macos-arm64 (push) Successful in 4m55s
Test / rust-clippy (push) Successful in 7m21s
Test / rust-tests (push) Successful in 8m19s
Test / frontend-typecheck (push) Successful in 1m25s
Test / frontend-tests (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
New domains: Telephony (Asterisk, AudioCodes SBC, SIP/RTP), Security/Vault
(HashiCorp Vault, PKI, mTLS), Public Safety (NENA i3, NG911, CAD, PSAP),
Application (Java/JVM, Spring Boot, Tomcat), Automation/CI-CD (Ansible,
Jenkins, Porter, Helm).

Existing domains expanded: Linux adds RHEL 8/9 + OEL 6/7/8/9 + Debian specifics;
Windows adds 10/11 + Server 2019/2022; Network adds Fortigate/Cisco/Aruba/Nokia;
Kubernetes adds k3s/Rancher/ECK; Databases adds MS SQL/RabbitMQ/Patroni;
Virtualization adds Proxmox; Observability adds Grafana/Kibana specifics.
2026-03-31 18:13:30 -05:00
Shaun Arman
f04b5dfe06 fix: close from chat works before issue loads; save user reason as resolution step; dynamic version
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Release / build-linux-arm64 (push) Failing after 1m7s
Test / rust-fmt-check (push) Successful in 1m11s
Release / build-macos-arm64 (push) Successful in 4m37s
Test / rust-clippy (push) Successful in 7m20s
Test / rust-tests (push) Successful in 8m5s
Test / frontend-typecheck (push) Successful in 1m22s
Test / frontend-tests (push) Successful in 1m16s
Release / build-linux-amd64 (push) Successful in 16m17s
Release / build-windows-amd64 (push) Successful in 13m5s
- Triage: move close intent check before the currentIssue guard so closing
  works even if the session hasn't fully initialized yet
- Triage: save the user's close reason as a resolution step via addFiveWhyCmd
  before marking resolved, ensuring Resolution page is never empty
- App: read version from Tauri getVersion() instead of hardcoded v0.1.1
2026-03-31 13:06:12 -05:00
Shaun Arman
47af97b68e feat: close issues, restore history, auto-save resolution steps
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 1m2s
Release / build-linux-arm64 (push) Failing after 1m11s
Release / build-macos-arm64 (push) Successful in 4m31s
Test / rust-clippy (push) Successful in 7m44s
Test / rust-tests (push) Has been cancelled
Release / build-linux-amd64 (push) Successful in 16m6s
Release / build-windows-amd64 (push) Successful in 12m38s
- db.rs: add get_issue_messages command (joins ai_conversations + ai_messages)
- tauriCommands.ts: fix updateIssueCmd to pass updates as nested object
  (was spreading inline — Rust expects {issueId, updates}); fix addFiveWhyCmd
  parameter names to match Rust (stepOrder, whyQuestion, answer, evidence);
  add getIssueMessagesCmd and IssueMessage interface
- Dashboard: X button on each open issue row to close (mark resolved) inline
- Triage: restore conversation history from DB when revisiting existing issues;
  detect close intent patterns and mark issue resolved + navigate home;
  auto-save resolution step via addFiveWhyCmd when AI advances why level
- tests: add issueActions.test.ts covering IPC arg structure and close intent
2026-03-31 12:50:39 -05:00
Shaun Arman
2f2becd4f2 docs: add LiteLLM + AWS Bedrock integration guide
Some checks failed
Auto Tag / auto-tag (push) Has been cancelled
Test / rust-fmt-check (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Add comprehensive documentation for integrating AWS Bedrock Claude models via LiteLLM proxy. Enables enterprise users to leverage existing AWS contracts while maintaining OpenAI-compatible API interface.

Changes:
- README.md: Add quickstart section for LiteLLM + Bedrock setup
- docs/wiki/LiteLLM-Bedrock-Setup.md: New comprehensive guide covering single/multi-account setup, Claude Code integration, troubleshooting, and auto-start configuration
- docs/wiki/AI-Providers.md: Update OpenAI-compatible section to reference LiteLLM
- docs/wiki/Home.md: Add LiteLLM guide to navigation and feature list

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-31 12:13:26 -05:00
Shaun Arman
d489338bc4 fix: arm64 linux cross-compilation — add multiarch and pkg-config env vars
Some checks failed
Auto Tag / auto-tag (push) Successful in 3s
Release / build-linux-arm64 (push) Failing after 1m8s
Test / rust-fmt-check (push) Successful in 1m8s
Release / build-macos-arm64 (push) Successful in 4m27s
Test / rust-clippy (push) Successful in 7m15s
Test / rust-tests (push) Successful in 8m4s
Test / frontend-typecheck (push) Successful in 1m29s
Test / frontend-tests (push) Successful in 1m18s
Release / build-linux-amd64 (push) Successful in 16m23s
Release / build-windows-amd64 (push) Successful in 13m2s
The linux-arm64 runner runs an x86_64 Docker container so cross-compilation
requires the ARM64 sysroot via dpkg --add-architecture arm64, gcc-aarch64-linux-gnu,
and arm64 variants of all system libraries. PKG_CONFIG env vars point to the
aarch64 library paths so Tauri can find webkit/gtk/etc at compile time.
2026-03-31 11:52:10 -05:00
Shaun Arman
5b37bd3435 fix: listIssuesCmd was sending {query} but Rust expects {filter} — caused dashboard to always show 0 open issues
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Release / build-macos-arm64 (push) Successful in 3m45s
Test / rust-fmt-check (push) Failing after 10m37s
Release / build-linux-arm64 (push) Failing after 10m6s
Test / rust-clippy (push) Successful in 7m12s
Test / rust-tests (push) Successful in 7m56s
Test / frontend-typecheck (push) Successful in 1m28s
Test / frontend-tests (push) Successful in 1m12s
Release / build-linux-amd64 (push) Successful in 16m17s
Release / build-windows-amd64 (push) Successful in 13m11s
2026-03-31 09:09:57 -05:00
Shaun Arman
944b14e5c4 fix: dashboard shows — while loading, exposes errors, adds refresh button
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 1m7s
Release / build-macos-arm64 (push) Successful in 4m1s
Test / rust-clippy (push) Successful in 7m26s
Test / rust-tests (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Stat cards showed 0 immediately on mount because openCount was computed
from an empty issues array before the async loadIssues call resolved.
Now shows — during load, a red error banner if the backend call fails,
and a Refresh button. useEffect dependency changed to [] (fires once on
mount, not on every loadIssues reference check).
2026-03-31 08:55:05 -05:00
Shaun Arman
5537b0b042 feat: inline file/screenshot attachment in triage chat
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 1m11s
Release / build-macos-arm64 (push) Successful in 3m43s
Test / rust-clippy (push) Successful in 7m10s
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
- NewIssue navigates directly to /triage — log upload is never a blocker
- ChatWindow: paperclip button opens Tauri file dialog; pending files shown
  as removable chips above the input; send enabled with files and no text
- Triage: uploads selected files via uploadLogFileCmd, reads text content
  (capped at 8KB), appends file contents to AI message for context while
  showing only filenames in the chat bubble
- Images/binary files are referenced by name with a prompt for the user
  to describe them
2026-03-31 08:40:36 -05:00
Shaun Arman
ebf60d17c6 fix: navigate to /logs after issue creation, fix dashboard category display
Some checks failed
Test / frontend-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Auto Tag / auto-tag (push) Successful in 3s
Test / rust-fmt-check (push) Successful in 1m6s
Release / build-macos-arm64 (push) Successful in 3m24s
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Test / rust-clippy (push) Successful in 7m15s
Test / rust-tests (push) Has been cancelled
- NewIssue: navigate to /issue/:id/logs so log upload step is not skipped
- Dashboard: use issue.category instead of issue.domain (field name matches Rust)
- tests: add historyStore tests covering open count logic and field mapping
2026-03-31 08:26:25 -05:00
Shaun Arman
74afb47eac fix: provider routing uses provider_type, Active badge, fmt
Some checks failed
Auto Tag / auto-tag (push) Successful in 3s
Test / rust-fmt-check (push) Successful in 58s
Release / build-macos-arm64 (push) Successful in 4m13s
Test / rust-clippy (push) Successful in 7m25s
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Test / rust-tests (push) Successful in 8m11s
Test / frontend-typecheck (push) Successful in 1m33s
Test / frontend-tests (push) Successful in 1m16s
2026-03-31 08:05:13 -05:00
Shaun Arman
652418017c fix: provider test FK error, model pull white screen, RECOMMENDED badge
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Failing after 1m1s
Release / build-macos-arm64 (push) Successful in 3m2s
Test / rust-clippy (push) Successful in 7m16s
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
2026-03-31 07:46:36 -05:00
Shaun Arman
56e52ee09c fix: Ollama detection, install guide UI, and AI Providers auto-fill
Some checks failed
Auto Tag / auto-tag (push) Successful in 3s
Test / rust-fmt-check (push) Failing after 1m2s
Release / build-macos-arm64 (push) Successful in 2m50s
Test / rust-clippy (push) Successful in 7m24s
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
2026-03-31 07:25:33 -05:00
Shaun Arman
366c564834 fix: add explicit text-foreground to SelectTrigger, SelectValue, and SelectItem
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 1m11s
Test / rust-clippy (push) Successful in 7m12s
Test / rust-tests (push) Successful in 8m9s
Test / frontend-typecheck (push) Successful in 1m22s
Test / frontend-tests (push) Successful in 1m13s
Release / build-macos-arm64 (push) Successful in 2m57s
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Color inheritance was not propagating on macOS WebKit causing dropdown
text to be invisible. Items only appeared when hovered due to
hover:text-accent-foreground being the only color set.
2026-03-30 17:19:34 -05:00
Shaun Arman
790f9520bd fix: dropdown text invisible on macOS + correct codesign order for DMG
Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 57s
Release / build-macos-arm64 (push) Successful in 2m43s
Test / rust-clippy (push) Successful in 7m17s
Test / rust-tests (push) Successful in 8m10s
Test / frontend-typecheck (push) Successful in 1m25s
Test / frontend-tests (push) Successful in 1m20s
Release / build-linux-amd64 (push) Successful in 16m2s
Release / build-windows-amd64 (push) Successful in 13m17s
Release / build-linux-arm64 (push) Has been cancelled
- globals.css: add button reset with -webkit-appearance: none and
  -webkit-text-fill-color: currentColor so SelectTrigger text is visible
  on macOS WebKit without breaking Tailwind text-* variant overrides
- release.yml: build .app only first, ad-hoc sign it, then create DMG
  via hdiutil so the signed .app is inside the DMG (previously codesign
  ran after Tauri already sealed the unsigned .app into the DMG)
2026-03-30 16:43:00 -05:00
Shaun Arman
720c7511cd feat: auto-increment patch tag on every merge to master
Some checks failed
Auto Tag / auto-tag (push) Waiting to run
Test / rust-fmt-check (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Creates a new vX.Y.Z tag on each push to master using the Gitea API.
The new tag triggers release.yml to build and publish installers for
all platforms automatically.
2026-03-30 16:32:55 -05:00
66c56aa61d Merge pull request 'feat: macOS arm64 runner, UI fixes, and create_issue IPC fix' (#1) from feat/macos-runner into master
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Test / rust-fmt-check (push) Successful in 1m10s
Test / rust-clippy (push) Successful in 7m12s
Test / rust-tests (push) Has been cancelled
Release / build-macos-arm64 (push) Successful in 2m53s
Release / build-linux-amd64 (push) Successful in 15m47s
Release / build-linux-arm64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
Reviewed-on: #1
2026-03-30 20:57:43 +00:00
Shaun Arman
16d537c4af fix: button text visibility, toggle contrast, create_issue IPC, ad-hoc codesign
Some checks failed
Test / rust-fmt-check (push) Successful in 1m5s
Test / rust-tests (push) Has been cancelled
Test / frontend-typecheck (push) Has been cancelled
Test / frontend-tests (push) Has been cancelled
Test / rust-clippy (push) Has been cancelled
Test / rust-fmt-check (pull_request) Successful in 1m4s
Test / rust-clippy (pull_request) Successful in 7m8s
Test / rust-tests (pull_request) Successful in 8m21s
Test / frontend-typecheck (pull_request) Successful in 1m29s
Test / frontend-tests (pull_request) Successful in 1m15s
- globals.css: remove button from WebKit -webkit-text-fill-color override that
  was causing button text to be invisible (text color matched background in dark mode)
- Security.tsx: toggle enabled state uses bg-blue-500 instead of bg-primary;
  in dark mode --primary is near-white making the white knob invisible
- tauriCommands.ts: fix createIssueCmd to pass flat args (not wrapped in newIssue),
  map domain->category, and return Issue instead of IssueDetail
- NewIssue/index.tsx: update call site to use Issue return type directly
- release.yml: add ad-hoc codesign step for macOS .app so Gatekeeper shows
  "unidentified developer" instead of "damaged" error
2026-03-30 15:52:43 -05:00
Shaun Arman
793ab7d582 feat: add macOS arm64 act_runner and release build job
Some checks failed
Test / rust-fmt-check (push) Successful in 1m5s
Release / build-macos-arm64 (push) Successful in 4m13s
Test / rust-clippy (push) Successful in 7m26s
Test / rust-tests (push) Successful in 7m58s
Test / frontend-typecheck (push) Successful in 1m30s
Test / frontend-tests (push) Successful in 1m16s
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
- Register Apple Silicon Mac as act_runner with label macos-arm64
- Add build-macos-arm64 job to Gitea Actions release pipeline
- Produces unsigned .dmg artifact for aarch64-apple-darwin
- Update CICD-Pipeline.md to reflect Gitea Actions agents
2026-03-30 15:18:38 -05:00
Shaun Arman
032341b96d docs: update README, wiki, and UI version to v0.1.1
Some checks failed
Test / rust-fmt-check (push) Successful in 1m3s
Release / build-linux-arm64 (push) Successful in 6m24s
Test / rust-clippy (push) Successful in 7m26s
Test / rust-tests (push) Successful in 8m53s
Test / frontend-typecheck (push) Successful in 1m28s
Test / frontend-tests (push) Successful in 1m15s
Release / build-linux-amd64 (push) Successful in 16m43s
Release / build-windows-amd64 (push) Failing after 13m46s
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 21:27:52 -05:00
Shaun Arman
66de8f71cb fix: set SQLCipher cipher_page_size BEFORE first database access
Some checks are pending
Test / rust-fmt-check (push) Waiting to run
Test / rust-clippy (push) Waiting to run
Test / rust-tests (push) Waiting to run
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Previously cipher_page_size was set AFTER the verification SELECT,
making it a no-op (SQLCipher locks page size on first access). This
caused two bugs:

1. Databases were created with the default page size regardless of the
   setting, then flushed on close using misaligned 4KB mmap pages on
   16KB kernel → corrupted file → SQLITE_NOTADB on reopen.

2. Reopening an existing DB used default (potentially wrong) page size
   for the initial read → decryption failure.

Fix: batch all cipher settings (key, page_size, kdf_iter, algorithms)
into a single execute_batch call BEFORE the first SELECT. This ensures:
- New databases are created with 16KB pages (aligned to Asahi kernel)
- Existing 16KB-page databases are reopened with the correct page size
- Close/flush operations use properly aligned mmap → no corruption

Note: existing 4KB-page databases (from v0.1.0) remain incompatible
and must be deleted once on upgrade.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 21:25:43 -05:00
Shaun Arman
9c3f924f27 fix: prevent WebKit/GTK system theme from overriding input text colors on Linux
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Test / rust-fmt-check (push) Successful in 1m8s
Test / rust-clippy (push) Successful in 7m37s
Test / rust-tests (push) Has been cancelled
Release / build-linux-amd64 (push) Failing after 30s
Release / build-linux-arm64 (push) Waiting to run
Release / build-windows-amd64 (push) Has been cancelled
On Linux, WebKit inherits GTK system text colors for form controls,
causing dark-on-dark text in dark mode. Explicitly set color and
-webkit-text-fill-color on inputs/textareas/buttons, and add
color-scheme: dark to .dark so WebKit uses the correct system UI
color scheme.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 21:14:28 -05:00
Shaun Arman
5d29f7fb61 chore: bump version to 0.1.1
Some checks failed
Test / frontend-typecheck (push) Waiting to run
Test / frontend-tests (push) Waiting to run
Test / rust-fmt-check (push) Failing after 4s
Test / rust-clippy (push) Successful in 7m56s
Test / rust-tests (push) Has been cancelled
Release / build-linux-amd64 (push) Failing after 1m0s
Release / build-linux-arm64 (push) Waiting to run
Release / build-windows-amd64 (push) Has been cancelled
2026-03-29 21:01:08 -05:00
Shaun Arman
1e5284d4e0 fix: remove unused tauri-plugin-updater + SQLCipher 16KB page size
Some checks failed
Test / rust-fmt-check (push) Successful in 1m6s
Test / rust-clippy (push) Successful in 7m13s
Test / rust-tests (push) Successful in 9m3s
Test / frontend-typecheck (push) Successful in 3m29s
Test / frontend-tests (push) Successful in 1m27s
Release / build-windows-amd64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Two startup crashes on first-party Tauri plugin init:
- tauri-plugin-updater registered with no plugins.updater config → removed
- tauri-plugin-cli was already removed in a prior commit

SQLCipher page size fix:
- cipher_page_size 4096 → 16384
- 4KB SQLCipher pages cause malloc() failures on Linux kernels with
  16KB page size (Asahi Linux aarch64+16k, Apple Silicon)
- 16384 is a valid page size that works on both 4KB and 16KB page kernels
- New installs get a 16KB-page database; existing 4KB-page DBs must
  be deleted for the new page size to take effect

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:12:15 -05:00
Shaun Arman
73f9c3419d ci: restrict test.yml to branch pushes only (not tags)
Some checks failed
Test / rust-clippy (push) Successful in 7m32s
Test / rust-fmt-check (push) Failing after 13m17s
Test / rust-tests (push) Successful in 8m5s
Test / frontend-typecheck (push) Successful in 1m37s
Test / frontend-tests (push) Has been cancelled
Release / build-linux-arm64 (push) Has been cancelled
Release / build-linux-amd64 (push) Has been cancelled
Release / build-windows-amd64 (push) Has been cancelled
2026-03-29 18:56:00 -05:00