Skip to content

Redesign dashboard/settings/providers and harden security - #14

Merged
softglazee merged 4 commits into
mainfrom
redesign-and-security-fixes
Oct 8, 2026
Merged

softglazee merged 4 commits into
mainfrom
redesign-and-security-fixes

Conversation

@softglazee

Copy link
Copy Markdown
Owner

What this is

A redesign of three pages plus a security-hardening pass. Stacked on #13 (fix/captcha-automation-mode); it will retarget to main once #13 merges.

UI

  • New dedicated Proxy providers page with its own sidebar entry under Groups, showing all 31 integrations, a "needs attention" list, filterable table and a per-provider pull panel (the working connector logic is reused unchanged).
  • Settings redesigned: section nav with scroll-spy, search, grouped cards with aligned rows, auto-save status. Every option and its save path is preserved.
  • Dashboard redesigned in the app's brand tokens: keeps the greeting/clock/quote, adds quick-access link cards and dependency-free inline-SVG analytics (pool health, countries, proxy types, new-proxies). One series with no backing data is labelled sample.
  • Renderer fixes: bulk actions scoped to visible rows, confirmations on destructive actions, settings apply request-guard + revert-on-failure, number inputs, masked secrets, missing Spanish strings, Start Links wipe guard.

Security / engine

  • Persona autofill isolated from the page main world; per-launch Firefox bridge token; SoftGlaze detection tells removed.
  • Proxy passwords encrypted at rest (keyed-hash unique index + migration).
  • Launch-race locks, geo-degraded launch warning, Firefox graceful close, SOCKS4 DNS-leak block, socks5h for checks.
  • Permission fixes: 2FA masked in list/export, SMTP owner-only, SSRF guard, vendor-pull quota, zip entry validation, backup unreadable-secret report.
  • Owner-certificate gating for the Super Admin licensing exemption; main-process auth gate for signed-out/locked state.

Licensing server

  • Forged Cryptomus webhooks rejected; per-provider config; idempotent, retry-safe webhooks; correct PayPal/Stripe capture, refund and renewal handling; machine-bound installs; Prisma migrations with migrate deploy; hardened Dockerfile.

Dependencies

  • nodemailer and axios upgraded; proxy-agent chain pinned via overrides.

Adds ~40 test files; full suite green (620/620 on this branch's content).

Not included

  • The owner's in-progress payments/receipt work (payments.js, its tests, and the receipt hunks in ipcHandlers.js) is deliberately left out and stays in the working tree.

Deploy notes

  • Licensing server: prisma migrate resolve --applied 20260916000000_init once, then migrate deploy + generate; ship the matching app build (older clients can't get leases).
  • First launch of a new build encrypts existing proxy passwords; do not downgrade afterwards.

UI
- New dedicated Proxy providers page with its own sidebar entry under Groups
- Redesigned Settings (section nav, search, grouped cards) and Dashboard
  (brand tokens, quick-access cards, inline-SVG analytics), both light+dark
- Renderer fixes: bulk-action scoping, confirmations, settings apply guard,
  number inputs, masked secrets, i18n gaps, Start Links guard

Security / engine
- Isolate persona autofill from page main world; per-launch Firefox bridge token
- Remove SoftGlaze detection tells; proxy password encryption at rest
- Launch race locks, geo-degraded warning, Firefox graceful close,
  SOCKS4 DNS-leak block, socks5h for checks
- Permission fixes: mask 2FA in list/export, SMTP owner-only, SSRF guard,
  vendor-pull quota, zip entry validation, backup unreadable-secret report
- Owner-certificate gating for Super Admin licensing; main-process auth gate

Licensing server
- Reject forged Cryptomus webhooks, per-provider config, idempotent webhooks,
  correct PayPal/Stripe capture/refund handling, machine-bound installs,
  prisma migrations + migrate deploy, hardened Dockerfile

Dependencies
- nodemailer and axios upgraded; proxy-agent chain pinned via overrides

Adds ~40 test files; full suite green.
Proxy providers
- Show each vendor's real bundled logo (monogram/icon fallback)
- Unify every pull form into one aligned Connection + Targeting grid
- Add a "Save credentials - ready to pull" action to every provider
- Build connectors for LumiProxy, Proxy302 and IP Burger (were "no connector yet")

Other pages
- Settings: bordered card-style section nav with active indicator
- Proxy pool: six token-only mini stat cards (real data, click to filter)
- Sidebar user menu: proper popover above the button with a close control
- Dashboard: restore seven missing i18n labels

Full suite green.
- assertSafeZipEntry normalizes backslashes, so a Windows-style "..\evil"
  traversal is refused when validated on Linux too (CI runs on Ubuntu).
- The proxy-password HMAC key falls back to unsealed storage when the OS
  keychain is unavailable, so passwordHash is always computed (headless CI
  has no keyring); it upgrades to sealed once encryption returns.
- Stop tracking the per-build web-ext .amo-upload-uuid artifact.
Makes the server start on hosts that keep env outside the per-deploy folder
and do not inject every var into the worker (LiteSpeed/Hostinger Node apps):
env.js walks up for a config/.env and loads it without overriding real env.
Also rewrites a "localhost" DB host to 127.0.0.1 so Prisma's MySQL client
does not resolve to IPv6 ::1 where MySQL is not listening.
@softglazee
softglazee changed the base branch from fix/captcha-automation-mode to main October 8, 2026 18:06
@softglazee
softglazee merged commit c31aea9 into main Oct 8, 2026
4 checks passed
@softglazee
softglazee deleted the redesign-and-security-fixes branch October 8, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant