ruslan
d65b7a0d35
Fix submit forms: use getElementById instead of stale closures, fix texts
2026-05-14 06:52:20 +00:00
ruslan
a60279ae3e
Fix JS syntax errors in modal success buttons (broken single quotes)
2026-05-14 06:45:16 +00:00
ruslan
b36b3f6325
Add contact modal, success messages, form reset on open
2026-05-14 06:42:09 +00:00
ruslan
ba8f3cf753
Validate all modal fields at once with per-field highlighting
2026-05-14 06:34:29 +00:00
ruslan
eb05bcac53
Add email and phone validation to request-access modal
2026-05-14 06:29:37 +00:00
ruslan
beb2781123
Fix request-access: add Telegram env to compose, fix log_event calls
2026-05-14 06:28:58 +00:00
ruslan
a0b1754ddb
Rename modal title to Запрос на доступ
2026-05-14 06:25:04 +00:00
ruslan
ce39573618
Fix login-request-btn width after a→button change
2026-05-14 06:24:11 +00:00
ruslan
f740420a77
Add request access modal on login page with Telegram notification
...
- Modal form: name, company, email, phone (required), manager (optional), product checkboxes
- Products loaded from DB via GET /api/public/services-by-category (public route)
- POST /api/request-access sends styled Telegram message with divider and emojis
- Dark-themed modal matching login page design
- CSS: overlay, card, fields, checkbox list, error, footer buttons
2026-05-14 06:22:39 +00:00
ruslan
9530f3e957
fix: autofill dispatches focus/blur/keyup/InputEvent for SPA frameworks
2026-05-13 12:14:44 +00:00
ruslan
3e640fbe15
revert: restore CSS to working state before logo column experiments
2026-05-12 13:29:08 +00:00
ruslan
eda342cf43
fix: logo in own grid column, content never overlaps
2026-05-12 13:27:09 +00:00
ruslan
e8d1515f89
fix: reserve space for fixed page-logo, prevent content overlap
2026-05-12 13:24:05 +00:00
ruslan
4f52ae8566
style: add gap between avatar and username in header
2026-05-12 13:20:47 +00:00
ruslan
30ce37b906
fix: remove first_name/last_name from all models except User
2026-05-12 13:01:29 +00:00
ruslan
4268b19a37
fix: remove first_name/last_name from Service model (was added by mistake)
2026-05-12 12:59:38 +00:00
ruslan
6aa40eb5c2
feat: add first_name/last_name to users, avatar in header, neutral dashboard bg
2026-05-12 12:51:47 +00:00
ruslan
dedf4aea77
dashboard: replace informal welcome text with product name
2026-05-12 12:44:44 +00:00
ruslan
fff7ecdce2
login: left panel 1/4, distrib button, text tweaks, dashboard light theme polish
2026-05-12 12:42:12 +00:00
ruslan
666093f1c6
login: logo only in top-left corner, left panel 1/3 right panel 2/3
2026-05-11 08:54:25 +00:00
ruslan
020793a3e2
redesign: stylish two-column login page (dark navy split layout)
2026-05-11 08:50:02 +00:00
ruslan
55da535f44
feat: project description block on login page
2026-05-11 08:43:50 +00:00
ruslan
d7716fa569
design: stylish request-access button on login page
2026-05-08 13:05:02 +00:00
ruslan
116ffba42d
feat: add Yandex Metrika counter (id=109119977) to all pages
2026-05-08 13:03:46 +00:00
ruslan
b9f1e375d3
feat: request access button on login page (mailto rgalyaviev)
2026-05-08 12:59:15 +00:00
ruslan
e516cc4aeb
feat: Russian locale (ru_RU.UTF-8) in universal-runtime for Chromium UI language
2026-05-08 12:54:16 +00:00
ruslan
52cb1fd3d6
feat: fullscreen button in nav panel for web and rdp services
2026-05-08 12:00:39 +00:00
ruslan
1dc5a0eb34
fix: replace favicon with correct local file
2026-05-07 07:26:15 +00:00
ruslan
983065ac9f
fix: use favicon.png instead of svg
2026-05-07 07:23:56 +00:00
ruslan
7e94ddaf8d
fix: rdp target field readonly, host/port/domain/sec oninput rebuilds target
2026-05-06 11:43:26 +00:00
ruslan
2edb804660
fix: autofill login first then password, continuous re-fill for SPA re-renders
2026-05-05 11:05:09 +00:00
ruslan
f994674327
merge: refactor/split-main-py into main
2026-05-04 14:46:05 +00:00
ruslan
a44422f43b
feat: draggable nav panel in web runtime (universal-runtime)
2026-05-04 14:46:00 +00:00
ruslan
a137729704
design: username left in header, white elegant font
2026-05-04 13:35:32 +00:00
ruslan
bbe1e27582
design: logo fixed left below header
2026-05-04 13:33:55 +00:00
ruslan
16c06ac166
design: move logo below header strip, scrolls with page
2026-05-04 13:32:43 +00:00
ruslan
0b37d5245c
feat: draggable nav panel with position saved to localStorage
2026-05-04 13:28:10 +00:00
ruslan
535d71709e
fix: dark header background, original logo color
2026-05-04 13:08:24 +00:00
ruslan
045b21c514
design: dark minimal header
2026-05-04 13:06:29 +00:00
ruslan
d8f9f4c87f
fix: anti-idle click+shift every 60s
2026-05-04 12:50:16 +00:00
ruslan
d7c3b35502
fix: anti-idle click at y=80 (2cm from top)
2026-05-04 10:34:08 +00:00
ruslan
4dec5a09ce
fix: anti-idle uses mouse click instead of shift key, interval 60s
2026-05-04 08:41:40 +00:00
ruslan
204bb02011
fix: revert anti-idle interval to 30s (3min caused Red OS to lock)
2026-05-04 08:09:47 +00:00
ruslan
dddeb26946
fix: persist should_be_connected state to disk, restore on manager restart
2026-05-04 07:15:31 +00:00
ruslan
bff5ffac1c
perf: compress logo and favicon (1.7MB -> 7KB / 610B)
2026-05-04 06:32:16 +00:00
ruslan
b838c814ba
fix: change anti-idle interval from 30s to 3min
2026-05-04 06:20:55 +00:00
ruslan
359a0c7636
fix: add shift key press in anti-idle loop for OS that ignore mouse movement
2026-05-03 12:10:59 +00:00
ruslan
3d8ccd30b6
fix: add hash_password to auth imports in main.py
2026-05-01 16:47:48 +00:00
ruslan
dc90569631
fix: call connect_rdp_slot on session reuse
...
Previously connect_rdp_slot was only called when creating a new session.
If the API container restarted, existing sessions had should_be_connected=false
and xfreerdp never started. Now connect is triggered on every /go/<slug> visit
when an RDP session already exists.
2026-05-01 16:11:30 +00:00
ruslan
fc3a4c6efb
fix: increase mouse jiggle to 10px for reliable screensaver prevention
2026-05-01 16:06:13 +00:00