Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
ea409c9
Add scanner-api/package.json
Dadud Apr 15, 2026
9352ef4
Add scanner-api/tsconfig.json
Dadud Apr 15, 2026
6c8b9fc
Add scanner-api/prisma/schema.prisma
Dadud Apr 15, 2026
fa61129
Add scanner-api/src/index.ts
Dadud Apr 15, 2026
a388302
Add scanner-api/src/plugins/database.ts
Dadud Apr 15, 2026
3903783
Add scanner-api/src/plugins/redis.ts
Dadud Apr 15, 2026
a1b29a3
Add scanner-api/src/routes/calls.ts
Dadud Apr 15, 2026
2f2c438
Add scanner-api/src/routes/talkgroups.ts
Dadud Apr 15, 2026
6980452
Add scanner-api/src/routes/users.ts
Dadud Apr 15, 2026
b41c82a
Add scanner-api/src/routes/admin.ts
Dadud Apr 15, 2026
9478c7b
Add scanner-api/src/routes/config.ts
Dadud Apr 15, 2026
cd74dfc
Add scanner-api/src/routes/webhook.ts
Dadud Apr 15, 2026
da138c7
Add scanner-api/src/websocket/handler.ts
Dadud Apr 15, 2026
489d911
Add scanner-api/src/services/geocoding.ts
Dadud Apr 15, 2026
4b00089
Add scanner-api/Dockerfile
Dadud Apr 15, 2026
4d61ef6
Add scanner-transcribe/requirements.txt
Dadud Apr 15, 2026
a98491b
Add scanner-transcribe/src/config.py
Dadud Apr 15, 2026
5ebb6d3
Add scanner-transcribe/src/transcriber.py
Dadud Apr 15, 2026
7b2de35
Add scanner-transcribe/src/transcribe_cli.py
Dadud Apr 15, 2026
dada7c0
Add scanner-transcribe/src/api.py
Dadud Apr 15, 2026
054b106
Add scanner-transcribe/Dockerfile
Dadud Apr 15, 2026
de9a6c8
Add scanner-discord/package.json
Dadud Apr 15, 2026
9618d27
Add scanner-discord/tsconfig.json
Dadud Apr 15, 2026
a848cbe
Add scanner-discord/src/index.ts
Dadud Apr 15, 2026
5c50912
Add scanner-discord/src/commands/index.ts
Dadud Apr 15, 2026
5f51b6f
Add scanner-discord/Dockerfile
Dadud Apr 15, 2026
a069e62
Add scanner-ui/package.json
Dadud Apr 15, 2026
4851ce5
Add scanner-ui/tsconfig.json
Dadud Apr 15, 2026
d62d604
Add scanner-ui/tsconfig.node.json
Dadud Apr 15, 2026
9581028
Add scanner-ui/vite.config.ts
Dadud Apr 15, 2026
91a6544
Add scanner-ui/tailwind.config.js
Dadud Apr 15, 2026
1ab3d19
Add scanner-ui/postcss.config.js
Dadud Apr 15, 2026
db063bb
Add scanner-ui/index.html
Dadud Apr 15, 2026
00afe90
Add scanner-ui/nginx.conf
Dadud Apr 15, 2026
3d4b1e6
Add scanner-ui/src/index.css
Dadud Apr 15, 2026
bdd6f77
Add scanner-ui/src/main.tsx
Dadud Apr 15, 2026
4e0768c
Add scanner-ui/src/types.ts
Dadud Apr 15, 2026
c77bf44
Add scanner-ui/src/store.ts
Dadud Apr 15, 2026
f055874
Add scanner-ui/src/App.tsx
Dadud Apr 15, 2026
3acd6c7
Add scanner-ui/src/hooks/useSocket.ts
Dadud Apr 15, 2026
7c6af2a
Add scanner-ui/src/components/Map.tsx
Dadud Apr 15, 2026
13de78e
Add scanner-ui/src/components/CallFeed.tsx
Dadud Apr 15, 2026
e0ba196
Add scanner-ui/src/components/AudioPlayer.tsx
Dadud Apr 15, 2026
7332d3d
Add scanner-ui/src/components/Header.tsx
Dadud Apr 15, 2026
64fac65
Add scanner-ui/Dockerfile
Dadud Apr 15, 2026
d409f99
Add .env.example
Dadud Apr 15, 2026
b8e02ad
Add docker-compose.yml
Dadud Apr 15, 2026
c2c4311
Add README.md
Dadud Apr 15, 2026
2fedd9b
Update scanner-api/package.json
Dadud Apr 15, 2026
adf935f
Update scanner-api/src/index.ts
Dadud Apr 15, 2026
032be9f
Update scanner-api/src/plugins/env.ts
Dadud Apr 15, 2026
e72788f
Update scanner-api/src/plugins/auth.ts
Dadud Apr 15, 2026
dee13c4
Update scanner-api/src/plugins/jwt.ts
Dadud Apr 15, 2026
9534d29
Update scanner-api/vitest.config.ts
Dadud Apr 15, 2026
23a8f1a
Update scanner-api/src/tests/calls.test.ts
Dadud Apr 15, 2026
bb80029
Update scanner-api/src/tests/env.test.ts
Dadud Apr 15, 2026
9f00ed4
Update scanner-api/src/tests/talkgroups.test.ts
Dadud Apr 15, 2026
9e5841b
Update scanner-api/src/tests/auth.test.ts
Dadud Apr 15, 2026
586138a
Update scanner-api/src/tests/geocoding.test.ts
Dadud Apr 15, 2026
5d62464
Update scanner-transcribe/requirements.txt
Dadud Apr 15, 2026
5064383
Update scanner-transcribe/src/config.py
Dadud Apr 15, 2026
a1908e8
Update scanner-transcribe/src/tone_detector.py
Dadud Apr 15, 2026
0593536
Update scanner-transcribe/src/transcription_service.py
Dadud Apr 15, 2026
2433009
Update scanner-ui/src/hooks/useSocket.ts
Dadud Apr 15, 2026
c6c83f1
Docker build: docker-compose.yml
Dadud Apr 15, 2026
18cbf27
Docker build: README.md
Dadud Apr 15, 2026
25f20b2
Docker build: scanner-api/package.json
Dadud Apr 15, 2026
e0151eb
Docker build: scanner-api/Dockerfile
Dadud Apr 15, 2026
0066f53
Docker build: scanner-transcribe/Dockerfile
Dadud Apr 15, 2026
5f826e5
Docker build: scanner-transcribe/requirements.txt
Dadud Apr 15, 2026
e7800e5
Docker build: scanner-transcribe/src/config.py
Dadud Apr 15, 2026
90768c0
Docker build: scanner-discord/package.json
Dadud Apr 15, 2026
c17de5f
Docker build: scanner-discord/Dockerfile
Dadud Apr 15, 2026
8785f0c
Docker build: scanner-ui/package.json
Dadud Apr 15, 2026
c4f8251
Docker build: scanner-ui/vite.config.ts
Dadud Apr 15, 2026
f367a1d
Docker build: scanner-ui/Dockerfile
Dadud Apr 15, 2026
f7a48b2
Docker build: scanner-ui/nginx.conf
Dadud Apr 15, 2026
900e0a7
Docker build: scripts/start.sh
Dadud Apr 15, 2026
2ea2592
Docker build: scripts/start.ps1
Dadud Apr 15, 2026
f3fba14
Prebuilt images: .github/workflows/docker-push.yml
Dadud Apr 15, 2026
02a10c1
Prebuilt images: docker-compose.prebuilt.yml
Dadud Apr 15, 2026
00a84b8
Prebuilt images: scripts/install.sh
Dadud Apr 15, 2026
e7b8040
Prebuilt images: scripts/install.ps1
Dadud Apr 15, 2026
a8dc073
Prebuilt images: README.md
Dadud Apr 15, 2026
21b773c
Update docker-compose.yml
Dadud Apr 15, 2026
763ce40
Update .github/workflows/docker.yml
Dadud Apr 15, 2026
df658d7
Update README.md
Dadud Apr 15, 2026
6a58578
Update scripts/install.sh
Dadud Apr 15, 2026
4212e8f
Update scripts/install.ps1
Dadud Apr 15, 2026
35e059a
Update scanner-api/package.json
Dadud Apr 15, 2026
e0f3f46
Update scanner-api/Dockerfile
Dadud Apr 15, 2026
c62123e
Update scanner-api/tsconfig.json
Dadud Apr 15, 2026
df52872
Update scanner-api/prisma/schema.prisma
Dadud Apr 15, 2026
36b11de
Update scanner-api/src/index.ts
Dadud Apr 15, 2026
8c534a2
Update scanner-api/src/plugins/env.ts
Dadud Apr 15, 2026
1617511
Update scanner-api/src/plugins/database.ts
Dadud Apr 15, 2026
3177397
Update scanner-api/src/plugins/redis.ts
Dadud Apr 15, 2026
6c56bbb
Update scanner-api/src/plugins/jwt.ts
Dadud Apr 15, 2026
98e9413
Update scanner-api/src/routes/calls.ts
Dadud Apr 15, 2026
95e31f1
Update scanner-api/src/routes/talkgroups.ts
Dadud Apr 15, 2026
94b72ac
Update scanner-api/src/routes/users.ts
Dadud Apr 15, 2026
794a49e
Update scanner-api/src/routes/admin.ts
Dadud Apr 15, 2026
bbedef0
Update scanner-api/src/routes/webhook.ts
Dadud Apr 15, 2026
fafe191
Update scanner-api/src/routes/config.ts
Dadud Apr 15, 2026
f2415ce
Update scanner-api/src/websocket/handler.ts
Dadud Apr 15, 2026
8faaaff
Update scanner-transcribe/requirements.txt
Dadud Apr 15, 2026
4253fab
Update scanner-transcribe/Dockerfile
Dadud Apr 15, 2026
6480ba5
Update scanner-transcribe/src/config.py
Dadud Apr 15, 2026
21dd1b0
Update scanner-transcribe/src/transcriber.py
Dadud Apr 15, 2026
968abbf
Update scanner-transcribe/src/api.py
Dadud Apr 15, 2026
ccd3c49
Update scanner-discord/package.json
Dadud Apr 15, 2026
045066b
Update scanner-discord/Dockerfile
Dadud Apr 15, 2026
9b4a584
Update scanner-discord/tsconfig.json
Dadud Apr 15, 2026
4b90fc0
Update scanner-discord/src/index.ts
Dadud Apr 15, 2026
7dc2c7c
Update scanner-ui/package.json
Dadud Apr 15, 2026
1dce59e
Update scanner-ui/Dockerfile
Dadud Apr 15, 2026
da822e3
Update scanner-ui/vite.config.ts
Dadud Apr 15, 2026
a5fc7db
Update scanner-ui/postcss.config.js
Dadud Apr 15, 2026
fdee14a
Update scanner-ui/tailwind.config.js
Dadud Apr 15, 2026
75704a6
Update scanner-ui/nginx.conf
Dadud Apr 15, 2026
c6383c0
Update scanner-ui/index.html
Dadud Apr 15, 2026
b799a11
Update scanner-ui/src/index.css
Dadud Apr 15, 2026
ed8352e
Update scanner-ui/src/main.tsx
Dadud Apr 15, 2026
5006bdf
Update scanner-ui/src/App.tsx
Dadud Apr 15, 2026
266daa4
Update scanner-ui/src/store.ts
Dadud Apr 15, 2026
c191585
Update scanner-ui/src/hooks/useSocket.ts
Dadud Apr 15, 2026
c0379e3
Update scanner-ui/src/components/Map.tsx
Dadud Apr 15, 2026
6e9a946
Update scanner-ui/src/components/CallFeed.tsx
Dadud Apr 15, 2026
682958d
Update scanner-ui/src/components/Header.tsx
Dadud Apr 15, 2026
c7e2998
Remove old duplicate workflow
Dadud Apr 15, 2026
9989447
Simplify workflow - single build per push
Dadud Apr 15, 2026
f6a84ae
Simplify workflow - remove metadata action
Dadud Apr 15, 2026
708ecdd
Fix: use lowercase registry names
Dadud Apr 15, 2026
4b04396
Fix: use lowercase registry names
Dadud Apr 15, 2026
8209138
Fix: hardcode lowercase registry path
Dadud Apr 15, 2026
988ce7f
fix: use npm install instead of npm ci in scanner-api/Dockerfile
Dadud Apr 15, 2026
8de265d
fix: use npm install instead of npm ci in scanner-discord/Dockerfile
Dadud Apr 15, 2026
07b8b40
fix: use npm install instead of npm ci in scanner-ui/Dockerfile
Dadud Apr 15, 2026
7c08bae
fix(ui): remove unused selectedCall variable
Dadud Apr 15, 2026
1d95a82
fix(ui): remove react-leaflet-cluster, use basic markers
Dadud Apr 15, 2026
70af664
fix(api): fix user type declaration conflict
Dadud Apr 15, 2026
8cdb0f2
fix(api): add prisma type decoration to FastifyInstance
Dadud Apr 15, 2026
ec0d40e
fix(api): use ws WebSocket type for @fastify/websocket
Dadud Apr 15, 2026
dbd0f81
fix(api): add redis type decoration to FastifyInstance
Dadud Apr 15, 2026
9c5c009
fix(ui): fix postcss ESM import syntax
Dadud Apr 15, 2026
ca96797
fix(api): add missing dependencies (axios, vitest, @types/ws)
Dadud Apr 15, 2026
4093ac0
fix(api): exclude tests from build
Dadud Apr 15, 2026
ce59342
fix(api): properly type user and authenticate functions
Dadud Apr 15, 2026
c7c656d
fix(api): use correct ws WebSocket type
Dadud Apr 15, 2026
abca6b9
fix(api): properly type route params in calls.ts
Dadud Apr 15, 2026
beed976
fix(api): properly type route params in admin.ts
Dadud Apr 15, 2026
9fcd264
fix(api): properly type route params in talkgroups.ts
Dadud Apr 15, 2026
32d8eb3
fix(api): simplify index.ts - WebSocket will be added separately
Dadud Apr 15, 2026
7a0e64e
fix: restore realtime updates and add verification automation
Dadud Apr 15, 2026
d8d281a
fix: repair verification workflow regressions
Dadud Apr 15, 2026
916c5c5
fix: generate Prisma client before api build
Dadud Apr 15, 2026
ed465e4
fix: wire transcription worker and add runtime smoke checks
Dadud Apr 15, 2026
b475581
ci: run runtime smoke on branch pushes
Dadud Apr 15, 2026
8b89fff
fix: repair api and transcribe container startup
Dadud Apr 15, 2026
b95cad9
fix: harden runtime dependencies for smoke tests
Dadud Apr 15, 2026
9d9f71c
fix: expose api plugins and fall back to cpu transcription
Dadud Apr 15, 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
35 changes: 35 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
DATABASE_URL=postgresql://user:password@localhost:5432/scanner
REDIS_URL=redis://localhost:6379
PORT=3000
CORS_ORIGIN=http://localhost:5173

