Skip to content

Releases

v0.2.0

Choose a tag to compare

@imsvidskiy imsvidskiy released this 04 Sep 22:21
a350f9c

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_PASSWORD in .env. POSTGRES_PASSWORD and MTX_MEDIA_PASSWORD no 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 --build and let api-migrate apply migration 0002 and storage-init create 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_SECONDS before entering the graph. Where the cooldown used to suppress repeated actions, add a Debounce filter or an Alert cooldown.
  • The docs compose profile and DOCS_PORT are gone; the documentation lives in looksee-docs.

Added

  • Bundled S3-compatible video storage: the storage service (RustFS) with the storage_data volume, created and provisioned by compose, so File cameras work without an external bucket. The S3_* 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 /deliveries lists the queue and POST /deliveries/{id}/retry re-queues a failed delivery. Webhook requests carry an Idempotency-Key header.
  • Camera-scoped media grants: POST /cameras/{id}/media-access issues 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 429 and Retry-After.
  • Origin check: state-changing requests and WebSocket connections whose Origin matches neither CORS_ORIGIN_REGEX nor the API origin are rejected with 403.
  • 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_SECONDS throttles only the event messages of the live feed; every event enters the graph.
  • Storage failures answer 503 with 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.example is 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

Choose a tag to compare

@imsvidskiy imsvidskiy released this 06 Aug 08:05

The first release of the LookSee platform.