diff --git a/ui/src/App.jsx b/ui/src/App.jsx
index 0aa83ee..9ce75cd 100644
--- a/ui/src/App.jsx
+++ b/ui/src/App.jsx
@@ -5,6 +5,22 @@ import { StackPresetToolbar } from "./components/StackPresetToolbar";
import { StatusPanels } from "./components/StatusPanels";
import { useRuntimeState } from "./hooks/useRuntimeState";
+function AppFooter() {
+ return (
+
+ );
+}
+
function App() {
const [appState, setAppState] = useRuntimeState();
const [pendingShaderId, setPendingShaderId] = useState("");
@@ -53,6 +69,7 @@ function App() {
+
);
}
@@ -114,6 +131,8 @@ function App() {
setPendingShaderId={setPendingShaderId}
shaders={shaders}
/>
+
+
);
}
diff --git a/ui/src/styles.css b/ui/src/styles.css
index de6f3b6..b1c807a 100644
--- a/ui/src/styles.css
+++ b/ui/src/styles.css
@@ -426,6 +426,29 @@ pre {
background: var(--app-error-soft);
}
+.app-footer {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ gap: 0.4rem;
+ padding: 0.25rem 0 0.5rem;
+ color: var(--app-muted);
+ font-size: 0.82rem;
+ text-align: center;
+}
+
+.app-footer a {
+ color: #b9def1;
+ text-decoration: none;
+}
+
+.app-footer a:hover,
+.app-footer a:focus-visible {
+ color: #e7f6ff;
+ text-decoration: underline;
+}
+
.progress-track {
height: 0.5rem;
overflow: hidden;