Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
20 changes: 10 additions & 10 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"permissions": {
"allow": [
"Bash(npx svelte-check *)",
"Bash(npm install *)",
"Bash(npx tsc *)",
"Bash(docker compose *)",
"Bash(npx prisma *)",
"Bash(npm run *)"
]
}
"permissions": {
"allow": [
"Bash(npx svelte-check *)",
"Bash(npm install *)",
"Bash(npx tsc *)",
"Bash(docker compose *)",
"Bash(npx prisma *)",
"Bash(npm run *)"
]
}
}
60 changes: 30 additions & 30 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,62 +1,62 @@
version: 2
updates:
# Enable version updates for npm
- package-ecosystem: "npm"
directory: "/"
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
interval: 'weekly'
day: 'monday'
time: '09:00'
open-pull-requests-limit: 10
groups:
# Group all non-major updates together
minor-and-patch:
patterns:
- "*"
- '*'
update-types:
- "minor"
- "patch"
- 'minor'
- 'patch'
# Group development dependencies
dev-dependencies:
dependency-type: "development"
dependency-type: 'development'
update-types:
- "minor"
- "patch"
- 'minor'
- 'patch'
# Specific package configurations
ignore:
# Ignore major version updates for stable dependencies
# (uncomment and add packages as needed)
# - dependency-name: "svelte"
# update-types: ["version-update:semver-major"]
labels:
- "dependencies"
- "automated"
- 'dependencies'
- 'automated'
reviewers:
- "willuhmjs"
- 'willuhmjs'
commit-message:
prefix: "chore"
include: "scope"
prefix: 'chore'
include: 'scope'

# Enable version updates for Docker
- package-ecosystem: "docker"
directory: "/"
- package-ecosystem: 'docker'
directory: '/'
schedule:
interval: "weekly"
day: "monday"
interval: 'weekly'
day: 'monday'
labels:
- "dependencies"
- "docker"
- 'dependencies'
- 'docker'
commit-message:
prefix: "chore"
prefix: 'chore'

# Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: "weekly"
day: "monday"
interval: 'weekly'
day: 'monday'
labels:
- "dependencies"
- "ci"
- 'dependencies'
- 'ci'
commit-message:
prefix: "chore"
prefix: 'chore'
6 changes: 3 additions & 3 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ name: Build and Push Docker Image

on:
push:
branches: [ main, master ]
tags: [ 'v*.*.*' ]
branches: [main, master]
tags: ['v*.*.*']
pull_request:
branches: [ main, master ]
branches: [main, master]

env:
REGISTRY: ghcr.io
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/extension-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,18 @@ name: Publish Extension (Firefox AMO)

on:
push:
branches: [ main, master ]
branches: [main, master]
paths:
- 'extension/**'
workflow_dispatch: {}

jobs:
publish:
# Forks have no AMO credentials — publishing only runs in the upstream repo.
if: github.repository == 'willuhmjs/wytui'
runs-on: ubuntu-latest
permissions:
contents: write # to push the ext-v<version> tag
contents: write # to push the ext-v<version> tag
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/helm-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Package and Publish Helm Chart

on:
push:
branches: [ main, master ]
branches: [main, master]
paths:
- 'charts/**'
workflow_dispatch:
Expand Down
22 changes: 22 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Package managers
package-lock.json
pnpm-lock.yaml
yarn.lock

# Build output & generated
.svelte-kit/
build/
dist/
node_modules/
extension-artifacts/

# Prisma generated client
prisma/generated/
src/lib/prisma/

# Misc
*.min.js
*.min.css

# Helm charts (Go templates break under Prettier)
charts/
7 changes: 7 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"useTabs": true,
"singleQuote": true,
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
}
5 changes: 3 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ RUN npm prune --production

FROM node:24-alpine3.23

RUN apk add --no-cache ffmpeg curl python3 \
&& curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp \
ARG YTDLP_VERSION=2025.06.09
RUN apk add --no-cache ffmpeg curl python3 aria2 \
&& curl -L https://github.com/yt-dlp/yt-dlp/releases/download/${YTDLP_VERSION}/yt-dlp -o /usr/local/bin/yt-dlp \
&& chmod a+rx /usr/local/bin/yt-dlp

RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
Expand Down
1 change: 1 addition & 0 deletions PRIVACY.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
wytui does not collect, store, or transmit any personal data to any third party.

The extension stores the following data locally in your browser using chrome.storage.local:

- Your wytui server URL
- Your optional API key