DISCORD_TOKEN=your_discord_bot_token
DISCORD_ALERT_CHANNEL_ID=your_alert_channel_id
DISCORD_SUMMARY_CHANNEL_ID=your_summary_channel_id

GEOCODING_PROVIDER=locationiq
LOCATIONIQ_API_KEY=your_locationiq_api_key
GOOGLE_MAPS_API_KEY=your_google_maps_api_key
GEOCODING_STATE=State
GEOCODING_COUNTRY=USA
GEOCODING_CITY=City
GEOCODING_TARGET_COUNTIES=County1,County2

TRANSCRIPTION_MODE=local
TRANSCRIPTION_DEVICE=cpu
WHISPER_MODEL=base

AI_PROVIDER=ollama
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-4o-mini

ENABLE_AUTH=false
WEBSERVER_PASSWORD=change_this_password

STORAGE_MODE=local
S3_BUCKET=
S3_REGION=
S3_ACCESS_KEY=
S3_SECRET_KEY=
92 changes: 92 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Build and Push Images

on:
push:
branches: [ main, refactor ]
tags: ['v*']
workflow_dispatch:

concurrency:
group: docker-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read
packages: write

jobs:
api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
context: ./scanner-api
push: true
tags: |
ghcr.io/dadud/scanner-map-api:${{ github.ref_name }}
ghcr.io/dadud/scanner-map-api:${{ github.sha }}
platforms: linux/amd64

