v0.9.0: Storage paths registry, per-app HDD_PATH resolution, storage management UI
- Fix backup toggles not appearing (read each app's own HDD_PATH from app.yaml) - Storage paths registry in settings.json with auto-discovery from deployed apps - Settings page "Adattárolók" section with disk usage, add/remove/default/schedulable - Deploy page path field as dropdown of registered storage paths - Health check storage monitoring (mount point, disk usage alerts) - Mount-point validation utilities (Linux syscall + cross-platform stubs) - Controller docker-compose mount changed to /mnt:/mnt:rw for multi-storage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1976,6 +1976,85 @@ a.stat-card:hover {
|
||||
border-color: rgba(218, 54, 51, 0.3);
|
||||
}
|
||||
|
||||
/* --- Settings page: Storage paths --- */
|
||||
.storage-paths-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: .75rem;
|
||||
}
|
||||
.storage-path-item {
|
||||
background: var(--bg-secondary);
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 8px;
|
||||
padding: 1rem;
|
||||
}
|
||||
.storage-path-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
gap: 1rem;
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
.storage-path-info {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: .15rem;
|
||||
}
|
||||
.storage-path-label {
|
||||
font-weight: 600;
|
||||
font-size: .95rem;
|
||||
}
|
||||
.storage-path-path {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: .8rem;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.storage-path-badges {
|
||||
display: flex;
|
||||
gap: .35rem;
|
||||
flex-shrink: 0;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.storage-path-details {
|
||||
margin: .5rem 0;
|
||||
}
|
||||
.storage-path-disk {
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
.storage-path-meta {
|
||||
font-size: .8rem;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.storage-path-actions {
|
||||
display: flex;
|
||||
gap: .5rem;
|
||||
margin-top: .75rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.btn-xs {
|
||||
padding: .2rem .5rem;
|
||||
font-size: .75rem;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.btn-danger-outline {
|
||||
background: transparent;
|
||||
border: 1px solid rgba(218, 54, 51, 0.5);
|
||||
color: var(--red);
|
||||
}
|
||||
.btn-danger-outline:hover {
|
||||
background: var(--red-bg);
|
||||
border-color: var(--red);
|
||||
}
|
||||
.storage-add-details {
|
||||
margin-top: .5rem;
|
||||
}
|
||||
.storage-add-details[open] summary {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.storage-add-form {
|
||||
margin-top: .75rem;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
@media(max-width: 768px) {
|
||||
.sidebar { width: 100%; height: auto; position: relative; border-right: none; border-bottom: 1px solid var(--border-color); }
|
||||
|
||||
Reference in New Issue
Block a user