Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
6b8aa1e
src: lib: helper: Add thread priority helpers for Linux
joaoantoniocardoso Feb 23, 2026
8a327fc
src: lib: stream: pipeline: Add background priority mode for pipeline…
joaoantoniocardoso Feb 23, 2026
ea4fbcc
src: lib: stream: sink: Refactor image sink to GStreamer-native pipeline
joaoantoniocardoso Feb 23, 2026
5726acc
src: lib: strean: sink: image_sink: request upstream keyframe and inc…
joaoantoniocardoso Feb 24, 2026
54efe32
Lower scheduling priority of non-GStreamer threads
joaoantoniocardoso Feb 23, 2026
6ee96cc
src: lib: stream: Route RTSP sink through video_tee, eliminating redu…
joaoantoniocardoso Feb 23, 2026
67afcd2
src: lib: stream: Replace shmsink/shmsrc with appsink/appsrc for RTSP
joaoantoniocardoso Feb 23, 2026
d440932
src: lib: stream: Tighten WebRTC queue after DTLS handshake
joaoantoniocardoso Feb 23, 2026
3310398
perf: excise unused FEC/RED elements from webrtcbin send path
joaoantoniocardoso Feb 24, 2026
690557b
src: server: Remove redundant debug and Logger middleware
joaoantoniocardoso Feb 24, 2026
474a13d
src: server: Gate /dot WebSocket endpoint behind --enable-dot CLI flag
joaoantoniocardoso Feb 24, 2026
2219b9f
src: stream: types: Add StreamStatusState enum and disable_lazy option
joaoantoniocardoso Feb 24, 2026
15c7acf
src: stream: Add lazy idle watcher with RTSP valve flow control
joaoantoniocardoso Feb 24, 2026
df9acda
src: stream: manager: Integrate idle wake-up and consumer tracking
joaoantoniocardoso Feb 24, 2026
e0c93a5
src: stream: webrtc: Track active sessions and clean up orphans on di…
joaoantoniocardoso Feb 24, 2026
d67d575
src: custom: test: Disable lazy idle for WebRTC thread leak test
joaoantoniocardoso Feb 25, 2026
48420c9
examples: Add example to compare latencies
joaoantoniocardoso Feb 26, 2026
eb2d23d
frontend: Move webrtc frontend to the root of the repo
joaoantoniocardoso Feb 11, 2026
53057bc
bindings: Update to match new location
joaoantoniocardoso Feb 11, 2026
ad79c52
src: lib: server: Update to match new frontend location
joaoantoniocardoso Feb 11, 2026
089f9e0
build: Update to match new frontend location
joaoantoniocardoso Feb 11, 2026
ec32226
github: Update to match new frontend location
joaoantoniocardoso Feb 11, 2026
7f84b2e
frontend: Migrate and merge home + update project structure
joaoantoniocardoso Feb 12, 2026
f00254a
build: Remove old frontend assets download
joaoantoniocardoso Feb 12, 2026
8844a6c
cargo: Remove no longer necessary reqwest during build
joaoantoniocardoso Feb 12, 2026
8c65d54
src: lib: server: Update static web server to match new frontend
joaoantoniocardoso Feb 12, 2026
c4e2806
src: lib: helper: Update webrtc route
joaoantoniocardoso Feb 12, 2026
9805a49
build: watch bindings, add friendly error message in case it is not b…
joaoantoniocardoso Feb 15, 2026
b7f581b
cargo: move url to workspace dependency
joaoantoniocardoso Feb 12, 2026
ed0559b
cargo: Introduce the new crate
joaoantoniocardoso Feb 12, 2026
29c4386
bindings: use and export API bindings
joaoantoniocardoso Feb 12, 2026
91c6f63
src: Update imports
joaoantoniocardoso Feb 12, 2026
9de82e8
cargo: enable ts-rs url-impl feature
joaoantoniocardoso Feb 12, 2026
093a1a5
frontend: Use v1 API bindings
joaoantoniocardoso Feb 12, 2026
a285826
.githooks: Add a pre-push hook that checks the API
joaoantoniocardoso Feb 12, 2026
7065efe
.github: Fail rust CI on unintentional API bindings mismatch
joaoantoniocardoso Feb 12, 2026
7daa695
.github: Release typescript bindings API
joaoantoniocardoso Feb 12, 2026
fe7652c
api: src: v1: Introduce stats API
joaoantoniocardoso Feb 13, 2026
81518c1
bindings: Generate bindings for stats API
joaoantoniocardoso Feb 13, 2026
b7b6772
cargo: Add libc as dependency
joaoantoniocardoso Feb 16, 2026
656ae1c
src: lib: stream: Introduce the stats module
joaoantoniocardoso Feb 13, 2026
399b14d
src: lib: cli: Add CLI args for stats configuration
joaoantoniocardoso Feb 13, 2026
6a78459
src: lib: stream: pipeline: Integrate pipeline analysis
joaoantoniocardoso Feb 13, 2026
87a016d
src: lib: stream: extract stream_id
joaoantoniocardoso Feb 22, 2026
f24d3dd
src: lib: server: Add REST API for stats
joaoantoniocardoso Feb 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .githooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Git pre-push hook: ensure TypeScript bindings are up to date before pushing.
#
# Install with:
# git config core.hooksPath .githooks
#
# Also called directly by CI.
set -euo pipefail

