diff --git a/dist/backupper-0.1.3-x86_64-1.txz.sha256 b/dist/backupper-0.1.3-x86_64-1.txz.sha256 deleted file mode 100644 index e8c816d..0000000 --- a/dist/backupper-0.1.3-x86_64-1.txz.sha256 +++ /dev/null @@ -1 +0,0 @@ -6ba84716a54fdaaa21f05d840cfedaaaa0a10041d05967dbd7a145842bf87a49 backupper-0.1.3-x86_64-1.txz diff --git a/dist/backupper-0.1.3-x86_64-1.txz b/dist/backupper-0.1.4-x86_64-1.txz similarity index 55% rename from dist/backupper-0.1.3-x86_64-1.txz rename to dist/backupper-0.1.4-x86_64-1.txz index 56114fa..b86d569 100644 Binary files a/dist/backupper-0.1.3-x86_64-1.txz and b/dist/backupper-0.1.4-x86_64-1.txz differ diff --git a/dist/backupper-0.1.4-x86_64-1.txz.sha256 b/dist/backupper-0.1.4-x86_64-1.txz.sha256 new file mode 100644 index 0000000..5de608b --- /dev/null +++ b/dist/backupper-0.1.4-x86_64-1.txz.sha256 @@ -0,0 +1 @@ +6109d2fe2ef3767deab7ffddfb54a32f5e44c02829efe2e65af149ea84ee43c8 backupper-0.1.4-x86_64-1.txz diff --git a/dist/backupper.plg b/dist/backupper.plg index 45b963d..64c9222 100644 --- a/dist/backupper.plg +++ b/dist/backupper.plg @@ -2,13 +2,17 @@ - + - + ]> +### 0.1.4 +- Add Backupper as a first-class top navigation tab. +- Use native Unraid theme colors for reliable contrast. + ### 0.1.3 - Restore the Backupper entry directly under the Unraid Tools menu. diff --git a/plugin/backupper.plg b/plugin/backupper.plg index f9a0ddd..1358b81 100644 --- a/plugin/backupper.plg +++ b/plugin/backupper.plg @@ -2,13 +2,17 @@ - + ]> +### 0.1.4 +- Add Backupper as a first-class top navigation tab. +- Use native Unraid theme colors for reliable contrast. + ### 0.1.3 - Restore the Backupper entry directly under the Unraid Tools menu. diff --git a/webgui/Backupper.page b/webgui/Backupper.page index 91232e9..63db51c 100644 --- a/webgui/Backupper.page +++ b/webgui/Backupper.page @@ -1,13 +1,15 @@ -Menu="Tools" -Title="Backupper" +Menu="Tasks:55" +Name="Backupper" Icon="fa-floppy-o" -Type="php" +Type="xmenu" +Tabs="true" +Code="f0c7" Tag="backup restic snapshots restore" --- - +

Backupper

Encrypted Restic backups for Unraid