Expand Down
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,23 +60,23 @@ The chart includes a bundled PostgreSQL by default. To use an external database:
postgresql:
enabled: false
secret:
url: "postgresql://user:pass@host:5432/wytui?schema=public"
url: 'postgresql://user:pass@host:5432/wytui?schema=public'
```

### Environment Variables

| Variable | Description |
|---|---|
| `DATABASE_URL` | PostgreSQL connection string |
| `AUTH_SECRET` | Session signing secret |
| `AUTH_TRUST_HOST` | Set `true` behind a reverse proxy (optional) |
| `ORIGIN` | Public URL of the app (optional, defaults to `http://localhost:3000`) |
| `ADMIN_USERNAME` | Auto-create admin user, skipping the setup wizard (optional) |
| `ADMIN_PASSWORD` | Password for the auto-created admin user (optional) |
| `OIDC_ISSUER_URL` | OIDC issuer URL (optional) |
| `OIDC_CLIENT_ID` | OIDC client ID (optional) |
| `OIDC_CLIENT_SECRET` | OIDC client secret (optional) |
| `OIDC_DISPLAY_NAME` | OIDC provider display name (optional, defaults to "SSO") |
| Variable | Description |
| -------------------- | --------------------------------------------------------------------- |
| `DATABASE_URL` | PostgreSQL connection string |
| `AUTH_SECRET` | Session signing secret |
| `AUTH_TRUST_HOST` | Set `true` behind a reverse proxy (optional) |
| `ORIGIN` | Public URL of the app (optional, defaults to `http://localhost:3000`) |
| `ADMIN_USERNAME` | Auto-create admin user, skipping the setup wizard (optional) |
| `ADMIN_PASSWORD` | Password for the auto-created admin user (optional) |
| `OIDC_ISSUER_URL` | OIDC issuer URL (optional) |
| `OIDC_CLIENT_ID` | OIDC client ID (optional) |
| `OIDC_CLIENT_SECRET` | OIDC client secret (optional) |
| `OIDC_DISPLAY_NAME` | OIDC provider display name (optional, defaults to "SSO") |

## OIDC Authentication

Expand Down
2 changes: 1 addition & 1 deletion charts/wytui/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ name: wytui
description: Self-hosted web UI for yt-dlp
type: application
version: 0.1.0
appVersion: "latest"
appVersion: 'latest'
4 changes: 2 additions & 2 deletions charts/wytui/templates/service/wytui.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ spec:
selector:
app: wytui
ports:
- port: 3000
targetPort: 3000
- port: 3000
targetPort: 3000
28 changes: 14 additions & 14 deletions charts/wytui/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ ingress:
secret:
existing: false
name: wytui-secret
authSecret: ""
authSecret: ''
authSecretKey: AUTH_SECRET

oidc:
Expand All @@ -29,9 +29,9 @@ oidc:
name: wytui-oidc-secret
clientId: wytui
clientIdKey: OIDC_CLIENT_ID
clientSecret: ""
clientSecret: ''
clientSecretKey: OIDC_CLIENT_SECRET
issuer: ""
issuer: ''
issuerKey: OIDC_ISSUER_URL

postgresql:
Expand All @@ -41,35 +41,35 @@ postgresql:
secret:
existing: false
name: wytui-postgresql-secret
url: ""
url: ''
urlKey: DATABASE_URL
username: wytui
usernameKey: POSTGRES_USER
password: ""
password: ''
passwordKey: POSTGRES_PASSWORD
persistent:
existingClaim: ""
subPath: ""
existingClaim: ''
subPath: ''
size: 5Gi
storageClass: ""
storageClass: ''
accessModes:
- ReadWriteOnce

downloads:
persistent:
existingClaim: ""
subPath: ""
existingClaim: ''
subPath: ''
size: 5Gi
storageClass: ""
storageClass: ''
accessModes:
- ReadWriteOnce

library:
persistent:
existingClaim: ""
subPath: ""
existingClaim: ''
subPath: ''
size: 10Gi
storageClass: ""
storageClass: ''
accessModes:
- ReadWriteOnce

Expand Down
12 changes: 8 additions & 4 deletions docker-compose.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ services:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-devpassword}
POSTGRES_DB: ${POSTGRES_DB:-wytui}
ports:
- "5432:5432"
- '5432:5432'
volumes:
- pgdata:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
Expand All @@ -22,11 +22,15 @@ services:
volumes:
- .:/app
- /app/node_modules
# Keep SvelteKit's generated output container-local so it never collides
# with the host's .svelte-kit (host tooling like `npm run check` and the
# container's Vite dev server each own their own copy).
- /app/.svelte-kit
- downloads:/downloads
- library:/media
ports:
- "5173:5173"
- "5555:5555"
- '5173:5173'
- '5555:5555'
environment:
- DATABASE_URL=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-devpassword}@db:5432/${POSTGRES_DB:-wytui}?schema=public
- AUTH_SECRET=${AUTH_SECRET:-dev-secret-please-change-in-production}
Expand Down
6 changes: 3 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ services:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set. Run ./docker-init.sh to auto-generate secure credentials.}
POSTGRES_DB: ${POSTGRES_DB:-wytui}
ports:
- "5432:5432"
- '5432:5432'
volumes:
- pgdata:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
Expand All @@ -27,7 +27,7 @@ services:
app:
build: .
ports:
- "3000:3000"
- '3000:3000'
environment:
- DATABASE_URL=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB:-wytui}?schema=public
- AUTH_SECRET=${AUTH_SECRET:?AUTH_SECRET must be set. Run ./docker-init.sh to auto-generate secure credentials.}
Expand Down
Loading
Loading