diff --git a/scripts/ralph/prd.json b/scripts/ralph/prd.json index 8b3f00d..67fcffc 100644 --- a/scripts/ralph/prd.json +++ b/scripts/ralph/prd.json @@ -229,8 +229,8 @@ "MobileBottomNav adăugat", "npm run build passes" ], - "passes": false, - "notes": "" + "passes": true, + "notes": "Completed in iteration 14" }, { "id": "US-111", diff --git a/scripts/ralph/progress.txt b/scripts/ralph/progress.txt index 875b58d..ff94ae4 100644 --- a/scripts/ralph/progress.txt +++ b/scripts/ralph/progress.txt @@ -84,3 +84,9 @@ Mon Jan 12 09:44:54 AM UTC 2026 [2026-01-12 10:13:35] Working on story: US-109 [2026-01-12 10:13:35] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_13_US-109.log) [2026-01-12 10:16:15] SUCCESS: Story US-109 passed! +[2026-01-12 10:16:15] Changes committed +[2026-01-12 10:16:15] Progress: 12/20 stories completed +[2026-01-12 10:16:17] === Iteration 14/100 === +[2026-01-12 10:16:17] Working on story: US-110 +[2026-01-12 10:16:17] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_14_US-110.log) +[2026-01-12 10:19:03] SUCCESS: Story US-110 passed! diff --git a/src/modules/reports/views/ServerLogsView.vue b/src/modules/reports/views/ServerLogsView.vue index bb8743f..5b97c04 100644 --- a/src/modules/reports/views/ServerLogsView.vue +++ b/src/modules/reports/views/ServerLogsView.vue @@ -1,6 +1,44 @@ + + + @@ -356,7 +496,117 @@ onUnmounted(() => { background: transparent; } -/* Responsive */ +/* ================================================ + US-110: Mobile Layout Styles + ================================================ */ + +.mobile-layout { + padding: 0; + padding-top: 56px; /* MobileTopBar height */ + padding-bottom: 56px; /* MobileBottomNav height */ +} + +.mobile-layout .logs-card { + margin: var(--space-sm); + margin-top: var(--space-xs); +} + +.mobile-layout .logs-container { + max-height: calc(100vh - 280px); +} + +/* Mobile controls bar */ +.mobile-controls-bar { + display: flex; + gap: var(--space-sm); + padding: var(--space-sm); + background: var(--surface-card); + border-bottom: 1px solid var(--surface-border); + align-items: center; +} + +.mobile-log-select { + flex: 1; + min-width: 0; +} + +.mobile-lines-select { + width: 100px; +} + +.mobile-auto-btn { + flex-shrink: 0; +} + +/* Mobile sidebar styles */ +.mobile-sidebar .sidebar-header { + padding: var(--space-md); + border-bottom: 1px solid var(--surface-border); +} + +.mobile-sidebar .sidebar-title { + font-size: var(--text-lg); + font-weight: var(--font-bold); + color: var(--color-primary); +} + +.mobile-sidebar .sidebar-menu { + padding: var(--space-sm) 0; +} + +.mobile-sidebar .sidebar-item { + display: flex; + align-items: center; + gap: var(--space-md); + padding: var(--space-md) var(--space-lg); + color: var(--text-color); + text-decoration: none; + transition: background-color var(--transition-fast); +} + +.mobile-sidebar .sidebar-item:hover, +.mobile-sidebar .sidebar-item:active { + background: var(--surface-hover); +} + +.mobile-sidebar .sidebar-item.active { + background: var(--blue-50); + color: var(--color-primary); +} + +.mobile-sidebar .sidebar-item i { + font-size: var(--text-xl); + width: 24px; + text-align: center; +} + +/* ================================================ + Dark Mode Support for Mobile + ================================================ */ + +[data-theme="dark"] .mobile-controls-bar { + background: var(--surface-card); + border-bottom-color: var(--surface-border); +} + +[data-theme="dark"] .mobile-sidebar .sidebar-item.active { + background: var(--blue-900); + color: var(--blue-400); +} + +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .mobile-controls-bar { + background: var(--surface-card); + border-bottom-color: var(--surface-border); + } + + :root:not([data-theme]) .mobile-sidebar .sidebar-item.active { + background: var(--blue-900); + color: var(--blue-400); + } +} + +/* Responsive - Desktop */ @media (max-width: 768px) { .stats-header { flex-direction: column;