You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- disconnectPattern now only matches firstLine, fixing false-positive
disconnects triggered by auxiliary output lines
- openTunnelLog guards against concurrent double-invocation via
tunnelLogOpening flag (UI + Service layers)
- popoutHeight clamps to screen height (parentScreen/barThickness)
instead of a fixed 760, fixing overflow on short displays
- connected location name is title-cased for display, masking an
upstream adguardvpn-cli capitalization quirk (SãO PAULO)
3 new regression tests (29/29 passing).
Copy file name to clipboardExpand all lines: CHANGELOG.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,13 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [Sem
13
13
14
14
- DNS leak warning banner: when `adguardvpn-cli` reports "System DNS could not be configured" on connect/status, the popout now shows a persistent warning in the hero instead of staying silent about queries potentially bypassing the tunnel.
15
15
16
+
### Fixed
17
+
18
+
- Status parser no longer misreads a connected session as disconnected because of an auxiliary output line containing "disconnected"/"stopped" — the disconnect signal is now matched against the first line only, where every supported CLI status format already places it.
19
+
-`openTunnelLog` now guards against concurrent double-invocation (rapid double-click) with a dedicated `tunnelLogOpening` flag instead of being able to spawn duplicate terminals.
20
+
- Popout height is no longer a fixed `760`; it now clamps to the screen height (via `parentScreen`/`Screen`, same fallback the DMS `PluginComponent` uses internally) so it no longer overflows short displays (e.g. 768p with a bar).
21
+
- Connected location name display (`SãO PAULO`, an upstream `adguardvpn-cli` capitalization quirk) is now normalized to title case (`São Paulo`) in the bar pill and hero title.
22
+
16
23
---
17
24
18
25
## [1.4.0] - 2026-06-12
@@ -224,6 +231,13 @@ Todas as mudanças relevantes deste projeto são documentadas aqui. O inglês ac
224
231
225
232
- Banner de vazamento de DNS: quando o `adguardvpn-cli` reporta "System DNS could not be configured" no connect/status, o popout agora mostra um aviso persistente no hero em vez de ficar em silêncio sobre consultas DNS que podem vazar para fora do túnel.
226
233
234
+
#### Corrigido
235
+
236
+
- O parser de status não confunde mais uma sessão conectada com desconectada por causa de uma linha auxiliar contendo "disconnected"/"stopped" — o sinal de desconexão agora é testado só na primeira linha, onde todos os formatos suportados do CLI já colocam essa informação.
237
+
-`openTunnelLog` agora tem guard contra dupla invocação concorrente (clique duplo rápido) via flag dedicada `tunnelLogOpening`, em vez de poder lançar terminais duplicados.
238
+
- Altura do popout deixou de ser fixa em `760`; agora é clampada pela altura da tela (via `parentScreen`/`Screen`, mesmo fallback usado internamente pelo `PluginComponent` do DMS), eliminando o estouro em telas baixas (ex.: 768p com barra).
239
+
- Exibição do nome da localização conectada (`SãO PAULO`, quirk de capitalização do próprio `adguardvpn-cli`) agora é normalizada para title case (`São Paulo`) no pill da barra e no título do hero.
Copy file name to clipboardExpand all lines: DONE.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,10 @@
8
8
## Pós-v1.4.0 — 2026-07-10
9
9
10
10
-[x]**Aviso de vazamento de DNS nunca era capturado** — ✅ 2026-07-10: descoberta ao reconectar manualmente e ver `Warning: System DNS could not be configured` no CLI, nunca exposto no plugin. `AdGuardVpnParsers.js` agora detecta a linha em `parseStatusOutput` (`dnsWarning`), `AdGuardVpnService.qml` expõe `dnsWarning: bool` (resetado em todo branch de status), `AdGuardVpnWidget.qml` mostra banner persistente no hero (mesmo padrão visual do banner "Sessão não iniciada"). 2 testes novos em `scripts/test-parsers.mjs` (28/28 passando). Chaves i18n `dns.leak_warning_title`/`dns.leak_warning_body` em en+pt_BR (paridade estrita mantida).
11
+
-[x]**Detecção de "disconnected" agressiva demais** — ✅ 2026-07-10: `disconnectPattern` (`AdGuardVpnParsers.js`) testava `firstLine` OU `fullOutput` inteiro; qualquer linha auxiliar com "disconnected"/"stopped" derrubava o estado mesmo com "Connected to …" na primeira linha. Teste restrito só ao `firstLine` — todos os formatos suportados (connected/disconnected/key-value) já colocam o sinal decisivo ali, confirmado pelos 29 testes existentes. Teste de regressão novo prova que "Connected to Frankfurt..." + linha auxiliar "...was stopped..." continua `connected: true`.
12
+
-[x]**`openTunnelLog` sem guard contra dupla invocação** — ✅ 2026-07-10: novo `property bool tunnelLogOpening` em `AdGuardVpnService.qml`, setado antes do `Proc.runCommand` e resetado no callback (sucesso e erro); clique duplo/rápido agora só reexibe o toast "Opening tunnel log..." em vez de lançar terminal/spawn duplicado. Botão "Open Log" no widget desabilita enquanto `tunnelLogOpening` é `true` (defesa em duas camadas: UI + Service).
13
+
-[x]**`popoutHeight: 760` fixo estourava em telas baixas** — ✅ 2026-07-10: `popoutHeight` agora é um binding que usa `root.parentScreen || Screen` (mesmo fallback usado internamente pelo `PluginComponent.qml` do DMS) e `root.barThickness`, clampando entre `popoutMinHeight` (420) e `popoutMaxHeight` (760) — `Math.max(420, Math.min(760, screenHeight - barThickness - 96))`. Sem regressão em 1080p (resultado idêntico a 760); em 768p com barra o popout cabe com margem.
14
+
-[x]**Capitalização quebrada em nomes de localização com acento (`SãO PAULO`)** — ✅ 2026-07-10: quirk confirmado como bug do próprio `adguardvpn-cli` (hex dump mostrou `ã` minúsculo dentro de string em bold/uppercase), mascarado cosmeticamente com `formatLocationName()` novo em `AdGuardVpnWidget.qml` (lowercase + capitalize por palavra/hífen) aplicado no bar pill e no hero title. Verificado visualmente: badge agora mostra "São Paulo".
Copy file name to clipboardExpand all lines: To-Do.md
-10Lines changed: 0 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,18 +5,8 @@
5
5
6
6
---
7
7
8
-
## P1 — Lógica
9
-
10
-
-[ ]**Detecção de "disconnected" agressiva demais** — `AdGuardVpnParsers.js:34-35`: `disconnectPattern` testa o output inteiro; qualquer linha auxiliar contendo "disconnected"/"stopped" (ex.: aviso histórico do CLI) marca o estado como desconectado mesmo com a primeira linha "Connected to …". Restringir o teste do `fullOutput` a padrões mais específicos ou priorizar o match de connected na primeira linha antes do disconnect no full output.
11
-
-[ ]**`openTunnelLog` roda fora do guard `commandRunning`** — pode rodar em paralelo com connect/disconnect (ambos via `Proc.runCommand`). Baixo risco, mas avaliar guard ou fila.
12
-
13
-
## P1 — UI/UX
14
-
15
-
-[ ]**`popoutHeight: 760` fixo** — em telas baixas (768p com barra) estoura. Calcular: `Math.min(760, Screen.height - margens)` ou equivalente DMS. (Pendente: requer verificar como o DMS clampa popouts antes de mexer.)
16
-
17
8
## P2 — Melhorias
18
9
19
-
-[ ]**Capitalização quebrada em nomes de localização com acento** — descoberto 2026-07-10: o próprio `adguardvpn-cli` emite `SãO PAULO` (confirmado em hex: `ã` minúsculo dentro de string em bold/uppercase) — não é bug do plugin, mas dá pra mascarar cosmeticamente normalizando a exibição de `connectedLocation` (title-case) em vez de repassar cru.
20
10
-[ ]**Indicador visual de ping** — colorir o badge de ping (verde <80ms, amarelo <150, vermelho acima) nos cards de localização.
21
11
-[ ]**Confirmação/feedback de favoritos** — toast leve ou animação na estrela ao favoritar.
22
12
-[ ]**Copiar diagnóstico** — botão "copiar" no bloco Command output / last command.
0 commit comments