FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index WhatsNew / Novedades New FTDN October 2026 (FWH 26.10)
Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

New FTDN October 2026 (FWH 26.10)

Posted: Fri Oct 09, 2026 05:27 PM

October 2026

  • New: QR code reading in pure Harbour, with no C code and no FWH dependency: samples\misc\qrread.prg, the counterpart of qrcode.prg. QRReadFile( cBmp ) reads BMP images (1, 4, 8, 24 and 32 bit); QRDecodeGray( aGray, nW, nH ) and QRDecodeMatrix( aMat, nDim ) decode a gray array or a sampled module matrix. They return NIL or a hash with the text, version, error correction level and mask. Numeric, alphanumeric, byte and kanji modes are supported, with Reed-Solomon error correction for damaged codes. When linking a standalone EXE with FWH, add #include "FiveWin.ch" to the main program (or the appropriate GT REQUEST) to avoid an unresolved HB_GT_WIN symbol. Thanks to Jimmy for the challenge and the linking feedback. Forum discussion.
  • Fixed: TSocket (source\classes\tsocket.prg): SendData() stops retrying when SocketSend() reports a broken socket, instead of staying in an endless send loop. Temporary WSAEWOULDBLOCK errors still retry.
  • Enhanced: samples\whatsapp\waopencode.prg listens only on localhost, requires a per-run Bearer token (or WAOC_TOKEN), and rejects external clients, browser Origin requests and unexpected Host values. The waopencode.request envelope preserves the full conversation, tool-call IDs and tool results. The README and opencode.json explain setup and the reply contract. This is a supervised proof of concept, not a production integration: automating WhatsApp Web can lead to account restrictions.
  • Fixed: samples\whatsapp\waopencode.prg now links with xHarbour. Local adapters supply environment, value-string, hash and millisecond-clock operations without changing the bridge protocol or server behavior.
  • Updated: TWebView2 documentation (EN/ES/PT) lists every class method with its signature and return value, and every bOn* callback with its arguments. bOnConsole( cJson, hWebView ) and EnableConsole( lOnOff ), available since FWH 26.09 day 12, include JSON payloads, an example, navigation reinjection and older-library checks. Asynchronous PNG/PDF results and the limits of browsing-data cleanup, host objects and context-menu filtering are explained. Library behavior is unchanged.
  • Fixed: TGet (source\classes\tget.prg): password GETs no longer flicker when redrawn. DispText() sets the window text only when it has changed.
  • New: PrinterKeepSetup( lOn ) keeps the printer chosen in PrinterSetup() or PageSetup() for the application's following print jobs. It is off by default, preserving the existing behavior. If the kept printer is unavailable, FWH falls back to the Windows default printer. Cancelling the setup dialog changes nothing, and PrinterResetSetup() forgets the kept printer. Example: PrinterKeepSetup( .T. ). Documented in TPrinter (EN/ES/PT).
  • Fixed: TOpenCode (source\classes\topencode.prg): IsRunning() no longer stays .T. when an asynchronous request ends without leaving a result, for example when the temporary folder is not writable. It returns .F. and GetValue() reports the error. New DATA lVerifySSL (.T. by default) verifies the server certificate in every request, including ListModels(). Creating an object no longer reads OpenCode's auth.json. Documentation updated in EN/ES/PT.
  • Fixed: TRBtn (source\classes\trbtn.prg) releases the previous bitmap and palette when LoadBitmaps() changes the button image. Gradient buttons also release the temporary bitmap used to create their background brush, avoiding a GDI bitmap leak on repaint. Thanks to Ubiratan for reporting both issues.
  • Enhanced: TOpenCode support for the OpenCode Zen free tier was updated and verified on October 1. The default model is mimo-v2.6-flash-free. Requests include the OpenCode headers and streaming format required by that service; SSE responses are converted back to completion JSON so GetValue() and GetUsage() keep working. The fallback list was refreshed to mimo-v2.5-free, space-bunny-free, big-pickle and nemotron-3-ultra-free. New sample samples\ai\opencode_mimo.prg was verified end to end. Free-tier availability is best effort and may change.
  • New: samples\whatsapp\wawebview.prg shows WhatsApp Web inside a TWebView2, with a live MSG IN / MSG OUT / REACT log. Scan() and SendToFWH() read the conversation by DOM geometry, decode emoji rendered as images, send CP1252 text with <U+XXXX> tokens for non-ACP characters, and inject typed text into the composer.
  • Enhanced: samples\whatsapp\wawebview.prg uses a RICHEDIT5 log with RTF formatting: incoming lines in bold, WhatsApp bold text in green and italics in orange. Chat history is seeded silently so only new messages and reactions reach the log. Emoji are drawn as glyphs, with <U+XXXX> codes kept alongside. Clicking "leer mas" in WhatsApp reads the complete message into MSG IN* / MSG OUT*. The status line is below the buttons.
  • New: samples\whatsapp\waopencode.prg runs a local OpenAI-compatible server on port 8787, relaying OpenCode requests to a prepared WhatsApp contact and returning the contact's reply. Configure a custom provider with baseURL http://127.0.0.1:8787/v1 and model wa-bridge. Title-generation requests are answered locally. Requests time out with HTTP 504; a retry reattaches to the pending request instead of sending it again. The default timeout is 300 seconds and the transported request limit is 60000 bytes. This example requires an agreed reply contract and supervised use.
  • Enhanced: samples\whatsapp\waopencode.prg returns tool_calls when the contact replies with a pure JSON tool-call object, allowing OpenCode to execute the selected tool. Both JSON and SSE responses are supported. The offline test sample samples\whatsapp\tests\run_tests.ps1 checks routes, local title answers, request lengths, queueing, deduplication, timeout reattachment and SSE. Debug injection is available only with WAOC_TEST=1.
Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

Re: New FTDN October 2026 (FWH 26.10)

Posted: Sat Oct 10, 2026 03:36 AM

Octubre 2026

  • Nuevo: lectura de c贸digos QR en Harbour puro, sin c贸digo C y sin depender de FWH: samples\misc\qrread.prg, la contraparte de qrcode.prg. QRReadFile( cBmp ) lee im谩genes BMP (1, 4, 8, 24 y 32 bits); QRDecodeGray( aGray, nW, nH ) y QRDecodeMatrix( aMat, nDim ) decodifican un array de grises o una matriz de m贸dulos muestreada. Devuelven NIL o un hash con el texto, la versi贸n, el nivel de correcci贸n de errores y la m谩scara. Se admiten los modos num茅rico, alfanum茅rico, byte y kanji, con correcci贸n de errores Reed-Solomon para c贸digos da帽ados. Al enlazar un EXE independiente con FWH, a帽ade #include "FiveWin.ch" al programa principal (o el REQUEST de GT adecuado) para evitar un s铆mbolo HB_GT_WIN sin resolver. Gracias a Jimmy por el reto y por sus comentarios sobre el enlazado. Discusi贸n en el foro.
  • Corregido: TSocket (source\classes\tsocket.prg): SendData() deja de reintentar cuando SocketSend() informa de un socket roto, en lugar de quedarse en un bucle de env铆o sin fin. Los errores temporales WSAEWOULDBLOCK se siguen reintentando.
  • Mejorado: samples\whatsapp\waopencode.prg escucha solo en localhost, exige un token Bearer por ejecuci贸n (o WAOC_TOKEN) y rechaza clientes externos, peticiones de navegador con Origin y valores Host inesperados. El envelope waopencode.request conserva la conversaci贸n completa, los ID de las llamadas a herramientas y sus resultados. El README y opencode.json explican la configuraci贸n y el contrato de respuesta. Es una prueba de concepto supervisada, no una integraci贸n de producci贸n: automatizar WhatsApp Web puede provocar restricciones en la cuenta.
  • Corregido: samples\whatsapp\waopencode.prg ahora enlaza con xHarbour. Adaptadores locales aportan las operaciones de entorno, cadenas de valores, hash y reloj en milisegundos, sin cambiar el protocolo del puente ni el comportamiento del servidor.
  • Actualizado: la documentaci贸n de TWebView2 (EN/ES/PT) enumera todos los m茅todos de la clase con su firma y valor de retorno, y todos los callbacks bOn* con sus argumentos. bOnConsole( cJson, hWebView ) y EnableConsole( lOnOff ), disponibles desde FWH 26.09 d铆a 12, incluyen cargas JSON, un ejemplo, reinyecci贸n en la navegaci贸n y comprobaciones para bibliotecas antiguas. Se explican los resultados as铆ncronos de PNG/PDF y los l铆mites de la limpieza de datos de navegaci贸n, los objetos host y el filtrado del men煤 contextual. El comportamiento de la biblioteca no cambia.
  • Corregido: TGet (source\classes\tget.prg): los GET de contrase帽a ya no parpadean al redibujarse. DispText() cambia el texto de la ventana solo cuando ha cambiado.
  • Nuevo: PrinterKeepSetup( lOn ) mantiene la impresora elegida en PrinterSetup() o PageSetup() para los siguientes trabajos de impresi贸n de la aplicaci贸n. Est谩 desactivado por defecto, con lo que se conserva el comportamiento actual. Si la impresora guardada no est谩 disponible, FWH usa la impresora predeterminada de Windows. Cancelar el di谩logo de configuraci贸n no cambia nada, y PrinterResetSetup() olvida la impresora guardada. Ejemplo: PrinterKeepSetup( .T. ). Documentado en TPrinter (EN/ES/PT).
  • Corregido: TOpenCode (source\classes\topencode.prg): IsRunning() ya no se queda en .T. cuando una petici贸n as铆ncrona termina sin dejar resultado, por ejemplo cuando la carpeta temporal no es escribible. Devuelve .F. y GetValue() informa del error. Nuevo DATA lVerifySSL (.T. por defecto) que verifica el certificado del servidor en todas las peticiones, incluida ListModels(). Crear un objeto ya no lee el auth.json de OpenCode. Documentaci贸n actualizada en EN/ES/PT.
  • Corregido: TRBtn (source\classes\trbtn.prg) libera el bitmap y la paleta anteriores cuando LoadBitmaps() cambia la imagen del bot贸n. Los botones con degradado tambi茅n liberan el bitmap temporal usado para crear el pincel de fondo, evitando una fuga de bitmaps GDI al repintar. Gracias a Ubiratan por informar de ambos problemas.
  • Mejorado: se actualiz贸 y verific贸 el 1 de octubre el soporte de TOpenCode para el nivel gratuito de OpenCode Zen. El modelo por defecto es mimo-v2.6-flash-free. Las peticiones incluyen las cabeceras de OpenCode y el formato de streaming que exige ese servicio; las respuestas SSE se convierten de nuevo a JSON de completion para que GetValue() y GetUsage() sigan funcionando. La lista de reserva se renov贸 con mimo-v2.5-free, space-bunny-free, big-pickle y nemotron-3-ultra-free. El nuevo ejemplo samples\ai\opencode_mimo.prg se verific贸 de extremo a extremo. La disponibilidad del nivel gratuito es de mejor esfuerzo y puede cambiar.
  • Nuevo: samples\whatsapp\wawebview.prg muestra WhatsApp Web dentro de un TWebView2, con un registro en vivo de MSG IN / MSG OUT / REACT. Scan() y SendToFWH() leen la conversaci贸n por geometr铆a del DOM, decodifican los emoji renderizados como im谩genes, env铆an texto CP1252 con tokens <U+XXXX> para los caracteres fuera de la ACP e inyectan el texto escrito en el cuadro de composici贸n.
  • Mejorado: samples\whatsapp\wawebview.prg usa un registro RICHEDIT5 con formato RTF: las l铆neas entrantes en negrita, el texto en negrita de WhatsApp en verde y las cursivas en naranja. El historial del chat se carga en silencio para que al registro solo lleguen los mensajes y reacciones nuevos. Los emoji se dibujan como glifos, conservando al lado los c贸digos <U+XXXX>. Al pulsar "leer mas" en WhatsApp se lee el mensaje completo en MSG IN* / MSG OUT*. La l铆nea de estado queda debajo de los botones.
  • Nuevo: samples\whatsapp\waopencode.prg ejecuta un servidor local compatible con OpenAI en el puerto 8787, que reenv铆a las peticiones de OpenCode a un contacto de WhatsApp preparado y devuelve la respuesta del contacto. Configura un proveedor personalizado con baseURL http://127.0.0.1:8787/v1 y modelo wa-bridge. Las peticiones de generaci贸n de t铆tulos se responden localmente. Las peticiones expiran con HTTP 504; un reintento se reengancha a la petici贸n pendiente en lugar de enviarla de nuevo. El tiempo de espera por defecto es de 300 segundos y el l铆mite de la petici贸n transportada es de 60000 bytes. Este ejemplo requiere un contrato de respuesta acordado y uso supervisado.
  • Mejorado: samples\whatsapp\waopencode.prg devuelve tool_calls cuando el contacto responde con un objeto JSON puro de llamada a herramienta, permitiendo que OpenCode ejecute la herramienta elegida. Se admiten respuestas JSON y SSE. El ejemplo de prueba sin conexi贸n samples\whatsapp\tests\run_tests.ps1 comprueba rutas, respuestas locales de t铆tulos, longitudes de petici贸n, cola, deduplicaci贸n, reenganche tras timeout y SSE. La inyecci贸n de depuraci贸n solo est谩 disponible con WAOC_TEST=1.

Continue the discussion