Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
fdee10c
feat(merge): add showMergeTabsDialog state to ui-store
adamgell Apr 2, 2026
ed18e0c
feat(merge): add pure merge logic — sorting, colors, correlation
adamgell Apr 2, 2026
08a27b6
feat(merge): add MergedTabState, merge/correlation actions to log store
adamgell Apr 2, 2026
4cae366
feat(merge): create MergeLegendBar with file toggles and correlation …
adamgell Apr 2, 2026
b1670ea
feat(merge): create MergeTabsDialog component
adamgell Apr 2, 2026
dfdcd12
feat(merge): add Merge Tabs button to toolbar
adamgell Apr 2, 2026
55c3af1
feat(merge): wire MergeTabsDialog into AppShell
adamgell Apr 2, 2026
8a114b3
feat(merge): show merged tab indicator in tab strip
adamgell Apr 2, 2026
de88389
feat(merge): add file color borders, correlation highlights, and lege…
adamgell Apr 2, 2026
39029c1
feat(merge): add Merge into Timeline button to folder sidebar
adamgell Apr 2, 2026
f3781fd
feat(merge): add correlated entries section to InfoPane
adamgell Apr 2, 2026
970d315
docs: add unified timeline spec and implementation plan
adamgell Apr 2, 2026
4e139a1
docs: add session save/restore and log diff specs
adamgell Apr 2, 2026
8ccf924
feat(session): add recentSessions state to ui-store
adamgell Apr 2, 2026
b02fe6c
feat(session): add compute_file_hash Rust command
adamgell Apr 2, 2026
bdf565d
feat(diff): add normalization, pattern key, and classification logic
adamgell Apr 2, 2026
c38c6bc
feat(session): add session types, save, and restore logic
adamgell Apr 2, 2026
2142300
feat(diff): add DiffState and diff actions to log store
adamgell Apr 2, 2026
9c9901c
feat(session): add Save/Open Session menu items and handlers
adamgell Apr 2, 2026
66e5762
feat(diff): add DiffConfigDialog, toolbar button, and ui-store state
adamgell Apr 2, 2026
fabbbad
feat(diff): create DiffView with side-by-side and unified modes
adamgell Apr 2, 2026
918fc15
feat: wire DiffConfigDialog into AppShell, render DiffView, update ch…
adamgell Apr 2, 2026
b4f7894
fix: address code review — scroll sync, session restore, validation, …
adamgell Apr 2, 2026
f48719f
fix: address Copilot PR review — accessibility, UTF-8, GUID casing, c…
adamgell Apr 2, 2026
c2b7ade
Add Graph API GUID resolution (Windows)
adamgell Apr 2, 2026
2c5cbe6
feat: add Microsoft Graph API integration for GUID resolution
adamgell Apr 2, 2026
a9eacf4
fix: resolve merge conflicts with Graph API integration, fix CI
adamgell Apr 2, 2026
dba1c04
fix: address PR #82 review — ID collisions, persist sessions, correla…
adamgell Apr 2, 2026
2faad79
ci: force clean build to resolve stale cache
adamgell Apr 2, 2026
be88dbd
merge: integrate Sysmon workspace from main, update changelog
adamgell Apr 3, 2026
ddb19cb
fix: add missing script_body and parent_app_guid to RFC3339 test
adamgell Apr 3, 2026
18a29ec
security: add explicit permissions to CI workflow
adamgell Apr 3, 2026
e6db4bf
fix: gate sysmon module behind feature flag, fix clippy
adamgell Apr 3, 2026
0cb803e
fix: resolve merge conflicts in graph_api.rs
adamgell Apr 3, 2026
3167de8
fix: resolve merge conflicts from upstream session/diff features
adamgell Apr 2, 2026
5be5c76
feat: implement live Windows Event Log queries
adamgell Apr 3, 2026
0bdfe63
feat: live event log queries, Graph API scripts, parallel loading
adamgell Apr 3, 2026
d4bb04b
fix: gate devtools and progress events for cross-platform CI
adamgell Apr 3, 2026
8b11238
fix: address remaining Copilot PR #82 review comments, update changelog
adamgell Apr 5, 2026
6872164
docs: add workspace registry design spec
adamgell Apr 5, 2026
5b7648c
docs: add workspace registry implementation plan (Phase 1-2)
adamgell Apr 5, 2026
520ff4f
feat(workspaces): add WorkspaceDefinition types
adamgell Apr 5, 2026
7aa152b
feat(workspaces): add central workspace registry
adamgell Apr 5, 2026
1cac637
refactor(sysmon): move sysmon types to src/workspaces/sysmon/
adamgell Apr 5, 2026
b383d66
refactor(sysmon): move sysmon store to src/workspaces/sysmon/
adamgell Apr 5, 2026
2d6eee1
refactor(sysmon): move sysmon components to src/workspaces/sysmon/
adamgell Apr 5, 2026
1cad7d1
refactor(sysmon): move analysis progress hook to src/workspaces/sysmon/
adamgell Apr 5, 2026
ea65183
refactor(sysmon): extract SysmonSidebar to src/workspaces/sysmon/
adamgell Apr 5, 2026
35d155b
feat(workspaces): register sysmon as first workspace definition
adamgell Apr 5, 2026
eb9713c
docs: add workspace registry Phase 3 implementation plan
adamgell Apr 5, 2026
cc61489
feat(workspaces): add shim definitions for all workspaces
adamgell Apr 5, 2026
6b15358
refactor(appshell): use workspace registry for component routing
adamgell Apr 5, 2026
c7e460b
refactor(sidebar): use workspace registry for sidebar routing
adamgell Apr 5, 2026
865a74d
refactor(ui-store): delegate platform gating to workspace registry
adamgell Apr 5, 2026
e4b0d11
refactor(toolbar): use workspace registry for labels and file filters
adamgell Apr 5, 2026
96c679d
refactor(dsregcmd): migrate workspace to src/workspaces/dsregcmd/
adamgell Apr 5, 2026
d38a0f4
refactor(event-log): migrate workspace to src/workspaces/event-log/
adamgell Apr 5, 2026
fed75fa
refactor(macos-diag): migrate workspace to src/workspaces/macos-diag/
adamgell Apr 5, 2026
ca56ba0
refactor(deployment): migrate workspace to src/workspaces/deployment/
adamgell Apr 5, 2026
c652209
refactor(intune): migrate workspace to src/workspaces/intune/
adamgell Apr 5, 2026
161d41c
chore: remove empty component directories after workspace migration
adamgell Apr 5, 2026
3e603a5
chore: add .superpowers/ to gitignore, remove tracked artifacts
adamgell Apr 5, 2026
10d74af
refactor: extract SourceSummaryCard to shared component, consolidate …
adamgell Apr 5, 2026
26b10ea
refactor(ui-store): replace getUiChromeStatus if/else chain with regi…
adamgell Apr 5, 2026
0cb5b68
refactor(toolbar): wire onOpenSource handlers and capability-based co…
adamgell Apr 5, 2026
5564831
fix: update evtx-store import path after workspace migration
adamgell Apr 5, 2026
b1c6452
fix: address Copilot PR #84 review comments
adamgell Apr 6, 2026
3b4b5ca
Merge branch 'main' into refactor/workspace-registry
adamgell Apr 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 0 additions & 29 deletions .claude/settings.local.json

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ src-tauri/target-test
.DS_Store
Thumbs.db

