mirror of
https://github.com/euzu/tuliprox.git
synced 2026-09-26 19:12:25 +02:00
* catchup fixes * feat(frontend): bookmarkable views via URL hash deep linking Persist the active view to the URL hash so views are bookmarkable and survive a page refresh. Restore the view from the hash on load, sync the hash on navigation, and handle browser back/forward via a hashchange listener. * feat(dev): add dev container for reproducible development * feat(frontend): interactive multi-series metric sparklines on stats cards * feat(frontend): aggregate status health banner with capacity breakdown * feat(frontend): add guided empty states with hints * chore(devcontainer): add gh CLI, dev tooling, cache volumes, and tasks - Install GitHub CLI, git, build-essential, clang, lld, mold, jq - Add cargo-watch, cargo-llvm-cov, cargo-deny, cargo-machete - Persist cargo registry, target, and gh config via named volumes - Fix volume ownership for the dev user in post-create * chore(vscode): add tasks and launch configs for dev workflow - tasks.json: backend/frontend dev servers, test, lint, fmt, coverage, deps checks, docs - launch.json: CodeLLDB configs for backend and workspace tests * a11y: add accessible labels to inputs and collapsed sidebar buttons - Input: add aria_label prop, falling back to placeholder when no visible label - Sidebar: pass translated hint + aria_label to collapsed-mode icon buttons * feat(frontend): warn on unsaved config changes before page unload * feat(frontend): handle session expiry with client-side logout Schedule a client-side logout when the JWT expires, showing a notification and returning the user to the login screen instead of silently failing with 401s. * chore(vscode): update tasks.json * New Features Session expiration detection with proactive logout warning Real-time health status banner showing connectivity and provider status Live metric sparklines for CPU, memory, and network usage Deep-linkable views via URL hash with back/forward browser support Enhanced empty states with guided messages across app sections Improvements Faster system metrics sampling (2-second intervals) Archive and catchup-aware EPG handling for accurate program guides * New Features Session expiration detection with proactive logout warning Real-time health status banner showing connectivity and provider status Live metric sparklines for CPU, memory, and network usage Deep-linkable views via URL hash with back/forward browser support Enhanced empty states with guided messages across app sections Improvements Faster system metrics sampling (2-second intervals) Archive and catchup-aware EPG handling for accurate program guides
109 lines
2.5 KiB
YAML
109 lines
2.5 KiB
YAML
name: CI
|
|
|
|
on:
|
|
# push:
|
|
# branches: []
|
|
pull_request:
|
|
branches: [develop]
|
|
|
|
# Avoid running the same CI multiple times for the same PR
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# Job 1: Check markdown files
|
|
markdown:
|
|
name: Markdown Lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Lint Markdown files
|
|
uses: DavidAnson/markdownlint-cli2-action@v22
|
|
with:
|
|
globs: '**/*.md'
|
|
|
|
# Job 2: Check code style (very fast)
|
|
style:
|
|
name: Format & Lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Nightly Rust
|
|
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
|
|
with:
|
|
toolchain: nightly-2026-05-01
|
|
components: rustfmt, clippy
|
|
|
|
- name: Check Formatting
|
|
# This now works with cargo +nightly fmt
|
|
run: make fmt-check
|
|
|
|
- name: Lint with Clippy
|
|
run: make lint
|
|
|
|
docs:
|
|
name: Documentation Build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install mdBook
|
|
uses: taiki-e/install-action@v2
|
|
with:
|
|
tool: mdbook
|
|
|
|
- name: Build documentation
|
|
run: make docs
|
|
|
|
frontend:
|
|
name: Frontend Build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Rust Tools
|
|
uses: taiki-e/install-action@v2
|
|
with:
|
|
tool: trunk,wasm-bindgen-cli,mdbook
|
|
|
|
- name: Install Stable Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: wasm32-unknown-unknown
|
|
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-targets: "true"
|
|
|
|
- name: Install wasm tools 128
|
|
run: |
|
|
chmod +x ./bin/install_wasm_tools.sh
|
|
WASM_TOOLS_BIN="$(./bin/install_wasm_tools.sh 128)"
|
|
echo "${WASM_TOOLS_BIN}" >> "$GITHUB_PATH"
|
|
|
|
- name: Build frontend with wasm-opt
|
|
run: |
|
|
chmod +x ./bin/build_docs.sh ./bin/build_fe.sh
|
|
./bin/build_fe.sh release
|
|
|
|
# Job 3: Build and Test (takes longer)
|
|
test:
|
|
name: Build & Test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Stable Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Rust Cache
|
|
# This magic step saves compiled dependencies between runs
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Run Tests
|
|
run: make test
|