Skip to content

Commit 03f6a2b

Browse files
committed
release: v0.0.5 Frigate provider, guides page, and docs
1 parent 0244003 commit 03f6a2b

File tree

17 files changed

+794
-31
lines changed

17 files changed

+794
-31
lines changed

README.md

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
[![Docker](https://img.shields.io/badge/Docker-Compose-2496ED?logo=docker&logoColor=white)](https://www.docker.com/)
1010
[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-2ea44f)](https://github.com/248Tech/RTSPanda)
1111

12-
RTSPanda is a small app you run on your PC or server. You add your camera URLs, open a browser, and watch live—no account, no subscription, no data sent to the cloud. You can also record, take screenshots, run per-camera YOLOv8 tracking, view live overlays + event history, and send rich Discord alerts.
12+
RTSPanda is a small app you run on your PC or server. You add your camera URLs, open a browser, and watch live—no account, no subscription, no data sent to the cloud. You can also record, take screenshots, run per-camera YOLOv8 tracking, view live overlays + event history, and send rich Discord alerts powered by YOLO or Frigate.
1313

1414
---
1515

@@ -19,16 +19,21 @@ RTSPanda is a small app you run on your PC or server. You add your camera URLs,
1919

2020
---
2121

22-
## What is new (v0.0.4)
22+
## What is new (v0.0.5)
2323

24-
- **YOLO UI Polishing:** per-camera ignore-zone polygon editor, overlay support, and improved YOLO camera setting flows.
25-
- **Security Updates:** stronger backend input validation for ignore zones and integration settings, plus centralized OpenAI key/model handling in app settings.
26-
- **UI Updates:** multi-camera mode (up to 4 streams), Integrations tab, dashboard network reset action, and bundled Chrome PiP extension install flow.
27-
- **Reliability Updates:** ONNX Runtime migration for lower AI-worker memory, stream keepalive health checks, and stream reset APIs.
28-
- **Connectivity:** external recording sync to Local Server, Dropbox, Google Drive, OneDrive, and Proton Drive.
24+
- **Frigate Detection Provider:** choose YOLOv8 or Frigate per camera when configuring Discord detection alerts.
25+
- **Frigate Webhook Ingest:** new backend endpoint `POST /api/v1/frigate/events` routes Frigate events to matching cameras configured with provider `frigate`.
26+
- **Frigate Snapshot Attachments:** optional `FRIGATE_BASE_URL` support to fetch Frigate event snapshots and include them in Discord alerts.
27+
- **Alert Provider Controls:** new camera fields `discord_detection_provider` and `frigate_camera_name` added across DB migration, backend model/service/repository, and frontend forms.
28+
- **Guides Page:** new in-app **Guides** route with:
29+
- Lorex NVR port-forward workflow
30+
- Tailscale setup workflow
31+
- Lorex RTSP address retrieval workflow
32+
- **Support the Developer UI:** donation links to [248tech.com/donate](https://248tech.com/donate) added in sidebar and guides page.
33+
- **Docs Refresh:** README and user guide updated for Frigate setup, provider-based alert configuration, and new API/env options.
2934

30-
Release details: [RELEASE_NOTES_v0.0.4.md](RELEASE_NOTES_v0.0.4.md)
31-
Diff: [v0.0.3...v0.0.4](https://github.com/248Tech/RTSPanda/compare/v0.0.3...v0.0.4)
35+
Release details: [RELEASE_NOTES_v0.0.5.md](RELEASE_NOTES_v0.0.5.md)
36+
Diff: [v0.0.4...v0.0.5](https://github.com/248Tech/RTSPanda/compare/v0.0.4...v0.0.5)
3237

3338
---
3439

@@ -74,6 +79,8 @@ cd RTSPanda
7479

7580
Go to **http://localhost:8080**. Click **Settings****Cameras****Add Camera**, enter a name and your RTSP URL, then go back to the dashboard and click the camera to watch.
7681

82+
Need vendor setup help? Open the **Guides** page in the sidebar for Lorex RTSP lookup, Lorex port-forwarding notes, and Tailscale setup.
83+
7784
---
7885

7986
## One-line Docker setup
@@ -248,6 +255,7 @@ You can change behaviour with environment variables (no config file needed):
248255
| `RCLONE_BIN` | `rclone` | rclone binary path for cloud video storage sync (Dropbox/Drive/OneDrive/Proton Drive). |
249256
| `FFMPEG_BIN` | `ffmpeg` | FFmpeg path for frame capture used by object detection sampling. |
250257
| `DETECTOR_URL` | `http://127.0.0.1:8090` | URL of the async detector worker (`/detect`, `/health`). |
258+
| `FRIGATE_BASE_URL` | unset | Optional Frigate base URL (example `http://frigate:5000`) used to fetch event snapshots for Frigate-powered Discord alerts. |
251259
| `DETECTION_SAMPLE_INTERVAL_SECONDS` | `30` | Global sample interval for camera frame capture. |
252260
| `DETECTION_WORKERS` | `2` | Concurrent async detection worker requests from backend queue. |
253261
| `DETECTION_QUEUE_SIZE` | `128` | Max queued snapshots waiting for detector service. |
@@ -304,6 +312,7 @@ Everything the web UI does can be done over HTTP. Base URL: **http://localhost:8
304312
| Trigger test detection | `POST` | `/cameras/{id}/detections/test` |
305313
| Send screenshot to Discord | `POST` | `/cameras/{id}/discord/screenshot` |
306314
| Send recording to Discord | `POST` | `/cameras/{id}/discord/record` |
315+
| Ingest Frigate detection event | `POST` | `/frigate/events` |
307316
| List recent detection events | `GET` | `/detection-events` |
308317
| Get snapshot for event | `GET` | `/detection-events/{id}/snapshot` |
309318
| Health check | `GET` | `/health` |

RELEASE_NOTES_v0.0.5.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# RTSPanda v0.0.5 — Frigate Alert Provider + In-App Guides
2+
3+
Tag: `v0.0.5`
4+
Diff: [v0.0.4...v0.0.5](https://github.com/248Tech/RTSPanda/compare/v0.0.4...v0.0.5)
5+
6+
---
7+
8+
## Highlights
9+
10+
- Added **provider-based Discord detection alerts** per camera:
11+
- `yolo` (RTSPanda built-in YOLOv8)
12+
- `frigate` (external Frigate event ingestion)
13+
- Added **Frigate webhook endpoint**:
14+
- `POST /api/v1/frigate/events`
15+
- Added new in-app **Guides** page with practical setup walkthroughs:
16+
- Lorex NVR port-forwarding
17+
- Tailscale setup
18+
- Lorex RTSP URL retrieval from login/web UI flow
19+
- Added **Support the Developer** links to `https://248tech.com/donate`.
20+
21+
---
22+
23+
## Backend / API Updates
24+
25+
- Added Frigate ingestion handler:
26+
- `backend/internal/api/frigate.go`
27+
- Parses Frigate webhook payloads and forwards detection alerts to matching cameras.
28+
- Matches cameras by provider `frigate` and `frigate_camera_name` (or camera name fallback).
29+
- Ignores non-`new` Frigate event types.
30+
- Registered new route:
31+
- `POST /api/v1/frigate/events`
32+
- Extended notifier API contract to support external detection event dispatch.
33+
- Updated Discord notification flow:
34+
- Added source-aware detection notifications (`YOLOv8` vs `Frigate` labels in payloads).
35+
- Ensured YOLO-origin notifications are skipped for cameras configured with provider `frigate`.
36+
- Added optional Frigate snapshot fetch support via env:
37+
- `FRIGATE_BASE_URL`
38+
- If configured, event snapshots are fetched and attached to Discord alerts when available.
39+
40+
---
41+
42+
## Database / Camera Model Updates
43+
44+
- Added migration:
45+
- `backend/internal/db/migrations/007_discord_detection_provider.sql`
46+
- New camera fields:
47+
- `discord_detection_provider` (default `yolo`)
48+
- `frigate_camera_name` (default empty)
49+
- Updated camera model, service validation, and repository persistence/scan logic:
50+
- `backend/internal/cameras/model.go`
51+
- `backend/internal/cameras/service.go`
52+
- `backend/internal/cameras/repository.go`
53+
54+
---
55+
56+
## Frontend Updates
57+
58+
- Added new page:
59+
- `frontend/src/pages/Guides.tsx`
60+
- Added sidebar navigation route for Guides:
61+
- `frontend/src/App.tsx`
62+
- Added donate/support links in UI:
63+
- Sidebar support icon
64+
- Guides page support button
65+
- Extended camera API types for provider fields:
66+
- `frontend/src/api/cameras.ts`
67+
- Updated camera setup form:
68+
- Provider selection (`YOLOv8` or `Frigate`)
69+
- Optional `Frigate camera name`
70+
- Source-aware trigger wording
71+
- `frontend/src/components/CameraForm.tsx`
72+
- Updated settings and camera badges to reflect provider-aware alerting:
73+
- `frontend/src/pages/Settings.tsx`
74+
- `frontend/src/pages/CameraView.tsx`
75+
76+
---
77+
78+
## Documentation Updates
79+
80+
- Updated README release section and feature/config/API notes:
81+
- `README.md`
82+
- Updated user guide for provider-based alerts and Frigate endpoint/env:
83+
- `human/USER_GUIDE.md`
84+
85+
---
86+
87+
## Validation
88+
89+
- Backend checks:
90+
- `go test ./...` (pass)
91+
- Frontend checks:
92+
- `npm run build` (pass)
93+

backend/internal/api/detections.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type DetectionService interface {
2929
type DiscordNotificationService interface {
3030
SendCameraSnapshot(ctx context.Context, camera cameras.Camera, snapshot detections.Snapshot, includeMotionClip bool) error
3131
SendCameraRecording(ctx context.Context, camera cameras.Camera, durationSeconds int, format string) error
32+
NotifyExternalDetectionEvents(ctx context.Context, camera cameras.Camera, snapshot detections.Snapshot, events []detections.Event, sourceLabel string) error
3233
}
3334

3435
// handleDetectionHealth: GET /api/v1/detections/health

0 commit comments

Comments
 (0)