transcribe:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
context: ./scanner-transcribe
push: true
tags: |
ghcr.io/dadud/scanner-map-transcribe:${{ github.ref_name }}
ghcr.io/dadud/scanner-map-transcribe:${{ github.sha }}
platforms: linux/amd64

discord:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
context: ./scanner-discord
push: true
tags: |
ghcr.io/dadud/scanner-map-discord:${{ github.ref_name }}
ghcr.io/dadud/scanner-map-discord:${{ github.sha }}
platforms: linux/amd64

ui:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
context: ./scanner-ui
push: true
tags: |
ghcr.io/dadud/scanner-map-ui:${{ github.ref_name }}
ghcr.io/dadud/scanner-map-ui:${{ github.sha }}
platforms: linux/amd64
116 changes: 116 additions & 0 deletions .github/workflows/smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Runtime Smoke

on:
push:
branches: [ main, refactor ]
workflow_run:
workflows: [Build and Push Images]
types: [completed]
workflow_dispatch:
inputs:
image_tag:
description: Image tag to test
required: false
default: refactor

concurrency:
group: smoke-${{ github.workflow }}-${{ github.event.workflow_run.head_branch || github.ref }}
cancel-in-progress: true

permissions:
contents: read
packages: read

jobs:
smoke:
if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
env:
IMAGE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.image_tag || github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.sha }}
DOCKER_ORG: dadud
DOCKER_REGISTRY: ghcr.io
POSTGRES_USER: scanner
POSTGRES_PASSWORD: scanner
POSTGRES_DB: scanner
REDIS_URL: redis://localhost:6379/0
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && github.sha || github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.sha }}

- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install smoke test dependencies
run: pip install requests websocket-client redis

- name: Wait for built images
run: |
for image in scanner-map-api scanner-map-ui scanner-map-transcribe scanner-map-discord; do
for attempt in $(seq 1 30); do
if docker pull ghcr.io/dadud/${image}:${IMAGE_TAG}; then
break
fi
if [ "$attempt" -eq 30 ]; then
echo "Timed out waiting for ghcr.io/dadud/${image}:${IMAGE_TAG}"
exit 1
fi
sleep 10
done
done

- name: Pull and start stack
run: |
docker compose -f docker-compose.prebuilt.yml up -d scanner-postgres scanner-redis scanner-api scanner-transcribe scanner-ui

- name: Wait for HTTP services
run: |
python - <<'PY'
import time
import requests

urls = [
'http://localhost:3000/api/health',
'http://localhost:8001/health',
'http://localhost'
]

for url in urls:
deadline = time.time() + 180
while time.time() < deadline:
try:
response = requests.get(url, timeout=5)
if response.ok:
print(f'ready: {url}')
break
except Exception:
pass
time.sleep(2)
else:
raise SystemExit(f'timed out waiting for {url}')
PY

- name: Initialize database schema
run: docker compose -f docker-compose.prebuilt.yml exec -T scanner-api npx prisma db push --accept-data-loss

- name: Seed smoke talkgroup
run: |
docker compose -f docker-compose.prebuilt.yml exec -T scanner-postgres psql -U scanner -d scanner -c "INSERT INTO \"Talkgroup\" (id, \"alphaTag\") VALUES ('smoke', 'Smoke Test') ON CONFLICT (id) DO NOTHING;"

- name: Run runtime smoke
run: python scripts/smoke_runtime.py

- name: Print compose logs on failure
if: failure()
run: docker compose -f docker-compose.prebuilt.yml logs --no-color

- name: Tear down stack
if: always()
run: docker compose -f docker-compose.prebuilt.yml down -v
91 changes: 91 additions & 0 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Verify Refactor

on:
push:
branches: [ main, refactor ]
pull_request:
branches: [ main ]
workflow_dispatch:

concurrency:
group: verify-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: scanner-api/package.json
- name: Install API dependencies
run: npm install --package-lock=false
working-directory: scanner-api
- name: Generate Prisma client
run: npm exec -- prisma generate
working-directory: scanner-api
- name: Build API
run: npm run build
working-directory: scanner-api

ui:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: scanner-ui/package.json
- name: Install UI dependencies
run: npm install --package-lock=false
working-directory: scanner-ui
- name: Build UI
run: npm run build
working-directory: scanner-ui

discord:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: scanner-discord/package.json
- name: Install Discord dependencies
run: npm install --package-lock=false
working-directory: scanner-discord
- name: Build Discord service
run: npm run build
working-directory: scanner-discord

transcribe:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install transcription dependencies
run: pip install -r requirements.txt
working-directory: scanner-transcribe
- name: Compile Python sources
run: python -m compileall src
working-directory: scanner-transcribe

compose:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate source compose file
run: docker compose -f docker-compose.yml config > /dev/null
- name: Validate prebuilt compose file
env:
DOCKER_ORG: dadud
DOCKER_REGISTRY: ghcr.io
IMAGE_TAG: refactor
run: docker compose -f docker-compose.prebuilt.yml config > /dev/null
Loading
Loading