1 hour ago
27e0872
Fix: парсить MySQL datetime как UTC в formatRelative/formatDateTime
2 hours ago
d9ee715
Feat: сохранять timezone пользователя из gnexus-auth и отдавать в /auth/me
a9eae82
Feat: добавить роут /cron/run-timers для выполнения таймеров
3 hours ago
b842dc8
Fix: отдельный watch на script.alias для lazy indicators, убран immediate с route-watch
3 hours ago
431a303
Fix: immediate: true в watch для ленивой загрузки индикаторов (grid + detail)
3 hours ago
8f284fd
Feat: batch refresh индикаторов по 5 штук, ограничение параллельных запросов
4e05fa0
Feat: ленивая загрузка индикаторов — список без state_callback, фоновый refresh + спиннер
9ba69b8
Feat: отображение индикаторов на странице деталей action script + автообновление после run
...
3 hours ago
81f370e
Feat: state_callback индикация для всех action scripts
3 hours ago
12bf63e
Docs: danger_level и state_callback/indicators для action scripts
caa44e0
Feat: индикаторы состояния у action scripts (state_callback + indicators в UI)
5 hours ago
a4fb04e
Fix: height: 100% для .area-grid .card, rebuild
5ec8d7b
Build: production bundle ActionScriptsGrid danger_level fixes
5 hours 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
...
7 hours ago
4d031c0
Fix: DeviceScriptsHelper group_toggle / group_set_state — support alias:channel string syntax
7 hours 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
8 hours ago
2d93985
Fix: TemplateDriver class name, console autoload, ScriptsRegistry fallback
8 hours ago
275a370
Refactor: room-based Control Scripts scopes + helper relocation
1 day ago
971cb1b
Docs: добавлен раздел онлайн-загрузки SPA в android-capacitor-oauth-template.md
42ca04d
Feat: онлайн-загрузка SPA в Android-приложении через serverUrl из Preferences
92e141c
Fix: убран size=lg с кнопки LOGIN WITH GNEXUS
...
1 day ago
3151632
Fix: bridge page идентична Navi, gnexus-ui-kit стили
1 day ago
703f7cc
Fix: упрощена страница логина, кнопка LOGIN WITH GNEXUS
87a95de
Fix: bridge page строго в стиле gnexus-ui-kit, без закруглений
1 day ago
070bcd0
Fix: стилизованная bridge page для Android OAuth (адаптировано из navi-1)
1 day ago
7d79cff
Docs: Android + Capacitor 8 + OAuth — полный гайд по проблемам и решениям
61a3c9f
Fix: splash screen иконка расплющена на Android 12+
57605ab
Fix: Android статус бар overlay + splash screen размытость
...
1 day ago
cdfab0c
Fix: isNativeApp() использует Capacitor.isNativePlatform() вместо window.Capacitor
1 day ago
e7c3004
Fix: OAuth mobile flow + desktop auth + storage abstraction
1 day 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)
...
2 days ago
eb94cd0
Fix PermissionResolver: fallback for missing/empty tables; add seed migration for roles and permissions
2 days ago
0f7a6e4
Fix production auth: disable IP/UA binding (breaks reverse-proxy), add /api/v1/auth/* aliases, prepare PHP-FPM reload
2 days ago
65b4457
Phase 4 cleanup & polish: param migration seeds, gnexus-ui-kit LoginPage styles, single .env
2 days ago
41187ed
Phase 3 infrastructure hardening: IP/UA binding, nginx getallheaders fallback, auth rate limiting, permission cache
2 days ago
e7afa05
Phase 2 session stability: refresh queue, Bearer fallback, proactive refresh
2 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
2 days ago
dc6249e
Fix OAuth callback URL: insert access_token query string BEFORE hash fragment so Vue can read it via window.location.search
2 days ago
09e1d27
Fix OAuth callback: extract access_token in main.js before auth init, prevent 401 redirect loop in client.js
2 days ago
b1243af
Fix OAuth callback: remove refreshToken() from init() to prevent 401 cascade that clears access_token
2 days ago
18cca97
Add server/dist build to repository for zero-dependency prod deploy
2 days ago
b17262b
Fix AppController and EventsHandlers to use __DIR__ instead of app()->root_folder() for prod compatibility
2 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
3 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
3 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
...
4 days ago
ed17a89
Fix text_msg call in remove_device: use FCONF instead of undefined app()-method
4 days ago
32ab262
Fix ErrorHandler to catch Throwable (not just Exception) and safe null-check in remove_device
4 days ago
2d1a3cd
Move scan debug log to sys temp dir as well
4 days ago
c4f44c7
Move scan lock file to sys temp dir to avoid prod permission issues
4 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)
...
4 days ago
b087ced
Revert ControlScripts back to repo-root automation/ (Phase 7 structure)
7 days ago
859091c
Use gnexus-ui-kit semantic colors for device status dot and add state components
bdcc3d6
Replace connect column with inline status dot in device table
0ac4d77
Make toast backgrounds opaque for readability
...
7 days ago
0843dc5
Phase 5: Extract reusable useAsyncRequest composable for stores
f028f7f
Improve AppErrorState with statusCode, type, and copyable details (Phase 4)
fea9f1d
Add toast notifications for mutations (Phase 3)
...
7 days ago
214ed50
PageActionsDropdown: enlarge trigger button to 44x44px / 24px icon
921e921
PageActionsDropdown: use ph class instead of ph-bold for icon
db970ba
PageActionsDropdown: use plain btn-icon instead of GnButton
...
8 days ago
de3da4a
Use class basename for scope field in script view
77677c6
Add script detail pages with scope grouping
c2e496d
Add scope field to script view output
...
12 days ago
7dd4323
Bump frontend version to 0.2.0
6d5d05a
Style fixes: timeline hover, page-header layout, toolbar sort icon
6b23a8f
Refactor detail-header to GnPageHeader and remove obsolete card hover override
...
13 days ago
6155985
Implement browser extension MVP: autofill, save prompt, popup UI