diff --git a/dist/urbm-2026.06.21.r002-x86_64-1.txz.sha256 b/dist/urbm-2026.06.21.r002-x86_64-1.txz.sha256 deleted file mode 100644 index ebd13e3..0000000 --- a/dist/urbm-2026.06.21.r002-x86_64-1.txz.sha256 +++ /dev/null @@ -1 +0,0 @@ -f51b27d4b6bd430c0092014e3b7651f5537965a9daf198895da84fd11e20ed3b urbm-2026.06.21.r002-x86_64-1.txz diff --git a/dist/urbm-2026.06.21.r002-x86_64-1.txz b/dist/urbm-2026.06.21.r003-x86_64-1.txz similarity index 56% rename from dist/urbm-2026.06.21.r002-x86_64-1.txz rename to dist/urbm-2026.06.21.r003-x86_64-1.txz index 8c5ca55..9e0230e 100644 Binary files a/dist/urbm-2026.06.21.r002-x86_64-1.txz and b/dist/urbm-2026.06.21.r003-x86_64-1.txz differ diff --git a/dist/urbm-2026.06.21.r003-x86_64-1.txz.sha256 b/dist/urbm-2026.06.21.r003-x86_64-1.txz.sha256 new file mode 100644 index 0000000..5f86ede --- /dev/null +++ b/dist/urbm-2026.06.21.r003-x86_64-1.txz.sha256 @@ -0,0 +1 @@ +be03acb4a5ea3055e04aeeffc65f231fd3c1b1d4f3595bd53a791e2d0b4880e9 urbm-2026.06.21.r003-x86_64-1.txz diff --git a/dist/urbm.plg b/dist/urbm.plg index 28369d7..f5e2d80 100644 --- a/dist/urbm.plg +++ b/dist/urbm.plg @@ -2,13 +2,17 @@ - + - + ]> +### 2026.06.21.r003 +- Compact long snapshot path lists into wrapped path chips with a remaining-count indicator. +- Prevent snapshot tables from forcing a horizontal page overflow when many source paths exist. + ### 2026.06.21.r002 - Reuse the expandable folder tree for local repository folders, Rsync targets, restore targets, and directory settings. - Preload complete snapshot file listings once and browse them locally in an expandable restore tree. diff --git a/plugin/urbm.plg b/plugin/urbm.plg index f979250..788c5e4 100644 --- a/plugin/urbm.plg +++ b/plugin/urbm.plg @@ -2,13 +2,17 @@ - + ]> +### 2026.06.21.r003 +- Compact long snapshot path lists into wrapped path chips with a remaining-count indicator. +- Prevent snapshot tables from forcing a horizontal page overflow when many source paths exist. + ### 2026.06.21.r002 - Reuse the expandable folder tree for local repository folders, Rsync targets, restore targets, and directory settings. - Preload complete snapshot file listings once and browse them locally in an expandable restore tree. diff --git a/webgui/URBM.page b/webgui/URBM.page index 609d822..41b9310 100644 --- a/webgui/URBM.page +++ b/webgui/URBM.page @@ -9,12 +9,12 @@ Tag="URBM Unraid Restic Backup Manager backup snapshots restore" - +
- -

URBM 2026.06.21.r002

Restic Backup Manager für Unraid

+ +

URBM 2026.06.21.r003

Restic Backup Manager für Unraid

Verbindung wird hergestellt...
@@ -32,4 +32,4 @@ $pluginRoot = '/plugins/urbm';
- + diff --git a/webgui/assets/urbm.css b/webgui/assets/urbm.css index 699e917..ed5f199 100644 --- a/webgui/assets/urbm.css +++ b/webgui/assets/urbm.css @@ -167,6 +167,14 @@ .bu-table th, .bu-table td { border-bottom: 1px solid var(--bu-border); color: var(--bu-text); padding: 12px 8px; text-align: left; vertical-align: top; } .bu-table th { color: var(--bu-text); font-size: 13px; font-weight: 700; letter-spacing: .03em; opacity: .76; text-transform: uppercase; } .bu-table-scroll { max-width: 100%; overflow-x: auto; } +.bu-snapshot-table { table-layout: fixed; } +.bu-snapshot-id { width: 90px; } +.bu-snapshot-time { width: 175px; } +.bu-snapshot-host { width: 130px; } +.bu-snapshot-actions { width: 145px; } +.bu-path-list { display: flex; flex-wrap: wrap; gap: 5px; max-width: 100%; min-width: 0; } +.bu-path-chip, .bu-path-more { background: var(--bu-panel-alt); border: 1px solid var(--bu-border); border-radius: 999px; color: var(--bu-text); display: inline-block; font-size: 12px; line-height: 1.25; max-width: 260px; overflow: hidden; padding: 4px 8px; text-overflow: ellipsis; white-space: nowrap; } +.bu-path-more { color: var(--bu-muted); font-weight: 700; } .bu-runs-table { table-layout: fixed; } .bu-runs-table .bu-run-task { width: 18%; } .bu-runs-table .bu-run-status { width: 9%; } diff --git a/webgui/assets/urbm.js b/webgui/assets/urbm.js index 7e6a44e..70aaa21 100644 --- a/webgui/assets/urbm.js +++ b/webgui/assets/urbm.js @@ -628,8 +628,14 @@ function renderSnapshots() { const options = state.config.repositories.map(r=>``).join(''); - const rows = state.snapshots.map(s=>`${esc(s.short_id||s.id)}${esc(new Date(s.time).toLocaleString())}${esc(s.hostname)}${esc((s.paths||[]).join(', '))}${button('Durchsuchen',`browse:${s.id}`)}`).join(''); - return `

Snapshots

${button('Laden','load-snapshots','primary')}
${rows?`${rows}
SnapshotZeitpunktHostPfade
`:'
Repository auswählen und Snapshots laden.
'}
${state.selectedSnapshot ? renderFileBrowser() : ''}`; + const pathList = paths => { + paths = paths || []; + const visible = paths.slice(0, 4).map(path=>`${esc(path)}`).join(''); + const more = paths.length > 4 ? `+${paths.length-4} weitere` : ''; + return `
${visible}${more || (!paths.length ? 'Keine Pfade' : '')}
`; + }; + const rows = state.snapshots.map(s=>`${esc(s.short_id||s.id)}${esc(new Date(s.time).toLocaleString())}${esc(s.hostname)}${pathList(s.paths)}${button('Durchsuchen',`browse:${s.id}`)}`).join(''); + return `

Snapshots

${button('Laden','load-snapshots','primary')}
${rows?`
${rows}
SnapshotZeitpunktHostPfade
`:'
Repository auswählen und Snapshots laden.
'}
${state.selectedSnapshot ? renderFileBrowser() : ''}`; } function snapshotItemPath(item) {