Skip to content

Add Time Align feature#1

Merged
ozgesolidkey merged 4 commits intomainfrom
feature/time-align
Mar 18, 2026
Merged

Add Time Align feature#1
ozgesolidkey merged 4 commits intomainfrom
feature/time-align

Conversation

@ozgesolidkey
Copy link
Copy Markdown
Contributor

Summary

  • Adds a "Time Align" bottom tab that visualizes search config results on a shared timeline
  • Each enabled search config becomes a horizontal lane with marks at timestamp positions
  • Lanes can be dragged left/right to apply time offsets, helping correlate events from different sources despite clock drift
  • Click any mark to navigate to that line; hover for timestamp details
  • Batch IPC (GET_LINE_TIMESTAMPS) fetches all timestamps in a single round-trip

Test plan

  • Create 2+ search configs matching different components
  • Run search configs batch
  • Open Time Align tab — verify lanes appear with marks at correct positions
  • Drag a lane left/right — marks should slide, offset badge appears on label
  • Click Reset Offsets — all lanes return to original positions
  • Click a mark — should navigate to that line in viewer
  • Verify logs without timestamps are silently excluded
  • Test with paper theme

🤖 Generated with Claude Code

ozgesolidkey and others added 4 commits March 6, 2026 00:57
Each enabled search config becomes a draggable timeline lane positioned
by timestamp. Users can drag lanes left/right to apply time offsets,
correlating events from different log sources despite clock drift.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Detect standalone CR in files and fall back to stream search (ripgrep
  miscount lines with CR-only endings from serial/progress output)
- Fix stream search CRLF chunk boundary bug causing phantom empty lines
- Simplify ripgrep output parsing with --no-filename
- Search config results now preserve original lineNumber + add displayIndex
  when filtered (was remapping lineNumber to displayIndex, breaking selection)
- Refactor goToLine to separate scroll target from selected line number
- Fix cursor status showing display index instead of line number in filtered mode

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Scan up to 3 levels of subfolders, shown as collapsible tree nodes
- Detect file types by reading magic bytes (first 16 bytes), not extensions
  Covers PNG, JPEG, GIF, BMP, WebP, MP4/MOV, MKV/WebM, AVI, OGG
  Files without NUL bytes in header treated as text (extensionless logs work)
- Double-click dispatch: text → editor, image → image viewer, video → video player
- Parallel file sniffing (16 concurrent) for fast scanning
- Skip known large dirs (node_modules, __pycache__, build, dist, etc.)
- Preserve subdirectory collapse state on refresh
- Directories sorted first, then files alphabetically

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
File indexing, stream search, and analysis all process files in 1MB
chunks synchronously, blocking the Electron event loop and causing
the OS "Application Not Responding" dialog on large files.

Fix: yield control after each chunk with setImmediate() in:
- FileHandler.open() — file indexing
- FileHandler.searchWithStream() — stream-based search
- ColumnAwareAnalyzer.analyze() — log analysis

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ozgesolidkey ozgesolidkey merged commit 295a529 into main Mar 18, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant