• v0.2.0 fc5029c24e

    pyr0ball released this 2026-05-11 09:53:25 -07:00 | 138 commits to main since this release

    What's New

    Frictionless Incident Capture

    Capture homelab incidents in seconds without remembering exact timestamps.

    • NL time extraction — describe what happened naturally ("disk errors around 3pm", "memory spike this morning"); Turnstone extracts the time and builds a ±30-min log window automatically. Falls back to last 60 minutes when no time phrase is found.
    • Quick Capture tab — single input field in the Diagnose view. Type a description, get a ranked log stream with severity breakdown, save as an incident with one click.
    • Quick Capture Bar — persistent bar below the nav for always-on capture without leaving the current page.
    • Quick Capture FAB — fixed bottom-right button () with an overlay for muscle-memory capture anywhere in the app.
    • Structured tab — the full incident form is now the second tab in Diagnose; IncidentsView is list-only.
    • Settings — toggle between topbar and FAB entry point styles; preference persisted via preferences.json.

    Changelog

    • feat: add diagnose service with NL time extraction via dateparser
    • fix: correct time_detected logic, immutable sort pattern, add diagnose() test
    • feat: add POST /api/diagnose and GET/PATCH /api/settings endpoints
    • feat: add QuickCapture and IncidentForm components
    • feat: add QuickCaptureBar and QuickCaptureFab entry point components
    • fix: surface save errors in QuickCapture via error.value
    • feat: add Quick/Structured tabs to DiagnoseView
    • refactor: remove incident form from IncidentsView — now in DiagnoseView Structured tab
    • feat: add SettingsView with entry point style toggle
    • feat: wire QuickCaptureBar/FAB into App.vue, add Settings route
    Downloads