diff --git a/.gitignore b/.gitignore index 414c574d..9bae33f5 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,7 @@ e2e_venv/ web-src/tests/e2e/.run/ web-src/playwright-report/ web-src/test-results/ + +# Claude personal context (not shared) +CLAUDE.local.md +.claude/ diff --git a/README.md b/README.md index 8191a2c2..3bd278e4 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,25 @@ ## What's new in this fork +### 2026-06-19 — UI refresh, dark mode and in-app tabs + +A visual refresh of the main app, a dark theme, and the ability to keep several +scripts open at once. + +- **Dark mode**: a light/dark toggle (top-right of the sidebar, admin header, and + login page) that persists in `localStorage` and otherwise follows the OS + `prefers-color-scheme`. The Vuetify theme is injected into the shared theme + helper, so the Vuetify-less login page reuses the same preference without + bundling Vuetify. +- **Refreshed main app**: server badge + persistent full-width search in the + sidebar, folder groups shown as labelled sections, smaller script names, a play + icon on the Execute button, and a GitHub-style dark console for script output. + A modern system-UI font stack replaces the heavier Roboto look. +- **In-app tabs**: opening scripts now adds them to a persistent tab bar so you + can switch between several without leaving the app. Each tab keeps its entered + parameter values, and running executions stay alive when you switch tabs. Open + tabs are persisted to `localStorage`. + ### 2026-06-17 — Code coverage measurement Both test suites now report coverage and upload it to [Codecov](https://codecov.io/gh/knep/script-server) under separate `python` / `frontend` flags. diff --git a/web-src/src/admin/AdminApp.vue b/web-src/src/admin/AdminApp.vue index f18562e1..f29da7b4 100644 --- a/web-src/src/admin/AdminApp.vue +++ b/web-src/src/admin/AdminApp.vue @@ -13,6 +13,7 @@ Logs Scripts +
{{ subheader }}
@@ -22,12 +23,13 @@ diff --git a/web-src/src/common/components/log_panel.vue b/web-src/src/common/components/log_panel.vue index 088d5353..4fd72693 100644 --- a/web-src/src/common/components/log_panel.vue +++ b/web-src/src/common/components/log_panel.vue @@ -1,6 +1,10 @@ @@ -25,6 +30,7 @@ import DocumentTitleManager from './components/DocumentTitleManager'; import FaviconManager from './components/FaviconManager'; import MainAppSidebar from './components/MainAppSidebar'; import MainAppContent from './components/scripts/MainAppContent'; +import ScriptTabs from './components/scripts/ScriptTabs'; import {usePageStore} from '@/main-app/stores/page' import {useAuthStore} from '@/common/stores/auth' import {useServerConfigStore} from '@/main-app/stores/serverConfig' @@ -37,6 +43,7 @@ export default { AppLayout, MainAppSidebar, MainAppContent, + ScriptTabs, AppWelcomePanel, DocumentTitleManager, FaviconManager @@ -69,4 +76,16 @@ export default { h1, h2, h3, h4, h5, h6 { margin: 0; } + +.content-with-tabs { + height: 100%; + display: flex; + flex-direction: column; + min-height: 0; +} + +.content-with-tabs > .tabbed-content { + flex: 1 1 0; + min-height: 0; +} \ No newline at end of file diff --git a/web-src/src/main-app/components/AppWelcomePanel.vue b/web-src/src/main-app/components/AppWelcomePanel.vue index bf21d990..9835a1ba 100644 --- a/web-src/src/main-app/components/AppWelcomePanel.vue +++ b/web-src/src/main-app/components/AppWelcomePanel.vue @@ -56,11 +56,22 @@ export default { overflow: hidden; } +.welcome-panel img { + width: 72px; + height: 72px; + opacity: 0.85; +} + .welcome-text { - margin-top: 15px; + margin-top: 16px; + font-size: 18px; + line-height: 1.5; + color: var(--font-color-main); } .welcome-cookie-text { - margin-top: 8px; + margin-top: 6px; + font-size: 14px; + color: var(--font-color-medium); } \ No newline at end of file diff --git a/web-src/src/main-app/components/FaviconManager.vue b/web-src/src/main-app/components/FaviconManager.vue index 43dcbbdb..8035eac3 100644 --- a/web-src/src/main-app/components/FaviconManager.vue +++ b/web-src/src/main-app/components/FaviconManager.vue @@ -5,6 +5,7 @@ diff --git a/web-src/src/main-app/components/scripts/ScriptListGroup.vue b/web-src/src/main-app/components/scripts/ScriptListGroup.vue index 426bbb7e..fcf0f42e 100644 --- a/web-src/src/main-app/components/scripts/ScriptListGroup.vue +++ b/web-src/src/main-app/components/scripts/ScriptListGroup.vue @@ -1,7 +1,7 @@