mirror of
https://github.com/xpltdco/media-rip.git
synced 2026-04-03 02:53:58 -06:00
Settings are now persisted to SQLite (config table) and survive restarts. New admin-configurable settings (migrated from env-var-only): - Max concurrent downloads (1-10, default 3) - Session mode (isolated/shared/open) - Session timeout hours (1-8760, default 72) - Admin username - Auto-purge enabled (bool) - Purge max age hours (1-87600, default 168) Existing admin settings now also persist: - Welcome message - Default video/audio formats - Privacy mode + retention hours Architecture: - New settings service (services/settings.py) handles DB read/write - Startup loads persisted settings and applies to AppConfig - Admin PUT /settings validates, updates live config, and persists - GET /admin/settings returns all configurable fields - DownloadService.update_max_concurrent() hot-swaps the thread pool Also: - Fix footer GitHub URL (jlightner → xpltdco) - Add DEPLOY-TEST-PROMPT.md for deployment testing
57 lines
1.2 KiB
Vue
57 lines
1.2 KiB
Vue
<script setup lang="ts">
|
|
import { ref, onMounted } from 'vue'
|
|
import { api } from '@/api/client'
|
|
|
|
const appVersion = ref('')
|
|
const ytDlpVersion = ref('')
|
|
|
|
onMounted(async () => {
|
|
try {
|
|
const health = await api.getHealth()
|
|
appVersion.value = health.version
|
|
ytDlpVersion.value = health.yt_dlp_version
|
|
} catch {
|
|
appVersion.value = '?.?.?'
|
|
ytDlpVersion.value = 'unknown'
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<footer v-if="appVersion" class="app-footer">
|
|
<span>media.rip() v{{ appVersion }}</span>
|
|
<span class="sep">|</span>
|
|
<span>yt-dlp {{ ytDlpVersion }}</span>
|
|
<span class="sep">|</span>
|
|
<a
|
|
href="https://github.com/xpltdco/media-rip"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>GitHub</a>
|
|
</footer>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.app-footer {
|
|
text-align: center;
|
|
padding: var(--space-lg) var(--space-md);
|
|
color: var(--color-text-muted);
|
|
font-size: var(--font-size-sm);
|
|
opacity: 0.7;
|
|
}
|
|
|
|
.sep {
|
|
margin: 0 var(--space-sm);
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.app-footer a {
|
|
color: var(--color-text-muted);
|
|
text-decoration: none;
|
|
transition: color var(--transition-normal);
|
|
}
|
|
|
|
.app-footer a:hover {
|
|
color: var(--color-accent);
|
|
}
|
|
</style>
|