0.12.0-9 Fix Jobs

This commit is contained in:
2026-03-23 06:59:51 +00:00
parent 50d5fccd95
commit a87ba330b1
11 changed files with 29 additions and 17 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "ripster-backend", "name": "ripster-backend",
"version": "0.12.0-8", "version": "0.12.0-9",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ripster-backend", "name": "ripster-backend",
"version": "0.12.0-8", "version": "0.12.0-9",
"dependencies": { "dependencies": {
"archiver": "^7.0.1", "archiver": "^7.0.1",
"cors": "^2.8.5", "cors": "^2.8.5",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "ripster-backend", "name": "ripster-backend",
"version": "0.12.0-8", "version": "0.12.0-9",
"private": true, "private": true,
"type": "commonjs", "type": "commonjs",
"scripts": { "scripts": {
+1 -1
View File
@@ -2968,7 +2968,7 @@ class HistoryService {
` `
SELECT * SELECT *
FROM jobs FROM jobs
WHERE status IN ('RIPPING', 'ENCODING', 'CD_ANALYZING', 'CD_RIPPING', 'CD_ENCODING') WHERE status IN ('ANALYZING', 'RIPPING', 'ENCODING', 'MEDIAINFO_CHECK', 'READY_TO_ENCODE', 'CD_ANALYZING', 'CD_READY_TO_RIP', 'CD_RIPPING', 'CD_ENCODING')
ORDER BY updated_at ASC, id ASC ORDER BY updated_at ASC, id ASC
` `
), ),
+4 -2
View File
@@ -5065,10 +5065,12 @@ class PipelineService extends EventEmitter {
'WAITING_FOR_USER_DECISION', 'WAITING_FOR_USER_DECISION',
'READY_TO_START', 'READY_TO_START',
'MEDIAINFO_CHECK', 'MEDIAINFO_CHECK',
'READY_TO_ENCODE', // READY_TO_ENCODE intentionally excluded: user has confirmed encoding,
// a new analyze must not silently delete a queued encode job.
'CD_ANALYZING', 'CD_ANALYZING',
'CD_METADATA_SELECTION', 'CD_METADATA_SELECTION',
'CD_READY_TO_RIP', // CD_READY_TO_RIP intentionally excluded: user has confirmed track
// selection, a new analyze must not discard that.
'ERROR', 'ERROR',
'CANCELLED' 'CANCELLED'
]); ]);
+11 -1
View File
@@ -28,12 +28,21 @@ function transliterateForFilename(input) {
function sanitizeFileName(input) { function sanitizeFileName(input) {
return transliterateForFilename(String(input || 'untitled')) return transliterateForFilename(String(input || 'untitled'))
.replace(/[\\/:*?"<>|]/g, '_') .replace(/[^a-zA-Z0-9 ()[\]-]/g, '')
.replace(/\s+/g, ' ') .replace(/\s+/g, ' ')
.trim() .trim()
.slice(0, 180); .slice(0, 180);
} }
function sanitizeFileNameWithExtension(input) {
const str = String(input || 'untitled');
const ext = path.extname(str);
const base = ext ? str.slice(0, -ext.length) : str;
const cleanBase = sanitizeFileName(base);
const cleanExt = ext.toLowerCase().replace(/[^a-z0-9.]/g, '');
return (cleanBase || 'untitled') + cleanExt;
}
function renderTemplate(template, values) { function renderTemplate(template, values) {
return String(template || '${title} (${year})').replace(/\$\{([^}]+)\}/g, (_, key) => { return String(template || '${title} (${year})').replace(/\$\{([^}]+)\}/g, (_, key) => {
const val = values[key.trim()]; const val = values[key.trim()];
@@ -86,6 +95,7 @@ module.exports = {
ensureDir, ensureDir,
transliterateForFilename, transliterateForFilename,
sanitizeFileName, sanitizeFileName,
sanitizeFileNameWithExtension,
renderTemplate, renderTemplate,
findLargestMediaFile, findLargestMediaFile,
findMediaFiles findMediaFiles
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "ripster-frontend", "name": "ripster-frontend",
"version": "0.12.0-8", "version": "0.12.0-9",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ripster-frontend", "name": "ripster-frontend",
"version": "0.12.0-8", "version": "0.12.0-9",
"dependencies": { "dependencies": {
"primeicons": "^7.0.0", "primeicons": "^7.0.0",
"primereact": "^10.9.2", "primereact": "^10.9.2",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "ripster-frontend", "name": "ripster-frontend",
"version": "0.12.0-8", "version": "0.12.0-9",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
+2 -2
View File
@@ -868,6 +868,8 @@ Description=Ripster Backend API
Documentation=https://github.com/your-repo/ripster Documentation=https://github.com/your-repo/ripster
After=network.target After=network.target
Wants=network-online.target Wants=network-online.target
StartLimitIntervalSec=60
StartLimitBurst=3
[Service] [Service]
Type=simple Type=simple
@@ -877,8 +879,6 @@ WorkingDirectory=${INSTALL_DIR}/backend
ExecStart=$(command -v node) src/index.js ExecStart=$(command -v node) src/index.js
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
StartLimitIntervalSec=60
StartLimitBurst=3
# Umgebung # Umgebung
Environment=NODE_ENV=production Environment=NODE_ENV=production
+2 -2
View File
@@ -664,6 +664,8 @@ cat > /etc/systemd/system/ripster-backend.service <<EOF
Description=Ripster Backend API Description=Ripster Backend API
After=network.target After=network.target
Wants=network-online.target Wants=network-online.target
StartLimitIntervalSec=60
StartLimitBurst=3
[Service] [Service]
Type=simple Type=simple
@@ -673,8 +675,6 @@ WorkingDirectory=${INSTALL_DIR}/backend
ExecStart=$(command -v node) src/index.js ExecStart=$(command -v node) src/index.js
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
StartLimitIntervalSec=60
StartLimitBurst=3
Environment=NODE_ENV=production Environment=NODE_ENV=production
Environment=HOME=${SERVICE_HOME} Environment=HOME=${SERVICE_HOME}
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "ripster", "name": "ripster",
"version": "0.12.0-8", "version": "0.12.0-9",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ripster", "name": "ripster",
"version": "0.12.0-8", "version": "0.12.0-9",
"devDependencies": { "devDependencies": {
"concurrently": "^9.1.2" "concurrently": "^9.1.2"
} }
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "ripster", "name": "ripster",
"private": true, "private": true,
"version": "0.12.0-8", "version": "0.12.0-9",
"scripts": { "scripts": {
"dev": "concurrently \"npm run dev --prefix backend\" \"npm run dev --prefix frontend\"", "dev": "concurrently \"npm run dev --prefix backend\" \"npm run dev --prefix frontend\"",
"dev:backend": "npm run dev --prefix backend", "dev:backend": "npm run dev --prefix backend",