From a62d58f11955fe192f45da13e23ba996a2759404 Mon Sep 17 00:00:00 2001 From: jamesread Date: Sun, 3 Aug 2025 22:10:51 +0100 Subject: [PATCH] chore: OliveTin 3k progress --- .gitignore | 9 +- Makefile | 10 +- config.yaml | 3 + {webui.dev => frontend}/.eslintrc.json | 0 frontend/.npmrc | 1 + {webui.dev => frontend}/.stylelintrc.json | 0 frontend/Makefile | 21 + .../OliveTinLogo-120px.png | Bin .../OliveTinLogo-180px.png | Bin {webui.dev => frontend}/OliveTinLogo-57px.png | Bin {webui.dev => frontend}/OliveTinLogo.png | Bin {webui.dev => frontend}/OliveTinLogo.svg | 0 {webui.dev => frontend}/index.html | 99 +- {webui.dev => frontend}/js/ArgumentForm.js | 40 +- .../js/ExecutionFeedbackButton.js | 0 {webui.dev => frontend}/js/Mutex.js | 0 {webui.dev => frontend}/js/OutputTerminal.js | 5 +- {webui.dev => frontend}/js/marshaller.js | 311 +- frontend/js/websocket.js | 50 + .../lib/iconify-icon-2.0.0.min.js | 0 {webui.dev => frontend}/main.js | 101 +- {webui.dev => frontend}/package-lock.json | 4247 ++++++----------- {webui.dev => frontend}/package.json | 11 +- .../gen/olivetin/api/v1/olivetin_pb.d.ts | 1347 ++++++ .../gen/olivetin/api/v1/olivetin_pb.js | 403 ++ frontend/resources/vue/ActionButton.vue | 287 ++ frontend/resources/vue/App.vue | 83 + frontend/resources/vue/ArgumentForm.vue | 432 ++ frontend/resources/vue/Dashboard.vue | 32 + frontend/resources/vue/ExecutionButton.vue | 141 + frontend/resources/vue/ExecutionDialog.vue | 421 ++ .../resources/vue/LoginForm.vue | 46 +- frontend/resources/vue/LogsList.vue | 111 + .../vue/components/ActionStatusDisplay.vue | 63 + frontend/resources/vue/components/Sidebar.vue | 254 + .../vue/components/SidebarExample.vue | 179 + frontend/resources/vue/router.js | 76 + .../resources/vue/views/DashboardRoot.vue | 23 + .../resources/vue/views/DiagnosticsView.vue | 215 + frontend/resources/vue/views/LoginView.vue | 132 + frontend/resources/vue/views/LogsView.vue | 318 ++ frontend/resources/vue/views/NotFoundView.vue | 112 + frontend/style.css | 41 + .../themes/waffles/theme.css | 0 frontend/vite.config.js | 29 + proto/buf.gen.yaml | 13 +- proto/olivetin/api/v1/olivetin.proto | 192 +- .../grpc/olivetin/api/v1/olivetin.pb.gw.go | 1203 ----- .../grpc/olivetin/api/v1/olivetin_grpc.pb.go | 728 --- .../api/v1/apiv1connect/olivetin.connect.go | 631 +++ .../{grpc => }/olivetin/api/v1/olivetin.pb.go | 769 ++- service/go.mod | 1 + service/go.sum | 2 + service/internal/api/api.go | 595 +++ .../grpcApiActions.go => api/apiActions.go} | 73 +- .../grpcApi_test.go => api/api_test.go} | 4 +- .../dashboard_entities.go} | 4 +- .../grpcApiDashboard.go => api/dashboards.go} | 69 +- .../{grpcapi => api}/local_user_login.go | 2 +- service/internal/executor/executor.go | 20 +- service/internal/grpcapi/grpcApi.go | 512 -- service/internal/httpservers/httpServer.go | 11 +- service/internal/httpservers/restapi.go | 95 +- service/internal/httpservers/restapi_auth.go | 20 +- .../internal/httpservers/restapi_auth_jwt.go | 36 +- .../httpservers/restapi_auth_local.go | 9 +- .../httpservers/restapi_auth_oauth2.go | 80 +- .../internal/httpservers/singleFrontend.go | 46 +- service/internal/httpservers/webuiServer.go | 158 +- service/internal/websocket/websocket.go | 2 +- service/main.go | 5 +- service/tools.go | 2 - var/entities/lights.yaml | 6 + var/marketing/OliveTinLogoMonocrome.svg | 92 + var/marketing/mockup-laptop.png | Bin 0 -> 158019 bytes var/marketing/mockup-laptop.xcf | Bin 0 -> 1217468 bytes webui.dev/.parcelrc | 4 - webui.dev/Makefile | 6 - webui.dev/js/ActionButton.js | 174 - webui.dev/js/ActionStatusDisplay.js | 42 - webui.dev/js/ExecutionButton.js | 34 - webui.dev/js/ExecutionDialog.js | 237 - webui.dev/js/NavigationBar.js | 37 - webui.dev/js/websocket.js | 82 - webui.dev/style.css | 782 --- 85 files changed, 8660 insertions(+), 7771 deletions(-) rename {webui.dev => frontend}/.eslintrc.json (100%) create mode 100644 frontend/.npmrc rename {webui.dev => frontend}/.stylelintrc.json (100%) create mode 100644 frontend/Makefile rename {webui.dev => frontend}/OliveTinLogo-120px.png (100%) rename {webui.dev => frontend}/OliveTinLogo-180px.png (100%) rename {webui.dev => frontend}/OliveTinLogo-57px.png (100%) rename {webui.dev => frontend}/OliveTinLogo.png (100%) rename {webui.dev => frontend}/OliveTinLogo.svg (100%) rename {webui.dev => frontend}/index.html (54%) rename {webui.dev => frontend}/js/ArgumentForm.js (89%) rename {webui.dev => frontend}/js/ExecutionFeedbackButton.js (100%) rename {webui.dev => frontend}/js/Mutex.js (100%) rename {webui.dev => frontend}/js/OutputTerminal.js (95%) rename {webui.dev => frontend}/js/marshaller.js (59%) create mode 100644 frontend/js/websocket.js rename {webui.dev => frontend}/lib/iconify-icon-2.0.0.min.js (100%) rename {webui.dev => frontend}/main.js (68%) rename {webui.dev => frontend}/package-lock.json (64%) rename {webui.dev => frontend}/package.json (75%) create mode 100644 frontend/resources/scripts/gen/olivetin/api/v1/olivetin_pb.d.ts create mode 100644 frontend/resources/scripts/gen/olivetin/api/v1/olivetin_pb.js create mode 100644 frontend/resources/vue/ActionButton.vue create mode 100644 frontend/resources/vue/App.vue create mode 100644 frontend/resources/vue/ArgumentForm.vue create mode 100644 frontend/resources/vue/Dashboard.vue create mode 100644 frontend/resources/vue/ExecutionButton.vue create mode 100644 frontend/resources/vue/ExecutionDialog.vue rename webui.dev/js/LoginForm.js => frontend/resources/vue/LoginForm.vue (66%) create mode 100644 frontend/resources/vue/LogsList.vue create mode 100644 frontend/resources/vue/components/ActionStatusDisplay.vue create mode 100644 frontend/resources/vue/components/Sidebar.vue create mode 100644 frontend/resources/vue/components/SidebarExample.vue create mode 100644 frontend/resources/vue/router.js create mode 100644 frontend/resources/vue/views/DashboardRoot.vue create mode 100644 frontend/resources/vue/views/DiagnosticsView.vue create mode 100644 frontend/resources/vue/views/LoginView.vue create mode 100644 frontend/resources/vue/views/LogsView.vue create mode 100644 frontend/resources/vue/views/NotFoundView.vue create mode 100644 frontend/style.css rename {webui.dev => frontend}/themes/waffles/theme.css (100%) create mode 100644 frontend/vite.config.js delete mode 100644 service/gen/grpc/olivetin/api/v1/olivetin.pb.gw.go delete mode 100644 service/gen/grpc/olivetin/api/v1/olivetin_grpc.pb.go create mode 100644 service/gen/olivetin/api/v1/apiv1connect/olivetin.connect.go rename service/gen/{grpc => }/olivetin/api/v1/olivetin.pb.go (83%) create mode 100644 service/internal/api/api.go rename service/internal/{grpcapi/grpcApiActions.go => api/apiActions.go} (71%) rename service/internal/{grpcapi/grpcApi_test.go => api/api_test.go} (96%) rename service/internal/{grpcapi/grpcApiDashboardEntities.go => api/dashboard_entities.go} (96%) rename service/internal/{grpcapi/grpcApiDashboard.go => api/dashboards.go} (61%) rename service/internal/{grpcapi => api}/local_user_login.go (98%) delete mode 100644 service/internal/grpcapi/grpcApi.go create mode 100644 var/entities/lights.yaml create mode 100644 var/marketing/OliveTinLogoMonocrome.svg create mode 100644 var/marketing/mockup-laptop.png create mode 100644 var/marketing/mockup-laptop.xcf delete mode 100644 webui.dev/.parcelrc delete mode 100644 webui.dev/Makefile delete mode 100644 webui.dev/js/ActionButton.js delete mode 100644 webui.dev/js/ActionStatusDisplay.js delete mode 100644 webui.dev/js/ExecutionButton.js delete mode 100644 webui.dev/js/ExecutionDialog.js delete mode 100644 webui.dev/js/NavigationBar.js delete mode 100644 webui.dev/js/websocket.js delete mode 100644 webui.dev/style.css diff --git a/.gitignore b/.gitignore index 28a54b5..853fe5d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,11 +4,12 @@ service/OliveTin service/OliveTin.armhf service/OliveTin.exe service/reports +service/gen releases/ dist/ installation-id.txt tmp/ -webui/ -webui.dev/node_modules -webui.dev/.parcel-cache -custom-webui +frontend/dist/ +frontend/node_modules +custom-frontend +integration-tests/screenshots/ diff --git a/Makefile b/Makefile index c6c988d..e9fe088 100644 --- a/Makefile +++ b/Makefile @@ -47,16 +47,8 @@ devrun: compile devcontainer: compile podman-image podman-container -webui-codestyle: - $(MAKE) -wC webui.dev codestyle - webui-dist: - $(call delete-files,webui) - $(call delete-files,webui.dev/dist) - cd webui.dev && npm install - cd webui.dev && npx parcel build --public-url "." - python -c "import shutil;shutil.move('webui.dev/dist', 'webui')" - python -c "import shutil;import glob;[shutil.copy(f, 'webui') for f in glob.glob('webui.dev/*.png')]" + $(MAKE) -wC frontend dist clean: $(call delete-files,dist) diff --git a/config.yaml b/config.yaml index 3c739c1..a73b402 100644 --- a/config.yaml +++ b/config.yaml @@ -11,6 +11,9 @@ logLevel: "INFO" # Checking for updates https://docs.olivetin.app/reference/updateChecks.html checkForUpdates: false +authLocalUsers: + enabled: true + # Actions are commands that are executed by OliveTin, and normally show up as # buttons on the WebUI. # diff --git a/webui.dev/.eslintrc.json b/frontend/.eslintrc.json similarity index 100% rename from webui.dev/.eslintrc.json rename to frontend/.eslintrc.json diff --git a/frontend/.npmrc b/frontend/.npmrc new file mode 100644 index 0000000..b215581 --- /dev/null +++ b/frontend/.npmrc @@ -0,0 +1 @@ +fund=false diff --git a/webui.dev/.stylelintrc.json b/frontend/.stylelintrc.json similarity index 100% rename from webui.dev/.stylelintrc.json rename to frontend/.stylelintrc.json diff --git a/frontend/Makefile b/frontend/Makefile new file mode 100644 index 0000000..dea9f4f --- /dev/null +++ b/frontend/Makefile @@ -0,0 +1,21 @@ +define delete-files + python -c "import shutil;shutil.rmtree('$(1)', ignore_errors=True)" +endef + +codestyle: + npm install + npx eslint --fix main.js js/* + npx stylelint style.css + +clean: + $(call delete-files,dist) + +deps: + npm install + +build: + npx vite build + +dist: deps clean build + +.PHONY: codestyle diff --git a/webui.dev/OliveTinLogo-120px.png b/frontend/OliveTinLogo-120px.png similarity index 100% rename from webui.dev/OliveTinLogo-120px.png rename to frontend/OliveTinLogo-120px.png diff --git a/webui.dev/OliveTinLogo-180px.png b/frontend/OliveTinLogo-180px.png similarity index 100% rename from webui.dev/OliveTinLogo-180px.png rename to frontend/OliveTinLogo-180px.png diff --git a/webui.dev/OliveTinLogo-57px.png b/frontend/OliveTinLogo-57px.png similarity index 100% rename from webui.dev/OliveTinLogo-57px.png rename to frontend/OliveTinLogo-57px.png diff --git a/webui.dev/OliveTinLogo.png b/frontend/OliveTinLogo.png similarity index 100% rename from webui.dev/OliveTinLogo.png rename to frontend/OliveTinLogo.png diff --git a/webui.dev/OliveTinLogo.svg b/frontend/OliveTinLogo.svg similarity index 100% rename from webui.dev/OliveTinLogo.svg rename to frontend/OliveTinLogo.svg diff --git a/webui.dev/index.html b/frontend/index.html similarity index 54% rename from webui.dev/index.html rename to frontend/index.html index 7031e98..d55fb77 100644 --- a/webui.dev/index.html +++ b/frontend/index.html @@ -22,79 +22,11 @@ -
- - -

OliveTin

- - - -
- - -   - -
-
+
- - - - -
- - @@ -175,16 +91,16 @@

Local Login

-