feat: Light mode default, auth, Posts rename, display scaling, TinyMCE improvements

This commit is contained in:
Jess Rogerson
2026-05-21 14:22:46 +10:00
parent 51d086dab9
commit 39fcd9ec6e
154 changed files with 12897 additions and 133 deletions
+3 -3
View File
@@ -4,7 +4,7 @@
<html lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Device Not Found — Sunbeam</title>
<title>Post Not Found — Sunbeam</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" />
<style>
body { background: #0f0f1a; color: #e0e0e0; min-height: 100vh; display: flex; align-items: center; justify-content: center; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; }
@@ -17,9 +17,9 @@
<body>
<div class="container">
<h1>Meow?</h1>
<p class="text-muted mb-4">No kitten found at this address.</p>
<p class="text-muted mb-4">No post found at this address.</p>
@if (Model.Any()) {
<h5 class="mb-3">Available Kittens:</h5>
<h5 class="mb-3">Available Posts:</h5>
<div class="device-list">@foreach (var d in Model) { <a href="/@d.Slug"><strong>@d.Name</strong><br /><code>/@d.Slug</code></a> }</div>
} else { <p>No devices configured yet.</p> }
<p class="mt-4"><a href="/admin" class="btn btn-outline-light btn-sm">Go to Admin</a></p>
+14 -7
View File
@@ -7,18 +7,25 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=@(Model.ResolutionWidth), height=@(Model.ResolutionHeight), initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>@Model.Name — Sunbeam Display</title>
<link href="/css/display.css" rel="stylesheet" />
<style>:root { --display-width: @(Model.ResolutionWidth)px; --display-height: @(Model.ResolutionHeight)px; }</style>
<style>
:root {
--display-width: @(Model.ResolutionWidth)px;
--display-height: @(Model.ResolutionHeight)px;
}
</style>
</head>
<body data-slug="@Model.Slug" data-transition="@Model.Transition">
<div id="display-container">
<div id="slide-a" class="slide-layer active"></div>
<div id="slide-b" class="slide-layer"></div>
<body data-slug="@Model.Slug" data-transition="@Model.Transition" data-width="@Model.ResolutionWidth" data-height="@Model.ResolutionHeight">
<div id="scale-wrapper">
<div id="display-container">
<div id="slide-a" class="slide-layer active"></div>
<div id="slide-b" class="slide-layer"></div>
</div>
<div id="clock-overlay"><span id="clock-time"></span><span id="clock-date"></span></div>
</div>
<div id="progress-bar"><div id="progress-fill"></div></div>
<div id="clock-overlay"><span id="clock-time"></span><span id="clock-date"></span></div>
<div id="status-dot" title="Connected"></div>
<script>
var playlistData = @Html.Raw(System.Text.Json.JsonSerializer.Serialize(slides.Select(ds => new {