REPO_ROOT="$(git rev-parse --show-toplevel)"
cd "$REPO_ROOT"

echo "Regenerating TypeScript bindings..."
cargo run --package=bindings --locked

if ! git diff --exit-code frontend/bindings/; then
echo ""
echo "ERROR: Generated bindings differ from committed files."
echo "This may indicate a breaking API change. Please review the diff above,"
echo "run 'cargo run --package=bindings', and commit the result."
exit 1
fi

echo "Bindings are up to date."
exit 0
22 changes: 21 additions & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:

- name: Build frontend
run: |
cd src/lib/stream/webrtc/frontend && bun install && bun run build && cd -
cd frontend && bun install && bun run build && cd -

- name: Building for ${{ matrix.OS }} ${{ matrix.TARGET }} (${{ matrix.SUFFIX }})
if: ${{ contains(matrix.TARGET, 'linux') }}
Expand Down Expand Up @@ -101,12 +101,22 @@ jobs:
run: |
mkdir -p upload
cp target/${{ matrix.TARGET }}/release/mavlink-camera-manager${{ matrix.EXTENSION }} upload/mavlink-camera-manager-${{ matrix.SUFFIX }}${{ matrix.EXTENSION }}
if [ "${{ matrix.SUFFIX }}" = "linux-desktop" ]; then
tar -czf upload/typescript-bindings.tar.gz -C frontend bindings/
fi

- uses: actions/upload-artifact@v4
with:
name: mavlink-camera-manager-${{ matrix.SUFFIX }}
path: upload/*

- name: Upload TypeScript bindings
if: ${{ matrix.SUFFIX == 'linux-desktop' }}
uses: actions/upload-artifact@v4
with:
name: typescript-bindings
path: frontend/bindings/

- uses: svenstaro/upload-release-action@v2
name: Upload binaries to release
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')}}
Expand All @@ -117,3 +127,13 @@ jobs:
tag: ${{ github.ref }}
overwrite: true
file_glob: true

- uses: svenstaro/upload-release-action@v2
name: Upload bindings to release
if: ${{ matrix.SUFFIX == 'linux-desktop' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: upload/typescript-bindings.tar.gz
asset_name: typescript-bindings.tar.gz
tag: ${{ github.ref }}
overwrite: true
7 changes: 3 additions & 4 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
with:
node-version: '20'
# cache: 'yarn'
# cache-dependency-path: 'src/lib/stream/webrtc/frontend'
# cache-dependency-path: 'frontend'

- name: Install build dependencies - Install Yarn
run: npm install --global yarn
Expand All @@ -61,9 +61,8 @@ jobs:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable -y
echo "$HOME/.cargo/bin" >> $GITHUB_PATH

- name: Generate bindings
run: |
cargo run --package=bindings --verbose --locked
- name: Generate and check bindings
run: ./.githooks/pre-push

- uses: oven-sh/setup-bun@v2
with:
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
/src/html/vue.js
/target
**/*.rs.bk
.vscode
Expand Down
Loading
Loading