Panel — public source drop (v0.9.0)

Self-hostable game-server control panel: controller + agent + 26 game
modules. One-line install (prebuilt release, no Go required):

  curl -fsSL https://git.pdxtechs.com/dbledeez/panel/raw/branch/main/install.sh | sudo bash

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 21:17:39 -07:00
commit a00bd620a1
2160 changed files with 300574 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
// Command module-meta-dump loads ./modules via the same loader the
// controller uses (module.LoadDir) and prints the WI-07 UI-metadata
// enrichment as JSON — used by controller/.test/wi07-diff-maps.mjs to
// prove the manifest-derived values match the dashboard's old inline
// maps. Run from the repo root: go run ./tools/module-meta-dump
package main
import (
"encoding/json"
"fmt"
"os"
module "github.com/dbledeez/panel/pkg/module"
)
type meta struct {
ID string `json:"id"`
Ports []module.Port `json:"ports,omitempty"`
BrowseableRoots []module.BrowseableRoot `json:"browseable_roots,omitempty"`
ReadyPattern string `json:"ready_pattern,omitempty"`
Appearance *module.Appearance `json:"appearance,omitempty"`
}
func main() {
dir := "./modules"
if len(os.Args) > 1 {
dir = os.Args[1]
}
ms, err := module.LoadDir(dir)
if err != nil {
fmt.Fprintln(os.Stderr, "load:", err)
os.Exit(1)
}
out := map[string]meta{}
for _, m := range ms {
e := meta{ID: m.ID, Ports: m.Ports, ReadyPattern: m.ReadyPattern, Appearance: m.Appearance}
if m.Runtime.Docker != nil {
e.BrowseableRoots = m.Runtime.Docker.BrowseableRoots
}
out[m.ID] = e
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
enc.Encode(out)
}