Skip to content

Commit 7c918e1

Browse files
author
Datanoise
committed
feat: display version in UI and auto-reload dashboard 5s after hot swap
1 parent f78131b commit 7c918e1

4 files changed

Lines changed: 21 additions & 8 deletions

File tree

main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
)
2222

2323
var (
24+
Version = "dev"
25+
2426
configPath = flag.String("config", "tinyice.json", "Path to configuration file")
2527
bindHost = flag.String("host", "0.0.0.0", "Network interface to bind to")
2628
bindPort = flag.String("port", "", "Network port to bind to (overrides config)")
@@ -150,7 +152,7 @@ func main() {
150152
cfg.AutoUpdate = true
151153
}
152154

153-
srv := server.NewServer(cfg, authLogger)
155+
srv := server.NewServer(cfg, authLogger, Version)
154156

155157
// Start Updater if enabled
156158
if cfg.AutoUpdate {

server/server.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ type Server struct {
7171
StreamerM *relay.StreamerManager
7272
mpdServer *relay.MPDServer
7373
tmpl *template.Template
74+
Version string
7475
httpServers []*http.Server
7576
startTime time.Time
7677
AuthLog *logrus.Logger
@@ -188,7 +189,7 @@ func (p *protocolSniffer) sniff() {
188189
}
189190
}
190191

191-
func NewServer(cfg *config.Config, authLog *logrus.Logger) *Server {
192+
func NewServer(cfg *config.Config, authLog *logrus.Logger, version string) *Server {
192193
tmpl := template.New("base")
193194
tmpl, err := tmpl.ParseFS(templateFS, "templates/*.html")
194195
if err != nil {
@@ -209,6 +210,7 @@ func NewServer(cfg *config.Config, authLog *logrus.Logger) *Server {
209210
WebRTCM: relay.NewWebRTCManager(r),
210211
StreamerM: relay.NewStreamerManager(r, cfg),
211212
tmpl: tmpl,
213+
Version: version,
212214
startTime: time.Now(),
213215
AuthLog: authLog,
214216
sessions: make(map[string]*session),
@@ -1588,6 +1590,7 @@ func (s *Server) handleAdmin(w http.ResponseWriter, r *http.Request) {
15881590
"FallbackMounts": s.Config.FallbackMounts,
15891591
"CSRFToken": csrf,
15901592
"Streamers": s.StreamerM.GetStreamers(),
1593+
"Version": s.Version,
15911594
}
15921595
if err := s.tmpl.ExecuteTemplate(w, "admin.html", data); err != nil {
15931596
if !strings.Contains(err.Error(), "broken pipe") {
@@ -2903,6 +2906,7 @@ func (s *Server) handleAutoDJStudio(w http.ResponseWriter, r *http.Request) {
29032906
"CSRFToken": csrf,
29042907
"Config": s.Config,
29052908
"User": user,
2909+
"Version": s.Version,
29062910
}
29072911

29082912
w.Header().Set("Content-Type", "text/html")

server/templates/admin.html

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,10 @@
120120

121121
<a href="/logout" class="nav-link" style="color: var(--danger); margin-top: 1rem; text-decoration: none;"><i data-lucide="log-out"></i> Sign Out</a>
122122
</div>
123-
<div style="margin-top: auto; padding-top: 2rem;">
124-
<div style="font-size: 0.8rem; color: var(--text-dim); margin-bottom: 1rem;">User: <strong>{{.User.Username}}</strong> <span class="role-badge {{if eq .User.Role "superadmin"}}role-super{{else}}role-admin{{end}}">{{.User.Role}}</span></div>
125-
<div style="font-size: 0.75rem; color: var(--text-dim);">Powered by TinyIce<br>Host: {{.Config.HostName}}</div>
126-
</div>
127-
</aside>
123+
<div style="margin-top: auto; padding-top: 2rem;">
124+
<div style="font-size: 0.8rem; color: var(--text-dim); margin-bottom: 1rem;">User: <strong>{{.User.Username}}</strong> <span class="role-badge {{if eq .User.Role "superadmin"}}role-super{{else}}role-admin{{end}}">{{.User.Role}}</span></div>
125+
<div style="font-size: 0.75rem; color: var(--text-dim);">Powered by <strong>TinyIce {{.Version}}</strong><br>Host: {{.Config.HostName}}</div>
126+
</div> </aside>
128127
<main>
129128
<div id="tab-overview" class="tab-content active">
130129
<h1 class="page-title"><i data-lucide="layout-dashboard"></i> Dashboard</h1>
@@ -789,6 +788,14 @@ <h2>Edit AutoDJ</h2>
789788
text.textContent = 'Success';
790789
lucide.createIcons();
791790

791+
if (url === '/admin/hotswap') {
792+
text.textContent = 'Hot Swap initiated. Reloading in 5s...';
793+
setTimeout(() => {
794+
window.location.reload();
795+
}, 5000);
796+
return; // Don't hide overlay immediately
797+
}
798+
792799
setTimeout(() => {
793800
overlay.style.display = 'none';
794801
if (typeof onSuccess === 'function') onSuccess();

server/templates/autodj_studio.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
<a href="/admin#tab-streamer" class="studio-logo">
133133
<i data-lucide="chevron-left" style="width: 20px; color: var(--text-dim);"></i>
134134
<img src="/assets/logo.png" alt="TinyIce">
135-
<span>STUDIO</span>
135+
<span>STUDIO <span style="font-size: 0.6rem; color: var(--text-dim); margin-left: 0.2rem; font-weight: 400;">{{.Version}}</span></span>
136136
</a>
137137
<div class="mount-badge">{{.Streamer.Mount}}</div>
138138
</div>

0 commit comments

Comments
 (0)