Skip to content

Implement full Scanner Map plan: upstream stack, Docker-first, security, settings UI - #2

Draft
Dadud wants to merge 11 commits into
mainfrom
cursor/full-plan-implementation-bfe4
Draft

Implement full Scanner Map plan: upstream stack, Docker-first, security, settings UI#2
Dadud wants to merge 11 commits into
mainfrom
cursor/full-plan-implementation-bfe4

Conversation

@Dadud

@Dadud Dadud commented May 23, 2026

Copy link
Copy Markdown
Owner

Summary

Implements the full Scanner Map review plan on a unified codebase: upstream PR stack poisonednumber#9poisonednumber#14 (runtime settings integration), fork hardening overlays, Docker-first deployment, pluggable local transcription backends, and expanded admin settings UI with the map app's terminal green theme.

Upstream stack integration

Docker-first install (PR #16 scope)

  • Multi-stage images: core, whisper, qwen, tone under docker/
  • Compose profiles: core, local-whisper, local-qwen, tone-detect, ollama, full
  • GPU override via docker-compose.gpu.yml
  • GHCR publish workflow on version tags (.github/workflows/docker-publish.yml)
  • Unraid Community Applications templates (unraid/scanner-map.xml, scanner-map-gpu.xml)
  • Split Python requirements by profile; npm run setup / npm run doctor for native dev

Transcription backends (PR #17 scope)

  • Pluggable Python router (transcription/router.py, transcribe.py)
  • Backends: faster-whisper, qwen3-asr (transformers/vLLM)
  • Settings keys: localTranscriptionBackend, qwenAsrModel, qwenAsrBackend, qwenAsrLanguage, enableToneDetection

Settings UI (PR poisonednumber#15 scope)

  • Terminal green theme via public/css/console.css
  • Expanded /settings sections: General, Discord, Ingestion, Transcription, Storage & AI, Diagnostics
  • Extracted user settings modal CSS to public/css/settings.css
  • Admin console JS moved to public/js/admin-settings.js

Security & stability overlays

  • API key HMAC fingerprint fast path (src/auth/apiKeyValidation.js)
  • Geocode proxy — keys no longer sent to browser (src/routes/geocodeProxy.js)
  • Rate limits on upload and audio endpoints (express-rate-limit)
  • Optional auth for /audio/:id when ENABLE_AUTH=true
  • Map-backed transcription queue facade (src/transcription/queue.js)
  • Unified DB polling (src/polling/callPoller.js)
  • WaveSurfer destroy on clearMarkers(); category sidebar XSS hardening
  • SQLite WAL + busy timeout; transcription indexes migration (005_create_transcription_indexes)

Testing

  • npm test — 36 tests passing
  • npm run check:syntax — all entrypoints pass
  • New tests: API key validation, transcription queue, Unraid templates, migration plan update

Quick start

cd docker && cp .env.example .env && docker compose up -d
# Map: http://localhost:3000  |  Settings: http://localhost:3000/settings
Open in Web Open in Cursor 

Dadud and others added 11 commits May 17, 2026 17:23
…(resolve conflicts favoring architecture modules)

Co-authored-by: Kyle B <Dadud30@gmail.com>
…ttings UI

Merge upstream architecture/runtime-settings-integration and port fork
hardening overlays: API key fingerprint validation, geocode proxy, rate
limits, unified polling, transcription queue facade, and WaveSurfer cleanup.

Add Docker-first deployment with core/whisper/qwen/tone images, Compose
profiles, GHCR publish workflow, and Unraid CA templates. Introduce
pluggable local transcription backends (faster-whisper, Qwen3-ASR) with
profile-based Python requirements.

Expand /settings and /setup with terminal green console theme, extract
shared settings CSS, and add npm run setup/doctor for native dev installs.

Co-authored-by: Kyle B <Dadud30@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants