Hermes
a90a1d567e
build(dev): switch to ARM64 cross-compile for Pi Zero 2 W deployment
...
- Rename BINARY_NAME from openclaw to remoterig
- Cross-compile with GOOS=linux GOARCH=arm64 for Raspberry Pi Zero 2 W
- Build React frontend at repo root (npm ci && npm run build) producing dist/
- Remove old web/ working-directory and explicit embed step (handled by go:embed)
- Repository dispatch event_type unchanged: dev-build-success
2026-05-21 21:38:39 +00:00
Hermes
607aea514b
feat: harden SSE endpoint with typed events and Last-Event-ID
...
Build (Dev) / build (push) Failing after 0s
CI/CD / lint-and-typecheck (push) Failing after 1s
CI/CD / test (push) Has been skipped
CI/CD / build (push) Has been skipped
CI/CD / deploy (push) Has been skipped
- Added monotonic event ID (Last-Event-ID) for reconnection support
- Events now emit typed: 'event: camera_status' for client-side filtering
- Initial connection event sends 'event: connected' with ID
- Reconnection acknowledgment via Last-Event-ID header
- CORS preflight (OPTIONS) handler
- Access-Control-Allow-Headers: Last-Event-ID
- Initial heartbeat shortened to 15s for faster detect (30s for steady)
Closes CUB-233.
2026-05-21 21:18:24 +00:00
Hermes
f200cd9782
feat: add MQTT subscriber for ESP32 camera status ingestion
...
Implements MQTT subscriber (internal/mqtt/subscriber.go) that:
- Connects to Mosquitto broker with auto-reconnect
- Subscribes to remoterig/cameras/+/status, +/heartbeat, +/announce
- Parses and validates incoming messages per MQTT contract
- Inserts status_logs with duplicate prevention
- Auto-detects recording state changes and manages recording_events
- Broadcasts camera status changes via SSE hub
- Camera auto-registration via announce (MAC-based, sequential cam-NNN)
- Heartbeat watchdog marks cameras offline after 120s silence
- Wired into main.go with graceful degradation (warns if broker unreachable)
Dependency: github.com/eclipse/paho.mqtt.golang v1.5.0
Closes CUB-232.
2026-05-21 21:16:08 +00:00
Hermes
ce188086cb
docs: update CONTEXT.md with closed-network architecture and current state
...
Build (Dev) / build (push) Failing after 1s
CI/CD / lint-and-typecheck (push) Failing after 0s
CI/CD / test (push) Has been skipped
CI/CD / build (push) Has been skipped
CI/CD / deploy (push) Has been skipped
- Replaced architecture diagram with travel router LAN design
- Added MQTT contract reference
- Updated issue status table with agent assignments
- Revised known limitations to reflect actual gaps
- Added network config section (subnet, static IP)
- Removed CUB-182 (canceled duplicate)
Post-sync: 13 done, 15 backlog, 1 in review, 1 canceled.
2026-05-21 21:11:33 +00:00
Hermes
df212796d2
docs: add MQTT message format contract with closed-network architecture
...
Defines topic hierarchy, payload schemas, QoS levels, heartbeat
protocol, camera auto-discovery via announce topic, offline
buffering strategy, and command/response flow for start/stop.
Architecture: travel router subnet (192.168.4.x), Pi Zero 2 W
runs Mosquitto + Go backend, ESP32s dual-STA to GoPro AP +
travel router. No internet dependency.
Closes CUB-238.
2026-05-21 21:08:38 +00:00
Otto
02fa6e4d4f
docs: add comprehensive project context file (CONTEXT.md) for agent reference
CI/CD / lint-and-typecheck (push) Failing after 0s
CI/CD / test (push) Has been skipped
CI/CD / build (push) Has been skipped
CI/CD / deploy (push) Has been skipped
Build (Dev) / build (push) Failing after 35s
2026-05-21 13:19:26 -04:00
overseer
07ecff3b5f
Merge pull request 'CUB-196: CameraCard component with live SSE status display' ( #3 ) from agent/hermes/CUB-196-cameracard into dev
...
Build (Dev) / build (push) Failing after 1s
CI/CD / lint-and-typecheck (push) Failing after 0s
CI/CD / test (push) Has been skipped
CI/CD / build (push) Has been skipped
CI/CD / deploy (push) Has been skipped
Reviewed-on: #3
2026-05-21 10:26:55 -04:00
Hermes
1854a1cb2b
ci: add Gitea Actions pipeline (lint, typecheck, test, build, deploy)
CI/CD / lint-and-typecheck (pull_request) Failing after 0s
CI/CD / test (pull_request) Has been skipped
CI/CD / build (pull_request) Has been skipped
CI/CD / deploy (pull_request) Has been skipped
2026-05-21 14:16:44 +00:00
overseer
fcc5feb1be
Merge branch 'dev' into agent/hermes/CUB-196-cameracard
2026-05-21 10:10:39 -04:00
overseer
cf3df557dd
Merge pull request 'CUB-195: add useSSE hook and Zustand camera store for live SSE events' ( #2 ) from agent/rex/CUB-195-react-sse-hook into dev
...
Reviewed-on: #2
2026-05-21 10:10:32 -04:00
Hermes
db4663380b
CUB-196: fix future timestamps, negative battery clamp, boundary tests
...
Grimm review fixes:
- formatRelativeTime: guard future timestamps (clock skew) → 'unknown'
- battery display: clamp negative values to 0%
- formatTimeLeft: floor fractional seconds
- Tests: +4 (future timestamp, negative battery, 15%/50% boundaries)
2026-05-21 14:07:57 +00:00
Rex
08d5ceb792
CUB-196: remove unused vi import from test
2026-05-21 12:07:52 +00:00
Rex
047241005b
CUB-196: add CameraCard unit tests (vitest + testing-library, 16 tests)
2026-05-21 12:07:05 +00:00
Rex
ad813cd206
CUB-196: wire CameraCard into App grid with SSE live updates
2026-05-21 12:03:17 +00:00
rex-bot
4ab7d41329
CUB-196: add accessibility and edge case fixes for CameraCard
2026-05-21 11:59:40 +00:00
rex-bot
e82208f897
CUB-196: add CameraCard component with battery bar, recording indicator, online status
2026-05-21 11:51:40 +00:00
rex-bot
fa0956c6fd
CUB-195: add useSSE hook and Zustand camera store for live SSE events
2026-05-20 22:56:46 +00:00
overseer
5bbfc11597
Merge commit '5793617be3154877fa10e4f46b7608de86fa54ca' into dev
2026-05-19 07:36:48 -04:00
overseer
5793617be3
CUB-194: scaffold Vite + React + TypeScript + Tailwind frontend
...
otto/review PR approved by Otto - frontend scaffold verified clean
ci/build Build + type-check + lint verified clean
- Initialize Vite project with React + TypeScript + Tailwind CSS
- Dark theme dashboard design (rig-dark palette, rig-accent colors)
- Minimal App with RemoteRig header + 'Dashboard coming soon' placeholder
- Directory structure: components, hooks, services, types, utils
- TypeScript types for Camera, CameraFeed, SystemHealth, StreamConfig
- Custom hooks: useCameraStatus, useSystemHealth (with mock data)
- API service layer with proxy config for /api → localhost:8080
- eslint, postcss, autoprefixer configured
- lucide-react icons integrated (Camera icon)
- .env.example, .gitignore, tsconfig basepaths configured
- Build + type-check + lint verified clean
2026-05-19 07:31:52 -04:00
overseer
111cce4c84
CUB-187+188+191+193: Recording handlers, status ingestion, SSE endpoint
ci/verify Branch verified
2026-05-18 17:52:48 -04:00
overseer
5cc57446e5
CUB-186: Camera list and register API handlers + Chi router wiring
2026-05-18 17:48:58 -04:00
overseer
7a0a76bbd5
CUB-182: Chi router setup with auth middleware and graceful shutdown
2026-05-18 17:47:06 -04:00
overseer
c0b2b4cf57
CUB-184: API key auth middleware
2026-05-18 17:45:25 -04:00
overseer
e55dae340b
CUB-185: Camera/StatusLog/RecordingEvent/Setting Go models
2026-05-18 17:45:10 -04:00
overseer
dcd64ee199
CUB-183: SQLite schema migration + DB init
2026-05-18 17:44:50 -04:00
overseer
ede6696792
CUB-181: Add yaml.v3 dependency via go mod tidy
2026-05-18 17:43:53 -04:00
overseer
ad55e94c9c
CUB-181: Scaffold Go module, directory layout, config, and main.go entry point
2026-05-18 17:43:46 -04:00
overseer
58a5d9e97a
first commit
2026-05-18 17:54:13 +00:00