KVMote/.claude/napkin.md

2.3 KiB

Napkin Runbook — KVMote

Curation Rules

  • Re-prioritize on every read.
  • Keep recurring, high-value notes only.
  • Max 10 items per category.
  • Each item includes date + "Do instead".

Execution & Validation (Highest Priority)

  1. [2026-03-24] ImplicitUsings=disable — todo using deve ser explícito Do instead: ao adicionar código, verificar se todos os namespaces usados têm using explícito no topo. Faltou um → erro CS0103 silencioso em runtime.

  2. [2026-03-24] Designer file: sempre usar this. nos membros de Form Do instead: em Principal.Designer.cs, escrever this.btnConnect.Text = ... — nunca omitir this.. Sem isso → CS0103.

  3. [2026-03-24] AutoScaleMode deve ser Dpi com AutoScaleDimensions = new SizeF(96F, 96F) Do instead: nunca usar None (quebra DPI alto) nem Font (escala diferente por máquina).

  4. [2026-03-24] Form1.cs / Form1.Designer.cs são stubs vazios — não remover Do instead: manter como namespace KVMote { }. VS os inclui no .csproj; remover do disco pode causar erro de build.

Build & Deploy

  1. [2026-03-24] Não usar "Publicar" do Visual Studio — gera ClickOnce (múltiplos arquivos) Do instead: usar dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true no terminal.

Domain Behavior Guardrails

  1. [2026-03-24] Canal serial é único (9600 baud) — mouse trava durante paste de clipboard Do instead: isso é design proposital (limitação do BT HC-06). Não tentar paralelizar sem mudar o protocolo de transporte.

  2. [2026-03-24] Chars não-ASCII (é, ã, ç) não são enviáveis via clipboard Do instead: filtrar/ignorar na SendClipboardToClient. Limite: MaxClipChars = 300.

  3. [2026-03-24] ClipCursor não é usado para prender o cursor em modo cliente Do instead: usar técnica FPS warp — SetCursorPos de volta ao centro a cada WM_MOUSEMOVE, acumulando deltas reais em _pendingDX/_pendingDY.

  4. [2026-03-24] SendMouse usa Monitor.TryEnter (lossy) — descarta pacotes se canal ocupado Do instead: isso é intencional. Não trocar por lock pois bloquearia o hook de mouse.

  5. [2026-03-24] Arduino Leonardo é obrigatório — Uno não suporta HID USB nativo Do instead: nunca sugerir Arduino Uno ou Mega como substituto.