diff --git a/CHANGELOG.md b/CHANGELOG.md index 8db5b2a..199603e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## 2.15.6 - 2026-10-18 + +### Changed + +- Media Library renaming now keeps the file extension fixed while allowing the filename to be edited. + ## 2.15.5 - 2026-10-17 ### Added diff --git a/build/package.player.json b/build/package.player.json index fffda15..52eab05 100644 --- a/build/package.player.json +++ b/build/package.player.json @@ -1,6 +1,6 @@ { "name": "pulse-signage-player", - "version": "2.15.5", + "version": "2.15.6", "private": false, "description": "Pulse Signage player application bundle", "engines": { diff --git a/build/package.web.json b/build/package.web.json index 4960165..b265ec4 100644 --- a/build/package.web.json +++ b/build/package.web.json @@ -1,6 +1,6 @@ { "name": "pulse-signage-web", - "version": "2.15.5", + "version": "2.15.6", "private": false, "description": "Pulse Signage web and bridge application bundle", "engines": { diff --git a/package-lock.json b/package-lock.json index 42cb27d..8fcab28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pulse-signage", - "version": "2.15.5", + "version": "2.15.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pulse-signage", - "version": "2.15.5", + "version": "2.15.6", "dependencies": { "@sparticuz/chromium": "^149.0.0", "animate.css": "^4.1.1", diff --git a/package.json b/package.json index b2eadeb..31024dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pulse-signage", - "version": "2.15.5", + "version": "2.15.6", "private": false, "description": "Pulse Signage application with MySQL and media storage", "engines": { diff --git a/src/web/public/js/settings/media-library.js b/src/web/public/js/settings/media-library.js index 54d6faf..c246a9c 100644 --- a/src/web/public/js/settings/media-library.js +++ b/src/web/public/js/settings/media-library.js @@ -556,9 +556,11 @@ function showPreviewModal() { if (modal && body) { const renameForm = modal.querySelector('[data-media-gallery-rename-form]'); const filenameInput = modal.querySelector('[data-media-gallery-filename]'); + const extensionLabel = modal.querySelector('[data-media-gallery-extension]'); const renameSave = modal.querySelector('[data-media-gallery-rename-save]'); const renameStatus = modal.querySelector('[data-media-gallery-rename-status]'); let activePreview = null; + let activeExtension = ''; if (renameForm && filenameInput && renameSave && renameStatus) { renameForm.addEventListener('submit', async function (event) { @@ -573,7 +575,7 @@ if (modal && body) { const response = await fetch(action, { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, - body: JSON.stringify({ name: filenameInput.value }) + body: JSON.stringify({ name: filenameInput.value + activeExtension }) }); const result = await response.json(); if (!response.ok) throw new Error(result.error || 'Unable to rename media.'); @@ -586,7 +588,7 @@ if (modal && body) { label.title = result.name; } if (activePreview === preview) { - filenameInput.value = result.name; + filenameInput.value = activeExtension ? result.name.slice(0, -activeExtension.length) : result.name; if (title) title.textContent = result.name; const image = body.querySelector('img'); if (image) image.alt = result.name; @@ -625,7 +627,11 @@ if (modal && body) { const assetId = column && column.dataset.mediaId; renameForm.hidden = !assetId; renameForm.action = '/media-library/' + encodeURIComponent(assetId || '') + '/rename'; - filenameInput.value = name; + const extensionIndex = name.lastIndexOf('.'); + activeExtension = extensionIndex > 0 && extensionIndex < name.length - 1 ? name.slice(extensionIndex) : ''; + filenameInput.value = activeExtension ? name.slice(0, extensionIndex) : name; + filenameInput.maxLength = Math.max(1, 255 - activeExtension.length); + if (extensionLabel) extensionLabel.textContent = activeExtension; filenameInput.disabled = false; renameSave.disabled = false; renameStatus.hidden = true; diff --git a/src/web/views/settings/media-library/list.hbs b/src/web/views/settings/media-library/list.hbs index c79cf4a..18fb5a5 100644 --- a/src/web/views/settings/media-library/list.hbs +++ b/src/web/views/settings/media-library/list.hbs @@ -100,6 +100,7 @@