Novidades no FWH 26.08

Destaques do FiveWin for Harbour/xHarbour versão 26.08 (agosto 2026). Veja também whatsnew.txt na raiz do FWH para o log dia a dia.

Totais do TXBrowse em diálogos de recurso

Novo sample samples/ui/xbrowse/brwfooter.prg (+ brwfooter.rc): mostra como colocar um TXBrowse com totais no rodapé dentro de um diálogo criado a partir de um recurso binário (CreateFromResource()): ativar a linha de totais com oBrw:lFooter := .T., definir nFooterType := AGGR_SUM em cada coluna numérica, carregar os dados com SetArray( aData, .T. ) antes de configurar as colunas (SetArray com .T. regenera aCols) e chamar MakeTotals().

Duas armadilhas documentadas: o controle do .rc deve usar a classe de janela "TXBrowse" (registrada por CreateFromResource()); classes como RichEdit20W cuja DLL não está carregada fazem DialogBox() falhar com "Cannot create Dialog Box". E os blocos bStrData devem usar oBrw:nArrayAt — não oBrw:nAt — porque nAt chama ColAtPos() antes de ::aDisplay existir durante INITIATE/ADJUST.

Ao linkar o FWH 26.08 com xHarbour Commercial falhava com Unresolved external _HB_FUN_FW_PALBMPREGISTER / _HB_FUN_FW_PALBMPUNREGISTER (referenciados de Fivehmx.lib(bitmap.obj)) e _HB_FUN_WEBVIEW2_SETBACKGROUNDCOLOR (Fivehmx.lib(twebview2.obj)).

lib\Fivehcm.lib (a lib C para xHB Commercial, VC98) estava desatualizada: era anterior a source/internal/fwpalctl.c (FW_PalBmpRegister / FW_PalBmpUnregister, usados pelo TBitmap com paleta) e ao novo WebView2_SetBackgroundColor() em source/winapi/webview2.c. A lib foi reconstruída com makes/build_fivehcm.ps1. Também foram corrigidos dois bugs que bloqueavam essa reconstrução: include/xhbcompat.h usava HB_EXTERN_BEGIN e long long embora seja incluído forçadamente (-FI) antes de hbapi.h (VC98, C89), e source/internal/twebview/cwebview.cpp usava INVALID_FILE_ATTRIBUTES, que o SDK do VC98 não define. Verificado: makes/xhb_commercial/go.bat linka test.exe sem externos não resolvidos.

TOpenCode — modelos free (OpenCode Zen)

Nova classe TOpenCode (source/classes/topencode.prg): API Zen sem chave (Bearer public). Modelos hy3-free, mimo-v2.5-free, deepseek-v4-flash-free, etc. Send / SendWithSystem síncronos; SendAsync / SendWithSystemAsync com hb_threadStart (compilar com mt). Em rate limit tenta outro modelo. Ficheiros temp únicos e escrita atómica para vários agentes ao mesmo tempo.

cd samples\ai
build_new.bat opencode2 hb32 mt

Ver TOpenCode.

libcurl estático + equipes de agentes no opencode2

TOpenCode fala HTTP com hbcurl e um libcurl estático (Schannel): não é preciso distribuir o libcurl.dll. A pasta 3rdparty/ guarda os fontes do curl (curl.tgz, curl-src/) e os scripts .bat que constroem lib/libcurl_static*.{lib,a} para bcc32, bcc64, msvc32, msvc64 e gcc.

samples/ai/opencode2.prg agora é uma equipe de agentes: "New team" desenha uma equipe especializada a partir da atividade; os agentes se consultam entre si com etiquetas [[ASK:Nome]] e seguem o protocolo saudação → tema → rodadas → proposta. As retentativas usam backoff com cooldown e fallback adaptativo (primeiro o último modelo que respondeu); se a cadeia Zen se esgota, cai para um modelo local via Ollama (ollama:<modelo> em 127.0.0.1:11434). Os envios em curso são gravados em opencode2.json e retomados ao reiniciar.

FWH64: TC5ImgList / TVMenu em Five64.a

TC5ImgList, TVMenu e TVItem entraram em fwh.hbp em 20 de junho de 2026 (32 bits e MSVC64) mas nunca em makes/hb_bcc64/prg_list.txt. O FWH64 (Five64.a / Fivexh64.a) ligava sem essas classes: VMenu falhava com “Class TC5ImgList not found” e no 32 bits funcionava.

Os três PRGs estão agora na lista BCC64. O sample samples/test/vmenu_test.prg compila e corre com build_new.bat vmenu_test hb64. No FWH64 de junho/julho: compile source/classes/tc5imglst.prg na aplicação. Ver TVMenu.

TXBrowse:bLClicked depois de BookMark

TXBrowse:LButtonDown() avalia bLClicked uma vez, depois da mudança de linha (Skip() / BookMark). A correção de abril 2026 do disparo duplo executava o bloco antes do movimento, então oBrw:BookMark ainda era o registro anterior. Colunas SetCheck() no estilo rádio que fazem nSelectedRow := oBrw:BookMark em bLClicked marcavam a linha atual antiga, não a clicada.

bLClicked continua anulado em volta de Super:LButtonDown() para TControl / TWindow não o avaliarem de novo. Sample: samples/system/xbrwin7c.prg. Ver TXBrowse bLClicked.

samples/test/testblur.prg — blur com JPG/PNG

samples/test/testblur.prg demonstra o efeito da biblioteca FWH Blur( hBitmap, nRadius ) (box blur, 0–100, em source/internal/ribbon.c). Antes carregava apenas BMP via PalBmpRead e duplicava o C num #pragma BEGINDUMP. Agora carrega imagens comuns, mostra um slider horizontal visível sob a imagem e liga Blur() a partir das libs FiveHC / FiveC (sample só PRG; Win32 hb_retnl, Win64 hb_retnll).

cd samples\test
build_new.bat testblur hb32
testblur.exe
:: ou: testblur.exe C:\caminho\foto.jpg

Relacionado: FW_ReadImage() / PalBmpDraw(), source/internal/ribbon.c (HB_FUNC( BLUR )), e o sample samples\test\testblu2.prg (blur sobre fundo de XBrowse).