16 Commits
Author SHA1 Message Date
alu 2a6641f03c update to go 1.27 2026-08-25 18:54:20 +00:00
alu a5b20519d4 minor comment cleanup
tronnet/workflows: Static Analysis -- Golang / static-go (push) Successful in 20s
2026-08-19 23:47:17 +00:00
alu e000a90456 update common lib 2026-08-19 21:12:22 +00:00
alu b5c8576ab5 update go 1.26.6 2026-08-17 19:48:16 +00:00
alu e2039a15b1 minor style fix
tronnet/workflows: Code Style -- Web Components / style-web (push) Successful in 14s
2026-08-11 22:59:46 +00:00
alu 492ae56d48 Update README.md 2026-08-10 21:38:50 +00:00
alu 033017864e Merge pull request 'Dashboard v2.0.0' (#5) from v2.0.0 into main
tronnet/workflows: Static Analysis -- Golang / static-go (push) Successful in 44s
tronnet/workflows: Code Style -- Web Components / style-web (push) Failing after 16s
Reviewed-on: #5
2026-08-10 21:10:15 +00:00
alu cbed40d904 fix makefile phony targets 2026-08-03 18:24:18 +00:00
alu 075ea07766 add ingore paths for web component linters 2026-07-31 23:59:07 +00:00
alu 91be26e320 update gitignore, format eslint config 2026-07-31 23:30:32 +00:00
alu ff63d8dc15 prevent error dialog from clearing on closing
tronnet/workflows: Code Style -- Web Components / style-web (push) Failing after 19s
2026-07-31 23:21:09 +00:00
alu ffa58e4218 use replace for web instead of static import
tronnet/workflows: Static Analysis -- Golang / static-go (push) Successful in 25s
2026-07-30 19:04:25 +00:00
alu 613f01456f use central repo for common workflows
tronnet/workflows: Static Analysis -- Golang / lint-check (push) Successful in 13s
tronnet/workflows: Code Style -- Web Components / lint-check (push) Failing after 15s
2026-07-29 23:40:43 +00:00
alu e8fd120ead add static analysis action
Static Analysis -- Golang / lint-check (push) Successful in 18s
Code Style -- Web Components / lint-check (push) Successful in 13s
2026-07-29 22:42:33 +00:00
alu ce1576fbd6 remove global usage for wasm
ProxmoxAAS-Dashboard Code Style Check / lint-check (push) Successful in 16s
2026-07-29 16:13:55 +00:00
alu 0caf27eb7d fix missing autocomplete attributes
ProxmoxAAS-Dashboard Code Style Check / lint-check (push) Failing after 14s
2026-07-29 03:36:59 +00:00
20 changed files with 93 additions and 136 deletions
-69
View File
@@ -1,69 +0,0 @@
name: ProxmoxAAS-Dashboard Code Style Check
run-name: Code style check on ${{ gitea.repository }} ${{ gitea.ref_name }} ${{ gitea.sha }}
on:
push:
branches:
- "*"
jobs:
lint-check:
runs-on: ubuntu-latest
steps:
- name: Check Out Repository
uses: actions/checkout@v4
- name: Initialize Runner
uses: actions/setup-node@v4
- name: Install Linters
run: |
npm install --no-save \
@eslint/eslintrc \
@eslint/js \
eslint \
globals \
html-validate \
stylelint \
stylelint-config-standard
- name: Verify Linters
run: |
npx html-validate --version
npx stylelint --version
npx eslint --version
- name: Run HTMLValidate
id: html_lint
run: npx html-validate --config dev_config/.htmlvalidate.json "web/html/**/*"
- name: Run Stylelint
id: style_lint
if: always()
run: npx stylelint --config dev_config/.stylelintrc.json --formatter verbose --fix "web/css/**/*.css"
- name: Run ESLint
id: js_lint
if: always()
env:
DEBUG: eslint:cli-engine
run: npx eslint --config dev_config/eslint.config.mjs --fix web/scripts/
- name: Verify Linters
if: always()
run: |
FAILED=0
if [ "${{ steps.html_lint.outcome }}" != "success" ]; then
echo "HTML Linter failed"
FAILED=1
fi
if [ "${{ steps.style_lint.outcome }}" != "success" ]; then
echo "Style Linter failed"
FAILED=1
fi
if [ "${{ steps.js_lint.outcome }}" != "success" ]; then
echo "JS Linter failed"
FAILED=1
fi
if [ $FAILED -eq 1 ]; then
exit 1
fi
-2
View File
@@ -1,5 +1,3 @@
**/config.json
**/package-lock.json
**/node_modules
dist/*
go.sum
+12 -5
View File
@@ -1,13 +1,14 @@
.PHONY: build test clean wfa-js
.PHONY: build build-web build-wfa-js clean clean-wfa-js ensure-dist workflow-init
build: clean build-wfa-js
build: clean ensure-dist build-web build-wfa-js
@echo "======================== Building Binary ======================="
mkdir -p dist
# resolve symbolic links in web by copying it into dist/web/
cp -rL web/ dist/web/
CGO_ENABLED=0 go build -tags release -ldflags="-s -w" -v -o dist/ .
build-wfa-js:
build-web: ensure-dist
cp -rL web/ dist/web/
build-wfa-js: ensure-dist
$(MAKE) -C WFA-JS
cp -f WFA-JS/dist/* web/modules
@@ -18,3 +19,9 @@ clean: clean-wfa-js
clean-wfa-js:
$(MAKE) clean -C WFA-JS
ensure-dist:
mkdir -p dist
workflow-init: ensure-dist build-web
cp -r dev_config/. .
+1 -1
View File
@@ -13,7 +13,7 @@ ProxmoxAAS Dashboard provides users of a proxmox based compute on demand service
## ProxmoxAAS System Installation Overview
The ProxmoxAAS project is large and is split into multiple components. There are four required components, the Dashboard, API, Fabric, and access-manager-api. The instalation order should start with the Dashboard and then proceed to the other backend components. This will require some foresight into the setup process.
The ProxmoxAAS project is large and is split into multiple components. There are four required components, the Dashboard, API, Fabric, and access-manager-api. The installation order should start with the Dashboard and then proceed to the other backend components. This will require some foresight into the setup process.
The supported setup is to use a reverse proxy to serve both the original Proxmox web interface and ProxmoxAAS components. It is possible other setups can work. Rather than provide specific steps to duplicate a certain setup, the steps included are intended as a guideline of steps required for proper function in most setups. Consequently, the examples provided are only to highlight key settings and do not represent complete working configurations. The instructions also assume you have your own domain name which will substitute `domain.net` in some of the configs.
+1 -1
Submodule WFA-JS updated: f8f8636cc3...f53f344fb3
+4 -2
View File
@@ -6,7 +6,7 @@ import (
"log"
"proxmoxaas-dashboard/app/common"
"proxmoxaas-dashboard/app/routes"
"proxmoxaas-dashboard/dist/web" // go will complain here until the first build
"web" // go will complain here until the first build
"github.com/gin-gonic/gin"
"github.com/tdewolff/minify/v2"
@@ -18,9 +18,11 @@ func Run() {
common.Global = common.GetConfig(*configPath)
// setup static resources
// setup gin
gin.SetMode(gin.ReleaseMode)
router := gin.Default()
// setup static resources
m := common.InitMinify()
ServeStatic(router, m)
html := common.MinifyStatic(m, web.Templates)
+3
View File
@@ -0,0 +1,3 @@
web/modules/*
WFA-JS/*
dist/*
+3
View File
@@ -0,0 +1,3 @@
web/modules/*
WFA-JS/*
dist/*
+7 -3
View File
@@ -1,8 +1,11 @@
import { defineConfig } from "eslint/config";
import { defineConfig, globalIgnores } from "eslint/config";
import globals from "globals";
import js from "@eslint/js";
export default defineConfig([js.configs.recommended,{
export default defineConfig([
js.configs.recommended,
globalIgnores(["dist/", "web/modules", "WFA-JS"]),
{
languageOptions: {
globals: {
...globals.browser,
@@ -26,4 +29,5 @@ export default defineConfig([js.configs.recommended,{
}],
"prefer-const": ["error"]
},
}]);
}
]);
+18 -15
View File
@@ -1,23 +1,26 @@
module proxmoxaas-dashboard
go 1.26.5
go 1.27.0
require (
github.com/gerow/go-color v0.0.0-20140219113758-125d37f527f1
github.com/gin-gonic/gin v1.12.0
github.com/go-viper/mapstructure/v2 v2.5.0
github.com/tdewolff/minify/v2 v2.24.13
github.com/tdewolff/minify/v2 v2.24.17
proxmoxaas-common-lib v0.0.0
web v0.0.0
)
replace proxmoxaas-common-lib => ./proxmoxaas-common-lib
replace web => ./dist/web
require (
github.com/bytedance/gopkg v0.1.4 // indirect
github.com/bytedance/sonic v1.15.2 // indirect
github.com/bytedance/sonic/loader v0.5.1 // indirect
github.com/bytedance/sonic/loader v0.5.2 // indirect
github.com/cloudwego/base64x v0.1.7 // indirect
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
github.com/gabriel-vasile/mimetype v1.4.15 // indirect
github.com/gin-contrib/sse v1.1.1 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
@@ -26,21 +29,21 @@ require (
github.com/goccy/go-yaml v1.19.2 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.4.0 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mattn/go-isatty v0.0.23 // indirect
github.com/leodido/go-urn v1.5.0 // indirect
github.com/mattn/go-isatty v0.0.24 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.4.3 // indirect
github.com/quic-go/qpack v0.6.0 // indirect
github.com/quic-go/quic-go v0.60.0 // indirect
github.com/tdewolff/parse/v2 v2.8.13 // indirect
github.com/quic-go/quic-go v0.61.0 // indirect
github.com/tdewolff/parse/v2 v2.8.16 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.3.1 // indirect
go.mongodb.org/mongo-driver/v2 v2.8.0 // indirect
golang.org/x/arch v0.29.0 // indirect
golang.org/x/crypto v0.54.0 // indirect
golang.org/x/net v0.57.0 // indirect
github.com/ugorji/go/codec v1.3.2 // indirect
go.mongodb.org/mongo-driver/v2 v2.8.1 // indirect
golang.org/x/arch v0.30.0 // indirect
golang.org/x/crypto v0.55.0 // indirect
golang.org/x/net v0.58.0 // indirect
golang.org/x/sys v0.47.0 // indirect
golang.org/x/text v0.40.0 // indirect
google.golang.org/protobuf v1.36.11 // indirect
golang.org/x/text v0.41.0 // indirect
google.golang.org/protobuf v1.36.12 // indirect
)
+3 -3
View File
@@ -191,18 +191,18 @@ hr {
}
/* add hide large class similar to w3-hide-medium and w3-hide-small */
@media screen and (width >=993px) {
@media screen and (width >= 993px) {
.hide-large {display: none !important;}
}
/* fixes edge case in w3-hide-medium where width between 992 and 993 */
@media screen and (width <=993px) and (width >=601px){
@media screen and (width <= 993px) and (width >= 601px){
.hide-large {display: none !important;}
.hide-medium {display:none !important}
}
/* fixes edge case in w3-hide-small when width between 600 and 601 */
@media screen and (width <=601px) {
@media screen and (width <= 601px) and (width >= 440px) {
.hide-large {display: none !important;}
.hide-medium {display:none !important}
.hide-small {display:none !important}
+3
View File
@@ -0,0 +1,3 @@
module web
go 1.26.0
+3 -3
View File
@@ -58,14 +58,14 @@
<div id="body">
<form method="dialog" class="input-grid" style="grid-template-columns: auto 1fr;" id="form">
<label for="new-password">New Password</label>
<input class="w3-input w3-border" id="new-password" name="new-password" type="password" required>
<input class="w3-input w3-border" id="new-password" name="new-password" type="password" autocomplete="new-password" required>
<label for="confirm-password">Confirm Password</label>
<input class="w3-input w3-border" id="confirm-password" name="confirm-password" type="password" required>
<input class="w3-input w3-border" id="confirm-password" name="confirm-password" type="password" autocomplete="new-password" required>
</form>
</div>
<div id="controls" class="w3-center w3-container">
<button id="cancel" type="submit" value="cancel" form="form" class="w3-button w3-margin" formnovalidate>CANCEL</button>
<button id="confirm" type="submit" value="confirm" form="form" class="w3-button w3-margin" >CONFIRM</button>
<button id="confirm" type="submit" value="confirm" form="form" class="w3-button w3-margin">CONFIRM</button>
</div>
</dialog>
</template>
+2 -2
View File
@@ -114,9 +114,9 @@
<label class="container-specific none" for="rootfs-size">ROOTFS Size (GiB)</label>
<input class="w3-input w3-border container-specific none" name="rootfs-size" id="rootfs-size" type="number" min="0" max="131072" required disabled>
<label class="container-specific none" for="password">Password</label>
<input class="w3-input w3-border container-specific none" name="password" id="password" type="password" required disabled>
<input class="w3-input w3-border container-specific none" name="password" id="password" type="password" autocomplete="new-password" required disabled>
<label class="container-specific none" for="confirm-password">Confirm Password</label>
<input class="w3-input w3-border container-specific none" name="confirm-password" id="confirm-password" type="password" required disabled>
<input class="w3-input w3-border container-specific none" name="confirm-password" id="confirm-password" type="password" autocomplete="new-password" required disabled>
</form>
</div>
<div id="controls" class="w3-center w3-container">
+1 -1
View File
@@ -560,7 +560,7 @@ export default function init (path) {
const wasm = obj.instance;
global.wfa = wasm
go.run(wasm);
res()
res(wasm)
}
if ('instantiateStreaming' in WebAssembly) {
WebAssembly.instantiateStreaming(fetch(path), go.importObject).then(function (obj) {
+1 -1
View File
@@ -96,7 +96,7 @@ class ErrorDialog extends HTMLElement {
}
navigator.clipboard.writeText(errors);
}
this.parentElement.removeChild(this);
this.dialog.close();
});
}
+5 -3
View File
@@ -5,10 +5,12 @@ import wfaInit from "../modules/wfa.js";
window.addEventListener("DOMContentLoaded", init);
var wfa;
async function init () {
setAppearance();
wfaInit("modules/wfa.wasm");
wfa = await wfaInit("modules/wfa.wasm");
initInstances();
document.querySelector("#instance-add").addEventListener("click", handleInstanceAddButton);
@@ -272,8 +274,8 @@ function sortInstances () {
};
criteria = (item, query) => {
// lower is better
const { score, CIGAR } = global.wfa.wfAlign(query, item, penalties, true);
const alignment = global.wfa.DecodeCIGAR(CIGAR);
const { score, CIGAR } = wfa.wfAlign(query, item, penalties, true);
const alignment = wfa.DecodeCIGAR(CIGAR);
return { score: score / item.length, alignment };
};
}
+1
View File
@@ -6,6 +6,7 @@ window.addEventListener("DOMContentLoaded", init);
async function init () {
await deleteAllCookies();
setAppearance();
const formSubmitButton = document.querySelector("#submit");
formSubmitButton.addEventListener("click", async (e) => {
e.preventDefault();
+2 -2
View File
@@ -1,4 +1,4 @@
{{/* <head> common across all pages*/}}
{{/* <head> common across all pages */}}
{{define "head"}}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -15,7 +15,7 @@
<link rel="stylesheet" href="css/form.css">
{{end}}
{{/* <header> common across all pages*/}}
{{/* <header> common across all pages */}}
{{define "header"}}
<header>
<h1>{{.global.Organization}}</h1>