From 4e4dc1001fc8e47298faffd4272442344b4db216 Mon Sep 17 00:00:00 2001 From: Daniel Maksymilian Syrnicki Date: Thu, 16 Apr 2026 12:29:43 +0200 Subject: [PATCH] feat(ui): /settings page + nav link on every page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Slice 5 of the on-box UI uplevel. Adds a third page at /settings/ served by Caddy from /srv/furtka/www/settings/index.html. Three groups of content: - About this box (read-only): hostname, IP, Furtka version, kernel, RAM, Docker, uptime — all consumed from status.json via the same 30s refresh loop the landing uses. - Appearance: theme follows prefers-color-scheme, language is English for v1. Shown read-only. - Coming next: linked roadmap chips (Reboot / Shut down / Change hostname / Backup / User accounts / Remote access), each jumping to the planned section on furtka.org. Implementing any of these graduates it in-place. Nav link to Settings also added to the landing page and /apps so the three pages share one persistent navigation (Jakob's Law). Co-Authored-By: Claude Opus 4.6 (1M context) --- furtka/api.py | 1 + webinstaller/app.py | 92 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/furtka/api.py b/furtka/api.py index e7da027..051d9bc 100644 --- a/furtka/api.py +++ b/furtka/api.py @@ -76,6 +76,7 @@ _HTML = """ diff --git a/webinstaller/app.py b/webinstaller/app.py index 53c9f46..a1d301c 100644 --- a/webinstaller/app.py +++ b/webinstaller/app.py @@ -188,6 +188,7 @@ _INDEX_HTML = """\
@@ -719,6 +720,96 @@ details.log-details[open] > summary { color: var(--fg); } .app-icon svg { width: 36px; height: 36px; } """ +_SETTINGS_HTML = """\ + + + + + Settings · Furtka + + + + +
+ + +

Settings

+

What this box knows about itself.

+ +
+

About this box

+
+
+
Hostname
+
IP address
+
Furtka version
+
Kernel
+
RAM
+
Docker
+
Uptime
+
+
+
+ +
+

Appearance

+
+
+
Theme
Follows your system setting
+
Language
English
+
+
+
+ +
+

Coming next

+
+

Controls we're building — follow progress on furtka.org.

+ Reboot + Shut down + Change hostname + Backup + User accounts + Remote access +
+
+ + +
+ + + + +""" + _STATUS_JSON_PLACEHOLDER = """\ { "hostname": "", @@ -945,6 +1036,7 @@ def _post_install_commands(hostname): return [ _write_file_cmd("/etc/caddy/Caddyfile", _CADDYFILE), _write_file_cmd("/srv/furtka/www/index.html", _INDEX_HTML), + _write_file_cmd("/srv/furtka/www/settings/index.html", _SETTINGS_HTML), _write_file_cmd("/srv/furtka/www/style.css", _STYLE_CSS), _write_file_cmd("/srv/furtka/www/status.json", _STATUS_JSON_PLACEHOLDER), _write_file_cmd("/usr/local/bin/furtka-status", _FURTKA_STATUS_SH, mode="755"),