701 Commits

Author SHA1 Message Date
zhom b9070693ed refactor: cleanup 2026-07-25 22:59:13 +04:00
zhom 9624ec846d refactor: harden tests 2026-07-21 23:13:17 +04:00
zhom f7daf68b52 chore: add cross-platform webdriver tests 2026-07-20 03:26:31 +04:00
zhom a71dad735e refactor: block windows app update if the browser is running 2026-07-20 00:16:49 +04:00
zhom f1664b2950 refactor: ui refresh 2026-07-18 11:42:07 +04:00
zhom 4f7910dd23 feat: mass import via gui, api, and mcp 2026-07-17 02:05:34 +04:00
zhom 7b7849a54a chore: version bump 2026-07-12 23:29:52 +04:00
zhom ae8afbb158 refactor: api cleanup 2026-07-11 21:37:41 +04:00
zhom 53db00a85a chore: linting 2026-07-11 19:58:45 +04:00
zhom eeb5c816bf feat: sha256 checksum for self-updates 2026-07-11 15:41:00 +04:00
zhom 86d58717b4 fix: properly handle location spoofing for socks5 proxies 2026-07-11 15:01:42 +04:00
zhom 06e34527b6 feat: progress bar for extraction 2026-07-11 15:01:04 +04:00
zhom 0e5a4608d7 chore: version bump 2026-07-09 14:24:43 +04:00
zhom 745a4da17c refactor: do not use system proxy on windows 2026-07-09 14:23:11 +04:00
zhom fc7da8af36 chore: version bump 2026-07-09 00:05:48 +04:00
zhom 575700a67f chore: lint 2026-07-08 12:33:21 +04:00
zhom 891eba6a47 refactor: handle newer wayfern versions 2026-07-08 11:26:04 +04:00
zhom d8c1a51d4a chore: linux ci 2026-07-08 10:55:08 +04:00
zhom 0b3857b361 chore: update dependencies 2026-07-08 01:19:52 +04:00
zhom 23859333c6 refactor: fully deprecate camoufox 2026-07-08 01:19:52 +04:00
zhom 23dab4c8e4 feat: ipv6 support for wireguard 2026-07-08 01:19:52 +04:00
zhom 6f0ffc79ee refactor: cleanup 2026-07-08 01:19:52 +04:00
zhom eb6ded2772 refactor: better handling of unstable connection during asset downloads 2026-07-08 01:19:52 +04:00
zhom 95189c7c6c fix: background status/update loop and window-color command 2026-07-08 01:19:52 +04:00
zhom 63a1f4c92a feat: per-profile window color with id-derived default 2026-07-08 01:19:52 +04:00
zhom b507bf0af5 fix: sync engine correctness and manifest traversal guard 2026-07-08 01:19:52 +04:00
zhom 15a7647e74 security: restrict secret files to owner-only (0600) 2026-07-08 01:19:52 +04:00
zhom 862831764d feat: emit extension sync-status events 2026-07-08 01:19:52 +04:00
zhom 8b1629c7db fix: self-reap proxy worker off-runtime and redact upstream creds in logs 2026-07-08 01:19:51 +04:00
zhom 5a46d0e266 fix: resolve VPN SOCKS5 domain CONNECT requests through the tunnel 2026-07-08 01:19:51 +04:00
zhom 2c4163383d fix: persist imported session cookies so logins survive relaunch 2026-07-08 01:19:51 +04:00
zhom e54bc1192d chore: version bump 2026-06-24 08:30:19 +04:00
zhom 9061e4db8f refactor: improve location info generation for fresh profiles 2026-06-24 08:01:46 +04:00
zhom 19e50324c4 refactor: improve profile creation api invalid 'browser' handling 2026-06-24 08:01:46 +04:00
zhom 8588a44fb5 refactor: cleanup 2026-06-24 02:00:44 +04:00
zhom 94cccc3702 fix: prevent stale sse token refresh 2026-06-24 00:51:21 +04:00
zhom 4007dedcf0 feat: batch profile launch/stop for paid users 2026-06-24 00:07:43 +04:00
zhom 50d2834634 refactor: bound proxy connection 2026-06-23 23:20:24 +04:00
zhom f8791a9ec5 chore: dependency update 2026-06-23 22:46:39 +04:00
zhom 4598b22af1 refactor: add robust proxy lifecycle management" 2026-06-23 22:10:16 +04:00
liasica 02328e59a2 fix(proxy): make SOCKS5 upstream username/password authentication reliable
Two independent root causes were producing auth failures on the upstream
SOCKS5 dial path:

1. `url::Url::username()` / `Url::password()` return percent-encoded
   strings per the WHATWG URL spec, but the producer side already
   percent-encodes the credentials when assembling the upstream URL —
   so the upstream was receiving `%40` instead of `@` and authentication
   silently failed for any credential containing `@ : / + = % ! space`
   or non-ASCII characters. Centralize the decode in a new
   `upstream_userpass` helper and route all four upstream-dial sites
   through it (HTTP CONNECT → SOCKS5, HTTP CONNECT → HTTP Basic-Auth,
   local SOCKS5 → HTTP Basic-Auth, local SOCKS5 → SOCKS5). The
   Shadowsocks path already decoded manually and is unchanged.

2. async_socks5 0.6 issues a `write_u8` for every single-byte field of
   the SOCKS5 method-selection and RFC1929 sub-negotiation. On a raw
   `TcpStream` each call becomes its own TCP segment, and some upstream
   SOCKS5 implementations treat this fragmented submission as a
   misbehaving client and silently FIN instead of returning a status —
   curl with the same credentials succeeds because it buffers each
   sub-message into a single send(). Wrap the upstream socket in
   `tokio::io::BufStream` (the usage pattern the async_socks5 README
   shows) and enable TCP_NODELAY so flushes leave unsegmented.

Includes unit tests covering percent-decode for ASCII / special-char /
non-ASCII / no-credentials / username-only inputs, plus a trace-level
SOCKS5 handshake byte logger that can be enabled with
RUST_LOG=donutbrowser_lib::proxy_server=trace for future debugging.
2026-06-19 20:03:24 +08:00
zhom e1b79037bf chore: version bump 2026-06-18 02:10:36 +04:00
zhom d3169ad7a9 refactor: better tray icon 2026-06-18 01:41:14 +04:00
zhom e1fcfd5403 refactor: simplify socks connection 2026-06-17 18:33:09 +04:00
zhom 9dc9e13182 refactor: switch local proxy from http to socks 2026-06-17 18:33:09 +04:00
zhom 168b7ac6d4 feat: amek window resizable 2026-06-17 18:33:09 +04:00
zhom ba40458216 chore: version bump 2026-06-08 04:38:01 +04:00
zhom 91e6381ba5 chore: linting 2026-06-08 00:44:03 +04:00
zhom fc9a00b97d refactor: deprecate camoufox 2026-06-08 00:06:44 +04:00
zhom 15f3aa03f7 refactor: cleanup 2026-06-08 00:06:44 +04:00