rebrand: Switchboard Core → Armature

- Rename Go module switchboard-core → armature (155+ files)
- Rename Docker image → gobha/armature
- Rename K8s resources, secrets, deployments
- Rename Prometheus metrics switchboard_* → armature_*
- Rename env vars SWITCHBOARD_ADMIN_* → ARMATURE_ADMIN_*
- Rename DB names switchboard_core* → armature*
- Update all frontend branding, notification templates, docs
- Update CI scripts, e2e tests, Keycloak realm, nginx conf
- Rename scripts/switchboard-ca.sh → scripts/armature-ca.sh
- Rename k8s/switchboard.yaml → k8s/armature.yaml
- Rename chart alerting/dashboard files
- Fix: DockerHub push uses env: binding for secret injection
- Helm chart updated (name, labels, template functions, dashboard, alerting)
- Replace favicon/icon assets with Armature brand

No functional changes. Pure mechanical rename + CI fix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-31 21:39:58 +00:00
parent fb5284f667
commit f0dd43144e
287 changed files with 898 additions and 975 deletions

View File

@@ -15,25 +15,25 @@ import (
"github.com/gin-gonic/gin"
"github.com/prometheus/client_golang/prometheus/promhttp"
"switchboard-core/auth"
"switchboard-core/cluster"
"switchboard-core/config"
"switchboard-core/crypto"
"switchboard-core/database"
"switchboard-core/events"
"switchboard-core/sandbox"
"switchboard-core/handlers"
"switchboard-core/logging"
"switchboard-core/metrics"
"switchboard-core/middleware"
"switchboard-core/notifications"
"switchboard-core/pages"
"switchboard-core/storage"
"switchboard-core/store"
"switchboard-core/triggers"
"switchboard-core/workflow"
postgres "switchboard-core/store/postgres"
sqliteStore "switchboard-core/store/sqlite"
"armature/auth"
"armature/cluster"
"armature/config"
"armature/crypto"
"armature/database"
"armature/events"
"armature/sandbox"
"armature/handlers"
"armature/logging"
"armature/metrics"
"armature/middleware"
"armature/notifications"
"armature/pages"
"armature/storage"
"armature/store"
"armature/triggers"
"armature/workflow"
postgres "armature/store/postgres"
sqliteStore "armature/store/sqlite"
)
//
@@ -45,13 +45,13 @@ var swaggerHTML []byte
func main() {
// ── Subcommand dispatch ──────────────────
// Usage: switchboard vault rekey
// Usage: armature vault rekey
if len(os.Args) > 2 && os.Args[1] == "vault" {
runVaultCommand(os.Args[2])
return
}
if len(os.Args) > 1 && os.Args[1] == "version" {
fmt.Println("switchboard", Version)
fmt.Println("armature", Version)
return
}
@@ -262,7 +262,7 @@ func main() {
if stores.GlobalConfig != nil {
if smtpCfg, err := notifications.LoadSMTPConfig(stores.GlobalConfig, keyResolver); err == nil && smtpCfg != nil {
transport := notifications.NewEmailTransport(*smtpCfg)
instanceName := "Switchboard Core"
instanceName := "Armature"
if brandCfg, err := stores.GlobalConfig.Get(context.Background(), "branding"); err == nil {
if name, ok := brandCfg["instance_name"].(string); ok && name != "" {
instanceName = name
@@ -899,7 +899,7 @@ func main() {
if bp == "" {
bp = "/"
}
log.Printf("🔀 Switchboard Core v%s starting on port %s", Version, cfg.Port)
log.Printf("⚙ Armature v%s starting on port %s", Version, cfg.Port)
log.Printf(" Base path: %s", bp)
log.Printf(" Schema: %s", database.SchemaVersion())
if objStore != nil {
@@ -1014,7 +1014,7 @@ func runVaultCommand(subcmd string) {
default:
fmt.Fprintf(os.Stderr, "Unknown vault command: %s\n", subcmd)
fmt.Fprintf(os.Stderr, "Usage: switchboard vault <rekey|status>\n")
fmt.Fprintf(os.Stderr, "Usage: armature vault <rekey|status>\n")
os.Exit(1)
}
}