@@ -26,4 +28,4 @@ $pluginRoot = '/plugins/backupper';
- + diff --git a/webgui/assets/backupper.css b/webgui/assets/backupper.css index 6675b7d..8e7efd5 100644 --- a/webgui/assets/backupper.css +++ b/webgui/assets/backupper.css @@ -1,16 +1,16 @@ #backupper-app { --bu-page: transparent; - --bu-panel: #ffffff; - --bu-panel-alt: #f3f5f7; - --bu-input: #ffffff; - --bu-border: #b8c0c8; - --bu-border-strong: #68737e; - --bu-text: #1d252c; - --bu-muted: #52606b; - --bu-accent: #e85d24; - --bu-accent-hover: #c94a17; - --bu-good: #087a55; - --bu-bad: #b4232f; + --bu-panel: var(--mild-background-color, #ffffff); + --bu-panel-alt: var(--background-color, #f3f5f7); + --bu-input: var(--input-bg-color, var(--background-color, #ffffff)); + --bu-border: var(--table-border-color, var(--border-color, #87919a)); + --bu-border-strong: var(--border-color, #68737e); + --bu-text: var(--text-color, #1d252c); + --bu-muted: var(--text-color, #52606b); + --bu-accent: var(--brand-orange, var(--orange-500, #ff8c2f)); + --bu-accent-hover: var(--orange-400, #c94a17); + --bu-good: #138a62; + --bu-bad: #c93642; --bu-focus: rgba(232, 93, 36, .25); background: var(--bu-page); color: var(--bu-text) !important; @@ -20,28 +20,9 @@ padding: 10px 18px 40px; } -html.dark #backupper-app, -body.dark #backupper-app, -body.theme-dark #backupper-app, -body.black #backupper-app, -[data-theme="dark"] #backupper-app { - --bu-panel: #1d2228; - --bu-panel-alt: #272e35; - --bu-input: #13181d; - --bu-border: #53606c; - --bu-border-strong: #85919c; - --bu-text: #f5f7f9; - --bu-muted: #bdc6ce; - --bu-accent: #ff8b3d; - --bu-accent-hover: #ff9e5c; - --bu-good: #52d6a1; - --bu-bad: #ff7b85; - --bu-focus: rgba(255, 139, 61, .32); -} - .bu-header { align-items: center; display: flex; justify-content: space-between; margin: 6px 0 22px; } #backupper-app .bu-header h1 { color: var(--bu-text) !important; font-size: 30px; font-weight: 700; line-height: 1.2; margin: 0; } -#backupper-app .bu-header p { color: var(--bu-muted) !important; font-size: 16px; margin: 5px 0 0; } +#backupper-app .bu-header p { color: var(--bu-muted) !important; font-size: 16px; margin: 5px 0 0; opacity: .78; } .bu-health { background: var(--bu-panel); border: 1px solid var(--bu-border); border-radius: 999px; color: var(--bu-text); font-weight: 600; padding: 9px 15px; } .bu-health.ok { color: var(--bu-good); } .bu-health.bad { color: var(--bu-bad); } @@ -54,7 +35,7 @@ body.black #backupper-app, border-bottom: 4px solid transparent !important; border-radius: 0 !important; box-shadow: none !important; - color: var(--bu-muted) !important; + color: var(--bu-text) !important; cursor: pointer; font: inherit; font-size: 14px; @@ -64,17 +45,18 @@ body.black #backupper-app, min-height: 46px; padding: 11px 16px !important; text-shadow: none !important; + opacity: .68; text-transform: none; white-space: nowrap; } -#backupper-app .bu-tabs button:hover { color: var(--bu-text) !important; } -#backupper-app .bu-tabs button.active { border-bottom-color: var(--bu-accent) !important; color: var(--bu-text) !important; } +#backupper-app .bu-tabs button:hover { color: var(--bu-text) !important; opacity: 1; } +#backupper-app .bu-tabs button.active { border-bottom-color: var(--bu-accent) !important; color: var(--bu-text) !important; opacity: 1; } .bu-grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); } .bu-card { background: var(--bu-panel); border: 1px solid var(--bu-border); border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,.12); color: var(--bu-text); padding: 18px; } #backupper-app .bu-card h2, #backupper-app .bu-card h3 { color: var(--bu-text) !important; font-weight: 700; margin-top: 0; } .bu-stat { color: var(--bu-text); font-size: 32px; font-weight: 700; } -#backupper-app .bu-muted { color: var(--bu-muted) !important; } +#backupper-app .bu-muted { color: var(--bu-muted) !important; opacity: .72; } .bu-toolbar { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; justify-content: space-between; margin-bottom: 14px; } .bu-actions { display: flex; flex-wrap: wrap; gap: 7px; } @@ -101,7 +83,7 @@ body.black #backupper-app, .bu-table { border-collapse: collapse; color: var(--bu-text); width: 100%; } .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-muted); font-size: 13px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; } +.bu-table th { color: var(--bu-text); font-size: 13px; font-weight: 700; letter-spacing: .03em; opacity: .76; text-transform: uppercase; } .bu-status { border: 1px solid currentColor; border-radius: 999px; display: inline-block; font-size: 12px; font-weight: 700; padding: 3px 8px; text-transform: uppercase; } .bu-status.success { background: rgba(8,122,85,.10); color: var(--bu-good); } .bu-status.failed, .bu-status.cancelled { background: rgba(180,35,47,.10); color: var(--bu-bad); } @@ -133,7 +115,7 @@ body.black #backupper-app, } #backupper-app .bu-form input[type="checkbox"] { accent-color: var(--bu-accent); min-height: 22px; width: 22px; } #backupper-app .bu-form textarea { min-height: 100px; resize: vertical; } -.bu-empty { color: var(--bu-muted); font-size: 15px; padding: 34px; text-align: center; } +.bu-empty { color: var(--bu-text); font-size: 15px; opacity: .72; padding: 34px; text-align: center; } #bu-toast { background: var(--bu-panel); border: 1px solid var(--bu-border-strong); border-radius: 6px; bottom: 24px; color: var(--bu-text); display: none; font-weight: 600; max-width: 460px; padding: 12px 16px; position: fixed; right: 24px; z-index: 20; } #bu-toast.show { display: block; } #bu-toast.error { border-color: var(--bu-bad); color: var(--bu-bad); }