17 hours ago
4d4de49
Fix: use correct alias kitchen_hatch for basement hatch in HallScope
9532693
Fix: Hatch::get_state() undefined var, rename attic→basement in HallScope
21 hours ago
f87ba2a
Fix: proper hatch indicator in DeviceScriptsHelper with ru labels, position pct and all states
11271cd
Fix: proper hatch state display with ru labels, icons and correct badge variants
21 hours ago
7ab43c0
Fix: modes grid layout using area-grid pattern like ActionScriptsGrid
a76c455
Build: regenerate dist assets after modes grid layout fix
4cf5642
Fix: modes grid layout switched to flexbox to prevent overlapping cards
21 hours ago
92a9b38
Fix: sync registry tags in ModesRESTAPIController before all ops
22 hours ago
fa90b1d
Fix: удалён SleepScope (неправильно реализован как Scope вместо Mode)
e8015d9
Fix: WebView кэш ассетов — meta-теги no-cache + nginx заголовки + clearCache в MainActivity
22 hours ago
7a274b6
Fix: MainActivity читает правильный ключ shserv_server_url для загрузки SPA с сервера
389c275
Fix: sleep mode теперь блокирует indoor-свет (mute кнопок + guard)
e82e70f
Feat: режим сна (sleep mode) + UI модов в Vue клиенте
1 day ago
27e0872
Fix: парсить MySQL datetime как UTC в formatRelative/formatDateTime
1 day ago
d9ee715
Feat: сохранять timezone пользователя из gnexus-auth и отдавать в /auth/me
a9eae82
Feat: добавить роут /cron/run-timers для выполнения таймеров
1 day ago
b842dc8
Fix: отдельный watch на script.alias для lazy indicators, убран immediate с route-watch
1 day ago
431a303
Fix: immediate: true в watch для ленивой загрузки индикаторов (grid + detail)
1 day ago
8f284fd
Feat: batch refresh индикаторов по 5 штук, ограничение параллельных запросов
4e05fa0
Feat: ленивая загрузка индикаторов — список без state_callback, фоновый refresh + спиннер
9ba69b8
Feat: отображение индикаторов на странице деталей action script + автообновление после run
...
1 day ago
81f370e
Feat: state_callback индикация для всех action scripts
1 day ago
12bf63e
Docs: danger_level и state_callback/indicators для action scripts
caa44e0
Feat: индикаторы состояния у action scripts (state_callback + indicators в UI)
1 day ago
a4fb04e
Fix: height: 100% для .area-grid .card, rebuild
5ec8d7b
Build: production bundle ActionScriptsGrid danger_level fixes
1 day ago
6258bab
Fix: обёртка для GnActionCard + :deep() стили danger_level, confirm для скриптов с params_schema
b585238
Fix: hatch_open и hatch_close → danger_level dangerous (warning)
bd12f09
Fix: использовать gnexus-ui-kit цвета для danger_level border в ActionScriptsGrid
...
1 day ago
4d031c0
Fix: DeviceScriptsHelper group_toggle / group_set_state — support alias:channel string syntax
1 day ago
1c17308
Fix: event handlers — kitchen_buttons alias (11 not 1), add btns_hall2_1 to HallScope
70c6ed0
Fix: Script entity field access — uniq_name instead of alias in place_in_area / unassign logging
1 day ago
2d93985
Fix: TemplateDriver class name, console autoload, ScriptsRegistry fallback
1 day ago
275a370
Refactor: room-based Control Scripts scopes + helper relocation
2 days ago
971cb1b
Docs: добавлен раздел онлайн-загрузки SPA в android-capacitor-oauth-template.md
42ca04d
Feat: онлайн-загрузка SPA в Android-приложении через serverUrl из Preferences
92e141c
Fix: убран size=lg с кнопки LOGIN WITH GNEXUS
...
2 days ago
3151632
Fix: bridge page идентична Navi, gnexus-ui-kit стили
2 days ago
703f7cc
Fix: упрощена страница логина, кнопка LOGIN WITH GNEXUS
87a95de
Fix: bridge page строго в стиле gnexus-ui-kit, без закруглений
2 days ago
070bcd0
Fix: стилизованная bridge page для Android OAuth (адаптировано из navi-1)
2 days ago
7d79cff
Docs: Android + Capacitor 8 + OAuth — полный гайд по проблемам и решениям
61a3c9f
Fix: splash screen иконка расплющена на Android 12+
57605ab
Fix: Android статус бар overlay + splash screen размытость
...
2 days ago
cdfab0c
Fix: isNativeApp() использует Capacitor.isNativePlatform() вместо window.Capacitor
2 days ago
e7c3004
Fix: OAuth mobile flow + desktop auth + storage abstraction
2 days ago
46463a5
Refactor: extract shared logger utils, fix edge cases in Pinia/HTTP logging
b0b9eb9
P2: Vue Client — console logging (HTTP, router, Pinia actions, error handler)
5ed02cb
P1: Add structured business-logic logging across PHP server (auth, devices, scripts, areas, events)
...
4 days ago
eb94cd0
Fix PermissionResolver: fallback for missing/empty tables; add seed migration for roles and permissions
4 days ago
0f7a6e4
Fix production auth: disable IP/UA binding (breaks reverse-proxy), add /api/v1/auth/* aliases, prepare PHP-FPM reload
4 days ago
65b4457
Phase 4 cleanup & polish: param migration seeds, gnexus-ui-kit LoginPage styles, single .env
4 days ago
41187ed
Phase 3 infrastructure hardening: IP/UA binding, nginx getallheaders fallback, auth rate limiting, permission cache
4 days ago
e7afa05
Phase 2 session stability: refresh queue, Bearer fallback, proactive refresh
4 days ago
0958b86
Update auth-fix-plan: mark Phase 1 tasks completed
e90acee
Phase 1 auth security hotfixes: cookie-based session, bearer checks, router guard sync
4 days ago
dc6249e
Fix OAuth callback URL: insert access_token query string BEFORE hash fragment so Vue can read it via window.location.search
4 days ago
09e1d27
Fix OAuth callback: extract access_token in main.js before auth init, prevent 401 redirect loop in client.js
4 days ago
b1243af
Fix OAuth callback: remove refreshToken() from init() to prevent 401 cascade that clears access_token
4 days ago
18cca97
Add server/dist build to repository for zero-dependency prod deploy
4 days ago
b17262b
Fix AppController and EventsHandlers to use __DIR__ instead of app()->root_folder() for prod compatibility
4 days ago
7f7ad82
Integrate Vue webclient into server: serve SPA from /, remove proxy.php, update auth redirects
568f25e
Fix UserResolver: use ThinBuilder::insert() return value
b98fb4c
Fix ErrorHandler exception_handler type cast
4 days ago
74d4c0f
Route all auth/login requests through proxy.php for cross-domain SPA
7cf585f
Add Bearer token persistence for cross-domain SPA auth
4 days ago
0552de9
Phase 2: Protect Areas, Scripts, Firmware REST API endpoints with permission checks
44250a7
Phase 2: Protect DevicesRESTAPIController endpoints with permission checks
aeabd40
Update docs: guest is explicit authenticated role, no anonymous access
...
5 days ago
ed17a89
Fix text_msg call in remove_device: use FCONF instead of undefined app()-method
5 days ago
32ab262
Fix ErrorHandler to catch Throwable (not just Exception) and safe null-check in remove_device
5 days ago
2d1a3cd
Move scan debug log to sys temp dir as well
5 days ago
c4f44c7
Move scan lock file to sys temp dir to avoid prod permission issues
5 days ago
3a0b92b
Fix web proxy timeout 30s→120s to match scan duration
57b26de
Increase scan batch size 8→32 to cut usleep overhead (~54s→37s)
0b9be7b
Fix scan speed: use CURLOPT_*_MS for sub-second timeouts (was ~3s per IP on Linux)
...