Repository navigation
feat(portal): nome do PC e "Adicionar PC" por usuário vindos do portal - #21
Merged
Merged
Conversation
O /api/portal/me ganha o campo pc: { name, add_pc }. Com name, o PC local
aparece com esse nome (mapeamento único sobre a lista de máquinas, para que
sidebar, paleta e feedback vejam o mesmo). Com add_pc false somem todos os
controles que terminam em startMachineSetup: Adicionar PC (rodapé, paleta,
Configurações), Reconectar/configurar, Atualizar bridge…, os avisos e o
banner. Conectar/Desconectar, Remover PC e o update-bridge sem login ficam.
Sem o campo (ou fora do portal) nada muda.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… do update-bridge visível - canAddPc fica falso até o /api/portal/me responder (sem piscar os botões) e fechar o diálogo de PC se virar falso. - O banner "Update bridge" mostra o erro quando o POST falha e não há setup para onde cair; com setup, o fallback continua. - Regressão cobre update_bridge e bridge_conflict com add_pc false. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a lenta - fetchPortalSession desiste após 10 s (AbortSignal.timeout) e vale NO_PORTAL, para um /me pendurado não esconder para sempre os controles de PC. - A regressão atrasa o /me em 1,5 s e confere que "Add PC" não aparece antes da resposta (add_pc false) e aparece depois (add_pc true). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ortSignal.timeout - O erro do "Update bridge" do banner guarda o id do PC e só aparece para ele; limpa ao novo clique e o botão fica desabilitado enquanto o POST voa. - fetchPortalSession usa AbortController + setTimeout (limpo no finally): AbortSignal.timeout lança em Safari/Chrome antigos. - Remove o efeito que fechava o diálogo (canAddPc nunca vai de true a false). - A regressão espera a resposta do /me antes de contar botões. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que muda
O admin do portal passa a definir, por usuário, o nome do PC e se ele pode adicionar PC. O fork lê isso do
GET /api/portal/me, no campopc: {name, add_pc}(contrato fechado com o portal, branchfeat/pc-dedicadodo herdr-portal).namepreenchido: substitui o nome da máquina local (local). É aplicado num únicouseMemosobre o roster.add_pc: false: some todo controle que leva aostartMachineSetup(POST /api/machines/setup, a rota que o proxy do portal bloqueia com 403add_pc_disabled):Continuam Connect/Disconnect, Remove PC, Rename e o "Update bridge" de um clique. Quando ele falha, o erro agora aparece por PC no banner; antes ele caía no diálogo de setup.
Os controles de setup só aparecem depois que o
/meresponde. A chamada tem limite de 10 s (AbortController). Sem resposta, com erro, ou com o campo ausente ounull, tudo fica como hoje. A trava de verdade é a do proxy.Testes
src/lib/portal.test.ts: 9 pass. O teste reprova quando a leitura deadd_pcé quebrada.scripts/portal-pc-regression.ts(novo, noci-browser.sh): cobrepcausente,nulle ligado/desligado, o/melento,update_bridge,bridge_conflict, o erro do banner e o clique duplo (1 POST). Ele reprova quando as guardas são removidas.bun run check fastok.ui-regression.tscom 88 PASS.O
bun run check full(que roda os scripts de navegador na CI) não rodou localmente. Fica para a CI deste PR.Revisão
Passou por 4 rodadas de code-review e 1 de security-review, cada uma num agente novo e sem contexto. A última foi "merge-ready", sem achados críticos nem importantes.
Fica aberto um ponto menor: o
sendingdo banner é global. Se a atualização do PC A estiver em andamento e o banner passar a mostrar o B, o botão do B fica desativado até o pedido do A terminar.🤖 Generated with Claude Code