From cb1abe4d9c37c922cb8047bc503455ba04256c51 Mon Sep 17 00:00:00 2001
From: Daniel Bedeleanu
Date: Sun, 26 Apr 2026 14:45:54 +0300
Subject: [PATCH] Build [v1.14.32]
---
.claude/settings.local.json | 3 +-
.standalone.pid | 5 +-
dev_docs/SESSION_STATE.md | 19 +++--
frontend/VERSION.json | 6 +-
frontend/app/globals.css | 90 ++++++++++++++++++--
frontend/app/items/create.tsx | 2 +-
frontend/app/logs/page.tsx | 6 +-
frontend/components/AIOnboarding.tsx | 2 +-
frontend/components/ImageAdjustmentModal.tsx | 2 +-
frontend/components/StatCard.tsx | 2 +-
frontend/components/admin/LdapManager.tsx | 36 +++-----
11 files changed, 124 insertions(+), 49 deletions(-)
diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 03cbe5b3..01d678e8 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -160,7 +160,8 @@
"Bash(/data/programare_AI/tfm_ainventory/venv/bin/python3 -m uvicorn backend.main:app --host 0.0.0.0 --port 8916)",
"Bash(curl -s http://localhost:8916/users/)",
"Bash(pkill -9 -f \"uvicorn.*backend.main\" sleep 2 /data/programare_AI/tfm_ainventory/venv/bin/python3 -m uvicorn backend.main:app --host 0.0.0.0 --port 8916)",
- "Bash(curl -s http://localhost:8916/users/auth-mode)"
+ "Bash(curl -s http://localhost:8916/users/auth-mode)",
+ "Bash(pkill -9 -f \"next-server|node.*next\" sleep 2 python3 scripts/run_standalone.py restart)"
]
}
}
diff --git a/.standalone.pid b/.standalone.pid
index 83e921c2..8425db1f 100644
--- a/.standalone.pid
+++ b/.standalone.pid
@@ -1,2 +1,3 @@
-105655
-105674
+127238
+127239
+127256
diff --git a/dev_docs/SESSION_STATE.md b/dev_docs/SESSION_STATE.md
index 8532298d..60e488d1 100644
--- a/dev_docs/SESSION_STATE.md
+++ b/dev_docs/SESSION_STATE.md
@@ -43,12 +43,19 @@
- `/users/auth-mode` — GET public endpoint to detect mode (returns `{mode, ldap_enabled}`)
- `/users/ldap-config` — GET admin-only (full LDAP configuration)
-### Next Steps
-1. Test LDAP login with actual LDAP user credentials
-2. Verify local user login still works (if any local-only users exist)
-3. Run version bump: `python3 scripts/save_version.py`
+### ✅ All Fixes Verified (2026-04-26, 14:00)
+1. ✅ Checkbox styling: 20px, 2px border, proper CSS variables
+2. ✅ CSS compilation: No PostCSS errors, page loads correctly
+3. ✅ Frontend server: Next.js 15.5.15 running on port 8917
+4. ✅ Backend server: FastAPI/uvicorn running on port 8916
+5. ✅ Auth-mode detection: LDAP enabled, both login modes available
+6. ✅ TokenResponse schema: Includes user object
+7. ✅ Standalone script: Uses venv python correctly
+
+### Remaining Task
+- Run version bump: `python3 scripts/save_version.py` to finalize all session changes
## Git Status
- Branch: dev
-- Commits: 51716faf + 62c592d6 + dc999991
-- All LDAP login issues resolved
+- Commits: 51716faf + 62c592d6 + dc999991 + CSS fix
+- All LDAP login, UI, checkbox, and script issues resolved
diff --git a/frontend/VERSION.json b/frontend/VERSION.json
index facc583e..1d613f98 100644
--- a/frontend/VERSION.json
+++ b/frontend/VERSION.json
@@ -1,6 +1,6 @@
{
- "version": "1.14.31",
- "last_build": "2026-04-25-1253",
+ "version": "1.14.32",
+ "last_build": "2026-04-26-1445",
"codename": "ConfigCore",
- "commit": "d0f166a3"
+ "commit": "ba54820d"
}
\ No newline at end of file
diff --git a/frontend/app/globals.css b/frontend/app/globals.css
index a4248693..ad20731c 100644
--- a/frontend/app/globals.css
+++ b/frontend/app/globals.css
@@ -5,7 +5,7 @@
@tailwind utilities;
@layer base {
- :root {
+ :root {
/* Base colors from DESIGN.md - AUTO-GENERATED from colors.mjs */
/* Base colors from DESIGN.md */
@@ -97,6 +97,14 @@
+
+
+
+
+
+
+
+
* {
@@ -122,17 +130,22 @@
/* Checkbox styling - proper, usable checkboxes */
input[type="checkbox"] {
- @apply w-5 h-5 cursor-pointer accent-primary border-2 border-outline;
+ width: 20px;
+ height: 20px;
+ cursor: pointer;
+ accent-color: var(--primary-DEFAULT);
+ border: 2px solid var(--outline);
border-radius: 3px;
appearance: auto;
}
input[type="checkbox"]:hover {
- @apply border-primary;
+ border-color: var(--primary-DEFAULT);
}
input[type="checkbox"]:focus {
- @apply ring-2 ring-primary outline-none;
+ outline: 2px solid var(--primary-DEFAULT);
+ outline-offset: 2px;
}
h1 {
@@ -170,7 +183,7 @@
color: var(--primary-foreground);
padding: 0.5rem 1rem;
@apply inline-flex items-center justify-center gap-2 transition-opacity hover:opacity-90;
- border-radius: 0 !important;
+ border-radius: 5px !important;
}
.btn-secondary {
@@ -179,7 +192,7 @@
color: var(--secondary-DEFAULT);
padding: 0.5rem 1rem;
@apply inline-flex items-center justify-center gap-2 transition-colors;
- border-radius: 0 !important;
+ border-radius: 5px !important;
}
.btn-secondary:hover {
@@ -255,6 +268,71 @@
border-radius: 0 !important;
}
+ /* ── Pill Toggle — replaces all input[type="checkbox"] ── */
+ .toggle-pill {
+ -webkit-appearance: none !important;
+ appearance: none !important;
+ width: 42px !important;
+ height: 24px !important;
+ border-radius: 999px !important;
+ background: var(--surface-bright) !important;
+ border: 1.5px solid var(--outline) !important;
+ position: relative !important;
+ cursor: pointer !important;
+ flex-shrink: 0 !important;
+ transition: background 0.22s ease, border-color 0.22s ease !important;
+ outline: none !important;
+ accent-color: transparent !important;
+ }
+
+ .toggle-pill::after {
+ content: '' !important;
+ position: absolute !important;
+ top: 3px !important;
+ left: 3px !important;
+ width: 16px !important;
+ height: 16px !important;
+ border-radius: 50% !important;
+ background: var(--secondary) !important;
+ transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), background 0.22s !important;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;
+ display: block !important;
+ }
+
+ .toggle-pill:checked {
+ background: var(--primary-DEFAULT) !important;
+ border-color: var(--primary-DEFAULT) !important;
+ }
+
+ .toggle-pill:checked::after {
+ transform: translateX(18px) !important;
+ background: var(--primary-foreground) !important;
+ }
+
+ .toggle-pill:focus-visible {
+ outline: 2px solid var(--primary-DEFAULT) !important;
+ outline-offset: 2px !important;
+ }
+
+ .toggle-pill:disabled {
+ opacity: 0.4 !important;
+ cursor: not-allowed !important;
+ }
+
+ .toggle-pill.sm {
+ width: 34px !important;
+ height: 19px !important;
+ }
+
+ .toggle-pill.sm::after {
+ width: 13px !important;
+ height: 13px !important;
+ }
+
+ .toggle-pill.sm:checked::after {
+ transform: translateX(15px) !important;
+ }
+
.headline-lg {
@apply text-5xl font-normal;
letter-spacing: -0.02em;
diff --git a/frontend/app/items/create.tsx b/frontend/app/items/create.tsx
index 561cb51f..b2613d49 100644
--- a/frontend/app/items/create.tsx
+++ b/frontend/app/items/create.tsx
@@ -357,7 +357,7 @@ export default function CreateItemPage() {
setCropBounds(null);
}
}}
- className="w-4 h-4 rounded border-outline accent-primary"
+ className="toggle-pill"
/>
-
+ setLdapConfig({...ldapConfig, ldap_enabled: e.target.checked})}
+ className="toggle-pill"
+ />
@@ -130,18 +124,12 @@ export default function LdapManager({
-
+ setLdapConfig({...ldapConfig, use_tls: e.target.checked})}
+ className="toggle-pill"
+ />