Skip to content

Release 0.8.0-beta - #110

Merged
graseeel merged 452 commits into
mainfrom
dev
Aug 30, 2026
Merged

graseeel merged 452 commits into
mainfrom
dev

Conversation

@graseeel

Copy link
Copy Markdown
Owner

Release 0.8.0-beta

Este PR reúne as correções e melhorias do lote de issues #81 a #109, preparando o ambiente para a versão 0.8.0.

Destaques:

Nota: A separação completa de cota por conta e a correção do travamento do CLI dependem dos PRs #44 e #45 no repositório do CLI; chegam por atualização automática.

graseeel and others added 30 commits July 26, 2026 04:39
…g it

let _ = accept(envelope) swallowed the rejection reason. This was the
third swallowed error on the same message path found this tonight.
AcceptResult now reaches eprintln!("[smoke] accept: {err}") so the
next missed message identifies itself in CI.

Co-Authored-By: Verboo Code <noreply@code.verboo.ai>
The accept() log added in c60652b stayed silent in the last CI run —
the message is not rejected, it never arrives. Two more mute paths
existed in the same delivery function: tab not found returned without
log, and malformed envelope returned without log. Added to the
already-silent accept(), that makes the fourth, fifth and sixth
swallowed errors on this same path this cycle.

This commit adds:
- log at sink ENTRY, before any processing — separates "WebKit never
  called our handler" from "WebKit called and the message died in our
  code". They are opposite causes and indistinguishable today.
- log when tab is not found, with the searched id and the known ids.
- log when the envelope fails to parse, with the error and a truncated
  snippet of what arrived.

Co-Authored-By: Verboo Code <noreply@code.verboo.ai>
…osis

Previous instrumentation proved the WebKit calls our handler, the
parsed envelope is accepted, and the messages enter the queue. Yet
wait_for_page_loaded does not recognize any as page-loaded — meaning
the payload shape does not match the predicate.

This commit logs the first drained message payload (truncated, non-empty
only). The next CI run will show whether the "type" field exists at the
top level and what its value is — the difference between fixing the
producer or the consumer of the message.

Co-Authored-By: Verboo Code <noreply@code.verboo.ai>
…ever composited

Root cause of the Linux bridge timeout: NOT a bridge bug. The full
multi-platform chain works end to end — instrumentation proved the
message arrives with correct url, title "Tab-One", and viewport.
The block was the gate itself.

The smoke waited for "page-loaded", which browser_inject.js emits
inside TWO nested requestAnimationFrame callbacks. rAF only fires
when a frame is composited, and CI headless runners do not compose
frames — not even under xvfb on Linux, and not without an interactive
session on Windows. It is the same limitation that already forced us
to tolerate missing snapshots.

Change: wait() now accepts "page-ready" in addition to
"page-loaded". The function and error messages were renamed (the old
name would start lying). A comment records why rAF has no place in
CI, so no one hardens it back.

This is not a relaxation: page-ready carries url, title, and viewport,
and the title proves the DOM was processed. The in-app annotation
capture (which needs a real composited frame) still requires
page-loaded — the smoke is the only path affected.

Co-Authored-By: Verboo Code <noreply@code.verboo.ai>
No Linux o webview filho era criado no GtkBox da janela, onde os bounds não têm efeito — a página pintava numa faixa de largura total cobrindo o chat. O contêiner agora usa um overlay com GtkFixed, fazendo o webview respeitar o retângulo do painel, com teste que trava o contrato. Aba nova sem título passa a se chamar "Nova aba"/"New tab". Refs #87.
O rodapé ficava em "Plan unavailable" até o usuário abrir a aba Account, porque o perfil só era buscado atrás da descoberta de modelos. O refresh agora dispara no destravamento com guarda de geração — logout ou rejeição de sessão invalidam respostas em voo, impedindo que dados do usuário anterior reapareçam. Refs #89.
A tela de configurações abria na aba Segurança — herança do antigo redesign que renomeou a rota de permissões — e a linha do modo livre mostrava uma dica apontando para a própria aba em que o usuário já estava. O padrão agora é Geral (a seleção continua preservada durante a sessão) e a dica só aparece fora da aba do controle. Refs #90.
…do macOS

No Linux e Windows as configurações falavam em "menu bar do macOS", que não existe nesses sistemas. O ícone é a bandeja do sistema — o texto agora varia por plataforma (mesma preferência persistida) e o ajuste de texto expandido, que só o macOS suporta, aparece apenas lá. Refs #91.
@graseeel
graseeel merged commit 6d3f7f9 into main Aug 30, 2026
15 checks passed
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.

2 participants