# Brainstorming artifacts
.superpowers/

# Env
.env
.env.local
Expand Down
12 changes: 11 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,19 @@ All notable changes to this project will be documented in this file.
- **Rust backend** (`src-tauri/src/sysmon/`): EVTX parser that reads all events (no cap) and classifies them into 23 Sysmon event types — process creation (ID 1), network connections (ID 3), file operations (IDs 11, 15, 23), registry activity (IDs 12, 13, 14), DNS queries (ID 22), image loads (ID 7), driver loads (ID 6), WMI activity (IDs 19, 20, 21), and more. Extracts structured fields (process names, hashes, parent processes, network destinations, registry keys) from XML event data. Produces dashboard aggregations: timeline bucketing with auto-scaling resolution (minute/5-minute/hourly/daily based on time span), top-N ranked lists (processes, network destinations, DNS queries, registry keys), event type distribution, and security alert classification (high-severity events like process injection, credential access, driver loads). Config extraction from event IDs 4/16 with hash algorithm inference. Pre-allocated HashMaps for 100K+ event performance. 14 backend tests covering summary generation, timeline bucketing, top-N ranking, config extraction, and security classification.
- **Frontend** (`src/components/sysmon/`): Four-tab workspace — Dashboard (metric cards, event type donut chart, timeline histogram, security alerts, top process/network/DNS/registry lists), Events (searchable table with severity filtering and TanStack Virtual scrolling), Summary (file metadata), Config (Sysmon configuration XML viewer). Theme-aware chart colors via Fluent UI tokens. Zustand store with analysis progress events matching the Intune workspace pattern.
- **Integration**: Registered as "sysmon" workspace with in-workspace source picker — "Open .evtx Files" button and "This Computer" button (Windows) to query the live Sysmon event log. Toolbar workspace switcher, progress listener hook, `analyze_sysmon_logs` Tauri IPC command.
- **Intune failed app context**: Expanded failed AppWorkload context export with polished output for troubleshooting failed app deployments.

### Fixed

- **PR #82 review fixes**: Resolved merged-tab ID collisions by prefixing entry IDs with source file index. Session restore now persists recent sessions to `localStorage` on save. Correlation refresh no longer stalls when switching merged tabs. Diff view properly cleans up state on close.
- **Intune cross-file sorting** (PR #78): Unified timeline sorting across multiple Intune log files now sorts by datetime consistently, fixing out-of-order entries when merging rotated log files.
- **Code review fixes** (PR #81): Scroll sync no longer fights user interaction. Session restore validates file paths before loading. Merge entry deduplication uses stable sort. UTF-8 safety enforced in merge filename display. GUID casing normalized to lowercase for consistent lookups.
- **Rotated AppWorkload parsing**: Rotated AppWorkload files (e.g., `AppWorkload-20260401-160729.log`) now correctly parse as LogicalRecord framing instead of falling back to PhysicalLine. Changed IME filename detection from exact match to prefix match.
- **GUID extraction priority**: App GUID extraction now prefers "for app <GUID>" patterns over generic first-GUID matching, preventing user GUIDs from being used as app identifiers in StatusReport lines.
- **Tab close cleanup**: Closing the last tab now properly clears log content, filters, and UI state.
- **Tab close cleanup**: Closing the last tab now properly clears log content, filters, and UI state (#55).
- **Button types**: Added explicit `type="button"` to prevent unintended form submissions.
- **Sysmon feature gating**: Sysmon module properly gated behind `sysmon` feature flag to prevent compilation on non-Windows targets without the feature enabled. Fixed clippy warnings in sysmon module.
- **Graph API merge conflicts**: Resolved integration conflicts between Graph API GUID resolution and existing Intune pipeline code.
- **Session save silent failure**: Save Session no longer silently does nothing when no tabs are open — the save dialog always appears so workspace state and filters can still be saved.
- **Session restore with missing files**: Restore no longer bails entirely when saved files are missing — workspace state, filters, and available files are still restored.
- **Sysmon workspace not visible**: The Sysmon workspace was missing from `get_available_workspaces()` and never appeared in the workspace switcher. Added the `sysmon` feature gate.
Expand All @@ -41,6 +47,10 @@ All notable changes to this project will be documented in this file.

- **Columns determined by parser**: Active columns are now derived from the detected parser format, not user toggles. Removed `hiddenColumns` from UI state.

### Security

- **CI workflow permissions**: Added explicit `contents: read` and `actions: read` permissions to CI workflow to follow least-privilege principle.

## [1.0.3] - 2026-03-31

### Added
Expand Down
Loading
Loading