Repository navigation
Releases
Releases · okoflow/looksee
v0.2.0
LookSee 0.2.0 hardens a self-hosted deployment: browsers no longer hold MediaMTX credentials, video uploads work out of the box with bundled storage, and external notifications survive restarts and outages.
Upgrading from 0.1.0
- Set
STORAGE_PASSWORDin.env.POSTGRES_PASSWORDandMTX_MEDIA_PASSWORDno longer have example values and must be set as well; compose refuses to start while any of the three is blank. - Rotate
MTX_MEDIA_PASSWORD: 0.1.0 sent it to every browser that loaded Studio. - Run
docker compose up -d --buildand letapi-migrateapply migration0002andstorage-initcreate the video bucket. Update the API, the inference service, Studio, and MediaMTX together: MediaMTX now authorizes every connection through the API. - Events no longer wait out
EVENT_COOLDOWN_SECONDSbefore entering the graph. Where the cooldown used to suppress repeated actions, add a Debounce filter or an Alert cooldown. - The
docscompose profile andDOCS_PORTare gone; the documentation lives in looksee-docs.
Added
- Bundled S3-compatible video storage: the
storageservice (RustFS) with thestorage_datavolume, created and provisioned by compose, so File cameras work without an external bucket. TheS3_*variables still point the API at an external one. - Delivery outbox: Webhook, Telegram, Discord, Slack, Email, and MQTT messages are stored in PostgreSQL and retried after transient failures with a delay that doubles up to five minutes, for at most eight attempts.
GET /deliverieslists the queue andPOST /deliveries/{id}/retryre-queues a failed delivery. Webhook requests carry anIdempotency-Keyheader. - Camera-scoped media grants:
POST /cameras/{id}/media-accessissues a five-minute token for reading or publishing one camera, and MediaMTX authorizes every connection through the API. - Sign-in and setup rate limit: 20 attempts per client and 100 in total per minute, answered with
429andRetry-After. - Origin check: state-changing requests and WebSocket connections whose
Originmatches neitherCORS_ORIGIN_REGEXnor the API origin are rejected with403. - Continuous integration runs linting, tests, the migration check, the Studio build, and a compose configuration check on every pull request, with test suites for the shared contracts, the API, the inference service, and the Enterprise package.
- Repository documentation: README, contributing guide, security policy, code of conduct, and issue forms. Product documentation in English, Russian, Hebrew, and Korean.
Changed
- The MediaMTX media password is a backend secret shared by the API, the inference service, and MediaMTX; Studio no longer receives it.
EVENT_COOLDOWN_SECONDSthrottles only theeventmessages of the live feed; every event enters the graph.- Storage failures answer
503with a readable message instead of an internal error. - Detection frames left unacknowledged by a stopped API process are processed again after one minute, and frames are processed one at a time.
.env.exampleis grouped by service and lists only the settings an installation sets; required passwords are blank.- Studio bundles its font instead of loading it from Google Fonts, keeps edits made while a save is in flight, and links Documentation to the documentation repository.
- MediaMTX 1.20.1.
Fixed
- Switching a camera from RTSP to Browser webcam left MediaMTX pulling the old stream; the path configuration is now replaced instead of patched. Thanks @markrzv (#17).
- WebRTC sessions are closed when leaving the monitor, and saving a workflow no longer races with edits made during the save.
- Studio lint tooling for the monorepo layout and a dependency advisory in Studio.
Contributors: @svidskiy, @markrzv
Full changelog: v0.1.0...v0.2.0
v0.1.0
The first release of the LookSee platform.