Files
Kareem Horstink 331de4bc9e
Build Android APK / build (push) Failing after 4m21s
Build Server .exe / build (push) Failing after 2m34s
Add settings page, PIN manager, and auto-config
- New settings page at /settings (localhost-only) accessible via tray icon
- PIN manager with 6-digit codes, 5-min TTL, single-use
- API token uses secrets.token_urlsafe(32) for 256-bit entropy
- Config auto-creates config.yaml on first run with detected local IP
- Default PIN and token generated randomly on first startup
- Added pin_ttl setting (default 300s)
- Updated build_exe.py for onefile exe with settings assets bundled
- Added start.bat and start.sh for easy development startup
2026-07-03 08:21:46 +00:00

118 lines
1.8 KiB
CSS

*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family:
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
background: #1a1a1a;
color: #e0e0e0;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 20px;
}
.container {
background: #2a2a2a;
border-radius: 12px;
padding: 32px;
width: 100%;
max-width: 480px;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
}
h1 {
font-size: 1.5rem;
margin-bottom: 4px;
color: #fff;
}
.subtitle {
font-size: 0.85rem;
color: #888;
margin-bottom: 24px;
}
.field {
margin-bottom: 18px;
}
label {
display: block;
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #aaa;
margin-bottom: 6px;
}
input,
select {
width: 100%;
padding: 10px 12px;
background: #1a1a1a;
border: 1px solid #444;
border-radius: 6px;
color: #e0e0e0;
font-size: 0.95rem;
outline: none;
transition: border-color 0.15s;
}
input:focus,
select:focus {
border-color: #5b9aff;
}
input::placeholder {
color: #555;
}
.hint {
font-size: 0.75rem;
color: #666;
margin-top: 4px;
}
.actions {
display: flex;
gap: 10px;
margin-top: 24px;
}
button {
flex: 1;
padding: 10px 16px;
border: none;
border-radius: 6px;
font-size: 0.9rem;
font-weight: 600;
cursor: pointer;
transition: opacity 0.15s;
}
button:hover {
opacity: 0.85;
}
#save-btn {
background: #5b9aff;
color: #000;
}
#reset-btn {
background: #444;
color: #e0e0e0;
}
.status {
margin-top: 14px;
padding: 10px 12px;
border-radius: 6px;
font-size: 0.85rem;
display: none;
}
.status.success {
display: block;
background: #1a3a1a;
color: #6fcf6f;
border: 1px solid #2a5a2a;
}
.status.error {
display: block;
background: #3a1a1a;
color: #cf6f6f;
border: 1px solid #5a2a2a;
}