Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
1788792
feat(presets): implement Iteration 3 - Preset Mapping + storePreset
Feb 10, 2026
6876e8d
test(config): update discovery_timeout test for 5s default
Feb 10, 2026
4bbde36
test(frontend): fix API port and type errors in tests
Feb 10, 2026
63b26f4
chore: remove temporary WSL2 multicast debug files
Feb 10, 2026
112bd99
refactor: extract BaseRepository to eliminate code duplication
Feb 10, 2026
d2f92c5
refactor: add service layer to devices and settings modules
Feb 11, 2026
076e6eb
perf: Session-scoped fixtures + Vite code splitting + E2E Preset tests
Feb 11, 2026
82210dc
fix(e2e): Handle API response format in preset-mapping tests
Feb 12, 2026
011600e
fix(e2e): Fix second API response format issue in preset-mapping
Feb 12, 2026
833041c
chore(tests): Add TypeScript configuration for Cypress E2E tests
Feb 12, 2026
7574efc
perf(e2e): Phase 1 Cypress optimizations - reduce timeouts
Feb 12, 2026
4542b01
perf(e2e): Phase 2 - reduce animation waits 300ms->150ms
Feb 12, 2026
1520884
docs: consolidate CODECOV_SETUP into TESTING.md, remove obsolete anal…
Feb 12, 2026
2868bb7
fix(security): prevent path traversal in SPA catch-all route
Feb 12, 2026
e83297e
fix(frontend): replace 'any' type with RawStationData interface
Feb 12, 2026
b419f48
fix(test): add pythonpath to pytest.ini for CI compatibility
Feb 12, 2026
c68fa78
refactor(arch): migrate DI from global singletons to app.state
Feb 12, 2026
772b2ac
feat(ci): add Trivy container security scanning to CI/CD
Feb 12, 2026
3f03ac8
chore(deps): enable Dependabot for automated dependency updates
Feb 12, 2026
a6f9b49
test(integration): add device discovery-sync-persist flow test (TEST-01)
Feb 13, 2026
ba047d0
test(frontend): add component tests for Navigation and PresetButton (…
Feb 13, 2026
c630afe
refactor(devices): add Protocol interfaces and separate models (ARCH-…
Feb 13, 2026
d298f0b
refactor(core): implement unified exception handling strategy (ARCH-06)
Feb 13, 2026
3588a87
feat(frontend): implement React Query for state management (FE-01)
Feb 13, 2026
ee4a2e6
test(frontend): fix React Query test patterns for FE-01 completion
Feb 13, 2026
fd34550
feat(frontend): implement Error Boundaries (FE-02)
Feb 13, 2026
f5b6c1f
refactor(backend): remove debug print statements from serve_spa
Feb 13, 2026
f3ba87d
feat(frontend): add reusable LoadingSkeleton components (FE-05)
Feb 13, 2026
27d4b3d
build(docker): enhance .dockerignore for smaller images (BUILD-02)
Feb 13, 2026
a99d6e6
build(docker): pin base images with SHA256 digests (BUILD-03)
Feb 13, 2026
0506fa9
ci(security): add Trivy Docker security scanning gate (BUILD-04)
Feb 13, 2026
0fa630e
test(backend): fix pytest configuration (TEST-07)
Feb 13, 2026
7209f99
docs: add automated license audit (Quick Win)
Feb 13, 2026
65c4108
fix(devices): correct indentation in IDeviceSyncService protocol
Feb 13, 2026
cb7b69c
fix(security): restrict CORS origins in production
Feb 13, 2026
7b1cccb
fix(db): use unique index names per table
Feb 13, 2026
cc93df1
refactor(radio): consolidate RadioStation model into radio/models.py
Feb 13, 2026
6f67018
chore(deps): clean up workspace dependencies
Feb 13, 2026
ca62b5d
fix(config): correct database filename in example config
Feb 13, 2026
30eb340
fix(deps): synchronize pyproject.toml with pinned versions
Feb 13, 2026
3fe5f2a
docs: create missing documentation for P2-007
Feb 13, 2026
51a4308
feat(hooks): add mandatory test hook blocking commits with failures
Feb 13, 2026
ca183a0
test: add RFC 7807 error handler tests + regression tests for bugfixes
Feb 13, 2026
c752424
fix(docker): update base image digests + fix test unused variable
Feb 14, 2026
a4cf194
feat(deploy): add deployment infrastructure + fix container crash
Feb 14, 2026
c1d2f80
refactor(deploy): extract infrastructure to .env config + fix(e2e): u…
Feb 14, 2026
a8543fb
fix(frontend): resolve E2E test race conditions and selector brittleness
Feb 14, 2026
66b27c0
Add initial configuration files and scripts for SoundTouch SSH access
Feb 15, 2026
ca87cc2
fix(ci): extend commit header limit and fix dependabot config
Feb 16, 2026
b4ab4ad
fix(ci): pin black version to 24.10.0 for consistent formatting
Feb 16, 2026
0b0f6bb
style(frontend): format with prettier
Feb 16, 2026
d2b9030
fix(ci): add respx dependency, lower coverage thresholds, fix lint er…
Feb 16, 2026
795f897
fix(lint): resolve ESLint errors in frontend
Feb 16, 2026
6c88729
fix(frontend): format files and fix syntax error
Feb 16, 2026
e8e0932
fix(lint): use block eslint-disable for framer-motion mock
Feb 16, 2026
f51fdfe
ci: allow e2e tests to fail gracefully in CI
Feb 16, 2026
3c35443
fix(deps): upgrade dependencies to fix security vulnerabilities
Feb 16, 2026
b5e64e2
fix(deps): pin jaraco-context and wheel to exact versions
Feb 16, 2026
cb44d75
chore(deps)(deps): bump actions/setup-python from 5 to 6 (#14)
dependabot[bot] Feb 16, 2026
759424f
chore(deps)(deps): bump actions/cache from 4 to 5 (#15)
dependabot[bot] Feb 16, 2026
d835e9e
chore(deps)(deps): bump actions/setup-node from 4 to 6 (#16)
dependabot[bot] Feb 16, 2026
5611334
chore(deps): bump @eslint/js from 9.39.2 to 10.0.1 (#17)
dependabot[bot] Feb 16, 2026
7fa6d00
chore(deps)(deps-dev): bump @vitejs/plugin-react from 5.1.3 to 5.1.4 …
dependabot[bot] Feb 16, 2026
98a6f56
chore(deps)(deps-dev): bump typescript-eslint from 8.54.0 to 8.55.0 (…
dependabot[bot] Feb 16, 2026
083f775
chore(deps)(deps-dev): bump pytest-cov in /apps/backend (#21)
dependabot[bot] Feb 16, 2026
2ea6e5b
chore(deps): bump black from 24.10.0 to 26.1.0 (#23)
dependabot[bot] Feb 16, 2026
1f86922
chore(deps): bump the python-minor-patch group across 1 directory wit…
dependabot[bot] Feb 16, 2026
be886e8
ci: parallelize e2e tests with unit tests
Feb 16, 2026
0a0e04d
chore(deps): bump the python-minor-patch group across 1 directory wit…
dependabot[bot] Feb 16, 2026
ef8a93f
fix(docker): install security deps first to prevent vuln versions
Feb 16, 2026
8316af1
fix(docker): remove vulnerable vendored deps from setuptools
Feb 16, 2026
e568137
fix(docker): remove vulnerable deps from final runtime image
Feb 16, 2026
383843a
fix(ci): handle container scan registry access gracefully
Feb 16, 2026
00aa96e
fix(ci): add continue-on-error to all container scan steps
Feb 16, 2026
f5ec822
fix(ci): replace continue-on-error with manual input parameter
Feb 16, 2026
6249075
docs(readme): add provider roadmap for tunein and spotify
scheilch Feb 16, 2026
72182d8
docs(readme): remove placeholders and fix technical inaccuracies
scheilch Feb 16, 2026
dd9f70a
docs(readme): update trademark references and improve clarity in desc…
scheilch Feb 16, 2026
939b996
fix(tests): resolve TypeScript errors and consolidate test structure
Feb 17, 2026
4ac27b1
Merge branch 'main' of https://github.com/scheilch/opencloudtouch
Feb 17, 2026
b73f66d
feat(devices): add key type mapping
Feb 18, 2026
60ed30f
chore(version): sync backend package version
Feb 18, 2026
31e9887
style: fix mixed line endings
Mar 8, 2026
c567e86
style: fix missing end-of-file newlines
Mar 8, 2026
c5cd110
Feature/wizard setup (#39)
scheilch Mar 8, 2026
60f503f
chore(deps): bump actions/checkout from 4 to 6 (#27)
dependabot[bot] Mar 9, 2026
b10a31f
chore(deps): bump docker/build-push-action from 5 to 6 (#28)
dependabot[bot] Mar 9, 2026
7e9546a
chore(deps): bump actions/download-artifact from 4 to 7 (#29)
dependabot[bot] Mar 9, 2026
f7823cc
chore(deps): bump framer-motion from 12.33.0 to 12.34.3 (#30)
dependabot[bot] Mar 9, 2026
38b3364
chore(deps-dev): bump typescript-eslint from 8.55.0 to 8.56.0 (#31)
dependabot[bot] Mar 9, 2026
ed75052
chore(deps-dev): bump jsdom from 28.0.0 to 28.1.0 (#32)
dependabot[bot] Mar 9, 2026
e29b9f9
chore(deps-dev): bump minimatch from 3.1.2 to 3.1.5 (#38)
dependabot[bot] Mar 9, 2026
d699f4b
chore(deps): bump the python-minor-patch group across 1 directory wit…
dependabot[bot] Mar 9, 2026
3877dd3
chore(deps-dev): bump commitizen from 3.29.1 to 4.13.8 in /apps/backe…
dependabot[bot] Mar 9, 2026
58d17c5
chore(release): v1.0.0 release workflow, version bump, docs
Mar 9, 2026
4b47a6f
fix(ci): quote KEYBOARD_LAYOUT value in pi-gen config
Mar 9, 2026
8ec7342
fix(ci): quote STAGE_LIST in pi-gen config
Mar 9, 2026
e5ee06b
fix(docker): skip Cypress binary in Docker build, move to devDependen…
Mar 9, 2026
58ca5db
chore(deps-dev): bump eslint from 9.39.2 to 10.0.3 in /apps/frontend
dependabot[bot] Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
65 changes: 0 additions & 65 deletions .ci-config.md

This file was deleted.

2 changes: 1 addition & 1 deletion .commitlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"never",
["sentence-case", "start-case", "pascal-case", "upper-case"]
],
"header-max-length": [2, "always", 72],
"header-max-length": [2, "always", 100],
"body-leading-blank": [1, "always"],
"body-max-line-length": [2, "always", 100],
"footer-leading-blank": [1, "always"]
Expand Down
75 changes: 71 additions & 4 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,18 +1,85 @@
# Version Control
.git/
.gitignore
.gitattributes
.github/

# IDE & Editor
.vscode/
.idea/
*.swp
*.swo
*~

# Python
**/__pycache__/
**/*.pyc
**/*.pyo
**/*.pyd
.Python
**/.pytest_cache/
**/.coverage
htmlcov/
*.cover
.hypothesis/
**/*.egg-info/
**/venv/
**/.venv/
**/env/
**/.env/

# Node.js / Frontend
**/node_modules/
**/dist/
**/.vite/
**/venv/
**/.pytest_cache/
**/.coverage
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# Build artifacts
build/
dist/
*.egg
*.whl

# Documentation
docs/
tests/
*.md
!README.md

# Tests
tests/
**/test_*.py
**/*_test.py
**/*.test.ts
**/*.test.tsx
**/*.spec.ts
**/*.spec.tsx
e2e/
cypress/

# Environment & Config
.env
.env.*
!.env.example
*.local

# Database
*.db
*.db-journal
*.sqlite
*.sqlite3

# Logs
*.log
logs/

# OS
.DS_Store
Thumbs.db

# Temporary files
*.tmp
*.temp
.cache/
18 changes: 0 additions & 18 deletions .env.example

This file was deleted.

43 changes: 43 additions & 0 deletions .env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Example ENV file for OpenCloudTouch
# Copy to .env and adjust values

# Server Configuration
OCT_HOST=0.0.0.0
OCT_PORT=7777
OCT_LOG_LEVEL=INFO

# Deployment Configuration (for deploy-to-server.ps1)
DEPLOY_HOST=192.168.1.11
DEPLOY_USER=root
DEPLOY_USE_SUDO=false

# Container Configuration
CONTAINER_NAME=opencloudtouch
CONTAINER_TAG=opencloudtouch:latest
CONTAINER_PORT=7777

# Remote Paths (on deployment target)
REMOTE_DATA_PATH=/mnt/tank/applications/opencloudtouch/data
REMOTE_IMAGE_PATH=/tmp

# Local Paths (on dev machine)
LOCAL_DATA_PATH=./deployment/data-local

# Database
OCT_DB_PATH=/data/oct.db

OCT_DISCOVERY_ENABLED=true
OCT_DISCOVERY_TIMEOUT=10

# Optional: Manual Device IPs (comma-separated)
# OCT_MANUAL_DEVICE_IPS=<device-ip-1>,<device-ip-2>

OCT_DEVICE_HTTP_PORT=8090
OCT_DEVICE_WS_PORT=8080

# Adjust to your OCT host IP/hostname
OCT_STATION_DESCRIPTOR_BASE_URL=http://<your-oct-host>:7777/stations/preset

# GitHub Models API (Vision-Analyse)
# Classic PAT ohne Scopes: https://github.com/settings/tokens/new
GITHUB_TOKEN_COPILOT=
13 changes: 13 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Force LF line endings for shell scripts (prevents Docker entrypoint errors on Windows)
*.sh text eol=lf

# Force LF for Python files
*.py text eol=lf

# Force LF for YAML/JSON
*.yml text eol=lf
*.yaml text eol=lf
*.json text eol=lf

# Auto-detect for other text files
* text=auto
103 changes: 103 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Dependabot configuration for automated dependency updates
# Monitors Python (backend) and npm (frontend) dependencies weekly

version: 2
updates:
# Backend Python dependencies
- package-ecosystem: "pip"
directory: "/apps/backend"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "python"
- "backend"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
reviewers:
- "user"
assignees:
- "user"
# Group minor and patch updates together
groups:
python-minor-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"

# Frontend npm dependencies
- package-ecosystem: "npm"
directory: "/apps/frontend"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "npm"
- "frontend"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
reviewers:
- "user"
assignees:
- "user"
# Ignore major versions for stable dependencies
ignore:
# React stays at 18.x for stability
- dependency-name: "react"
update-types: ["version-update:semver-major"]
- dependency-name: "react-dom"
update-types: ["version-update:semver-major"]
# Group minor and patch updates together
groups:
npm-minor-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"

# Root-level npm dependencies (workspace management)
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
open-pull-requests-limit: 3
labels:
- "dependencies"
- "npm"
- "workspace"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"

# GitHub Actions dependencies
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
open-pull-requests-limit: 3
labels:
- "dependencies"
- "github-actions"
- "ci"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
Loading
Loading