September 2026
- Fixed: TScrollPanel horizontal scroll (
source\classes\scrlpanl.prg). ThebGotFocushandler thatSetRange()assigns to tab-stop controls called::ControlIntoView()after a horizontal scroll, pulling the panel back to the focused control. It already skipped this after a vertical scroll; it now skips it after a horizontal scroll too (lHScrolled). No changes required in user code.
- Fixed:
IsWindows10()now reads the build number, the same wayIsWindows11()does, instead of the registry product name, which says "Windows Server" on server editions:IsWindows10()wrongly returned.F.on Windows Server 2016/2019/2022.
- More tests: the fwunit console suite also covers the credential cipher
Encrypt()/Decrypt()(source\internal\encript.c, used by FWMaria connections and FiveDBU) with fixed vectors that pin the algorithm, and the MAPI address-fill toggleSetMapiAddrFill(). The build check now runs the console test suites (fwunit and the offline FWMariaConnection tests) on more build variants, not only on the 32-bit MSVC one.
- Fixed:
samples\misc\UTestmnu.prgstarted with a UTF-8 byte-order mark that the xHarbour compiler rejects (error E0016 at line 1). The BOM is gone; the file stays UTF-8 and builds with Harbour and xHarbour again.
- New:
samples\menus\vistamenu.prg, a minimal TVistaMenu example (lateral menu with three items): this class had no sample to build. It joins the build-check sample set, built per variant withsamples\build_new.bat:database\fivedbu,fwmaria_ut.prg,test\testmail.prg,web\webview.prg,RemoteView\testrv.prg,database\fivedburv.prg,misc\UTestmnu.prgandmenus\vistamenu.prg. For runtime checks,samples\test\fwunit\run_all.batbuilds and runs the console test suites, andsamples\run_fwmaria_ut.batoffline runs the FWMariaConnection tests with no server.
- Fixed: xHarbour + BCC 64 (xb64).
Fivexh64.awas missing everything insource\function\harbour.prg:ASend(),OSend(),OClone(),ParamCount(),GetLocal(),MemUsed(),nStatics(),OleInvoke(),hb_oleParam(),hb_extIsNil()and more, so xHarbour 64-bit apps failed to link with errors like"Unresolved external 'HB_FUN_ASEND'". TVistaMenu (source\classes\vistamnu.prg) was missing from it too. Both now compile with BCC 64, andmfwh_new.bat xb64now lists any source that fails to compile and stops, instead of leaving it out ofFivexh64.awithout a word.
- Fixed: FiveWin libs build again with MinGW 32 (
source\internal\remoteview\capture.cdefinesSM_CXPADDEDBORDERwhen the SDK headers lack it), and FWMariaDB apps link with xHarbour + MSVC 32 (source\internal\fwmaria.prguses its ownnxs_cryptthere, since the xHarbour MSVC lib exports it with C++ linkage:"unresolved _nxs_crypt", plus a local Adler-32 because xHarbour has nohb_adler32()).
Fixed:
MAPISendMail()/ DEFINE MAIL when TO is given with a single parameter (TO cEmail): the 26.07 fallback copied the bare display name intolpszAddress(no type prefix), which made Outlook build a one-off recipient and Exchange Online never deliver the attachment ("attachment never downloads, try again later").mapi.cnow fills with the typed formSMTP:user@domainand only when the name contains '@' (looks like an e-mail); the bare name is left alone otherwise. New optionalSetMapiAddrFill( .F. )restores the pre-26.07 behaviour of leavinglpszAddressempty for the client to resolve (also disables the typed fill). Dual formTO cName, cAddressis unchanged. Self-registers in Harbour dynsym sohb_IsFunction( "SETMAPIADDRFILL" )detects it.
Verified with spymapi32.dll(samples\test\testmapiaddr\):Case Result single [SMTP:someone@example.com]dual [someone@example.com]untouchedSetMapiAddrFill(.F.)address=<NULL>Thanks for the detailed report.
- Enhanced: TWebView2 (
source\classes\twebview2.prg,source\internal\twebview\cwebview.cpp,source\winapi\webview2.c,include\WebView2.ch) grows from 10 to 40+ natives.- New methods:
NavigateEx( cUrl, cMethod, cHeaders, cBody )(native POST), GoBack/GoForward/Reload/Stop, CanGoBack/CanGoForward, GetSource, GetDocumentTitle, GetBrowserVersion, Print, SetZoomFactor/GetZoomFactor, SetDefaultScriptDialogs, SetDefaultContextMenus/SetContextMenuExclude, CapturePreview (async PNG) / PrintToPdf (async PDF), Add/RemoveWebResourceRequestedFilter (block with.T.), ClearSession/ClearBrowsingData, EnableConsole (console.*interception), CloseWebView, Reinitialize, SetSizeRatio, Diag/Reregister diagnostics. - New
bOn*events: NavigationStarting (cancelable), SourceChanged, HistoryChanged, DocumentTitleChanged, NewWindow, Permission (allow/deny), FullScreen, ProcessFailed, FrameNavStarting/Completed, Console. - Fixed
End()registry leak. Default user data folder%LOCALAPPDATA%\FWH_webview2_UserData. New samplesamples\webview2\(externalpulse.html, unattended AUTO mode). Fully backward compatible. - Known limits:
AddHostObject()needs IDispatch; per-item menu filtering and full-profile wipe need a newer WebView2 SDK.
- New methods:
Enhanced: TProlog C core in
source\function\prolog.c(trail + owned term heap).TProlog.prgis the Harbour facade (PL_New/PL_Consult/PL_Query/PL_Queens). Same 11/11 examples. hb32 vs the previous Harbour interpreter:Benchmark Previous interpreter C core Speedup 8-queens all 92 sols 10.77 s 0.047 s ~230xsudoku 4x4 0.99 s ~0.01 sRebuild
FiveHC.libandFiveH.lib.
New: class TProlog (
source\classes\tprolog.prg) - Prolog engine embedded in Harbour/FiveWin. Facts + rules with backtracking, unification (optional occurs-check), cut (!), negation (not/\+),findall/3, arithmetics (is/2,=:=/2,=\=/2,</2...) and fast native list builtins (member, append, length, select, permutation, numlist, alldiff, sort, between, functor, arg,copy_term,=..) aimed at the hard problems:SolveNQueens(), zebra/Einstein, Sudoku, graph paths with cycle control.Query()returns an array of hashes{ VarName => "term" }.
Samples:samples\ai\tprolog.prg(demo) andsamples\ai\tprologbench.prg(baseline). hb32 baseline, two clocks (GetTickCount/Seconds):Benchmark Time 8-queens first 0.58 s (3129 steps, ~184 us/step)8-queens all 92 sols 10.77 s zebra 0.13-0.16 s sudoku 4x4 0.99 s Rebuild libs with
mfwh_new.bat <variant>.
- Fixed: TProlog plRootsUser treated
aRestChaingoal lists as variable ids, crashing SolveNQueens (HB_HHASKEYwith an array key).
- Fixed: TProlog bench SEND+MORE loads
samples\prolog\money.pl(embedded"//"and"=\="in .prg strings broke Consult). DemoQueryOne()no longer indexes a NIL hash.
- New: sample
samples\ai\plpad.prg— paste or open a .pl, Consult with TProlog, Query/QueryOne. Default source is Jung's synchronicity concept graph (CRLF-formatted). Consult usesTMultiGet:cText(Assign()does not exist on memo GETs).
- Enhanced:
samples\ai\plpad.prg- TWindow + TScintilla (Prolog highlighting), TWebView2/three.js graph ofnode()/edge()with click-to-select both ways, vertical splitter and resize.samples\ai\plpad_graph.html. File is CP1252.
- Enhanced:
samples\ai\plpad.prg- click onedge()/labeled_edge()highlights the 3D edge (and vice versa). Query is an editable combobox with the usual graph queries.
- Enhanced:
samples\ai\plpad.prg- Explicar button (TOpenCode) describes the query: problem, meaning and solution. File is CP1252, not UTF-8.
- Fixed: class TOpenCode (
source\classes\topencode.prg) talks to Zen again:x-opencode-session: publicheader (was MissingSessionID), live free-model catalog (ling-3.0-flash-fin-freedefault; dead x-preview/hy3/laguna ids removed),nHttpCodefallback via return value, success on parsed choices.
Verified:Send()+GetValue()returns "4" (samples\ai\test_oc_class.prg). RebuildFiveH.lib.
August 2026
- Fixed: TGraph compiles with xHarbour 0.82 again (
source\classes\tgraph.prg). Replaced Harbour-only constructs with portable ones: TRY/CATCH/END -> BEGIN SEQUENCE/RECOVER/END SEQUENCE, STATIC array initializer withRGB()calls -> runtime init under__XHARBOUR__(GraphInitColors()), and the<|hDC|...multi-statement block with RETURN inSave2Bmp()->{|hDC|...}helper (GraphPaintToDC()). Harbour path unchanged.
- New: TGraph auto-refresh (
source\classes\tgraph.prg). NewlAutoRefreshDATA (.T.by default): any data change through AddSerie, SetYVals, SelSerie, SelPeriod,aTable, ResizeSerie, SetValue, SetSerieValues, SetData, SetXYValue, SetXYData, DelSerie or ClearSeries repaints the chart automatically viaDoRefresh(). Group batch updates withBeginUpdate()...EndUpdate()for a single repaint at the end, or setlAutoRefresh := .F.and refresh manually withUpdate()/DoRefresh().
Note: direct assignments to::aData/::aSeriescannot be intercepted — use theSet*()methods or callRefresh()afterwards. New sample:samples\graphics\graphkpi.prg— two TXBrowse controls (contexts + prompts, callCreateFromCode()on code-created browses) with KPI columns and footer totals, a docked buttonbar on top, a statusbar showing the selected KPIs, and a splitter-resizable TGraph that follows navigation and metric changes without rebuilding the control.
Docs: en/es/ptui/tgraph.html.
- Enhanced: xHarbour compat shims in
include\fwhxhb.h(hb_parldefwith default,hb_retclen_buffer) and sample build banners bumped to 26.08; all compiler-variant libs rebuilt.
- New: TXBrowse cell chart type "GAUGE" (
TXBrwColumn:DrawChartInRect,source\classes\xbrowse.prg). Additive mode meant for a cell with a single numeric value, where the classic "BAR" rendering (several side-by-side series) looks like a solid block filling the whole cell. GAUGE draws a thinCLR_HGRAYtrack with 4px side padding centered vertically (30% insets top/bottom), a proportional fill bar in the series color and a "NN.N%" label painted over it with transparent background. The scale isoCol:nChartMaxVal, automatically raised to the greatest value found. Usage:"LINE" and "BAR" renderings are unchanged.Code: Select all | Expand
oCol:aChartCols := { {|| nPct } } oCol:cChartType := "GAUGE" oCol:aChartColors := { CLR_HBLUE }
Docs: en/es/ptui/txbrowse.html#cell-charts.
- New sample:
samples\ui\xbrowse\brwfooter.prg+ .rc — TXBrowse with footer totals inside a dialog created from a binary resource (CreateFromResource). Enable the footer row withoBrw:lFooter := .T., setnFooterType := AGGR_SUMon the numeric columns, load the data withSetArray( aData, .T. )BEFORE configuring the columns (SetArray with.T.regeneratesaCols) and callMakeTotals(). Two pitfalls documented: the control in the .rc must use window class "TXBrowse" (registered by CreateFromResource; classes like "RichEdit20W" whose DLL is not loaded make DialogBox fail with "Cannot create Dialog Box"), and column data blocks should useoBrw:nArrayAt— notoBrw:nAt— becausenAtcallsColAtPos()before::aDisplayexists during INITIATE/ADJUST. Numeric cell + footer formatting: do NOT setbStrDataon numeric array columns. The defaultbStrData(ArrCell) appliesoCol:cEditPictureto data cells; a custombStrDatareturning the raw number is shown with plainStr()and the picture is ignored. Totals are unaffected either way becauseMakeTotals()reads the raw value viabEditValue(::Value), not viabStrData. UsecEditPicturefor the cells,cFooterPicturefor the footer total (it drops the ".00") andnFootStrAlignto right align it (default is left):Code: Select all | Expand
oCol:cEditPicture := "999,999,999" oCol:cFooterPicture := "999,999,999" oCol:nFootStrAlign := AL_RIGHT
- Enhanced:
FW_SetDarkMode()now themes plain TWindow apps too, not only TDialog. NewTWindow:SetDarkMode()(source\classes\window.prg) cascades the theme to all controls and to the buttonbar (TBar:SetDarkMode), andTWindow:Activate()auto-applies the global dark mode to new windows viaFW_WndDarkMode()(source\classes\dialog.prg), mirroringTDialog:Initiate.
Sample:samples\ai\opencode3.prg(3 TOpenCode agents talking, MT).
- Fixed: STATIC declaration follows executable statement error in FIVEWIN.CH — moved static
aFwStack/_fwhtmp_declarations to the top of the header (before any preprocessor-generated code).
- Fixed: xHarbour Commercial link errors with FWH 26.08: "Unresolved external
_HB_FUN_FW_PALBMPREGISTER/_HB_FUN_FW_PALBMPUNREGISTER(referenced fromFivehmx.libbitmap.obj) and_HB_FUN_WEBVIEW2_SETBACKGROUNDCOLOR(twebview2.obj)".lib\Fivehcm.lib(the xHB Commercial C lib, VC98) was stale: it predatedsource\internal\fwpalctl.c(FW_PalBmpRegister/FW_PalBmpUnregister, used by the palette-aware TBitmap) and the newWebView2_SetBackgroundColor()insource\winapi\webview2.c, both already referenced by the PRG lib.Fivehcm.libhas been rebuilt withmakes\build_fivehcm.ps1. Two build bugs that had been blocking that rebuild are fixed too:include\xhbcompat.husedHB_EXTERN_BEGIN/HB_EXTERN_ENDand"long long"although it is force-included (-FI) beforehbapi.h, which VC98 (C89) rejects — now plainextern "C"guards andHB_LONGLONG; andsource\internal\twebview\cwebview.cppusedINVALID_FILE_ATTRIBUTES, undefined in the VC98 SDK — now guarded with#ifndef.
Verified:makes\xhb_commercial\go.batcompiles and linkstest.exewith 0 unresolved externals.
Docs: en/es/ptgetting-started/whatsnew-26.08.html#xhb-commercial-link.
- New: Class TOpenCode — free AI models via the OpenCode Zen API (https://opencode.ai/zen/v1/chat/completions). No API key: Authorization Bearer public. Models:
hy3-free,mimo-v2.5-free,deepseek-v4-flash-free,nemotron-3-ultra-free,nemotron-3.5-lightning-free,laguna-s-2.1-free. Send / SendWithSystem (sync) and SendAsync / SendWithSystemAsync (hb_threadStart, requires MT VM). Rate-limit fallback to another free model. Concurrent SendAsync uses unique temp names and write-to-.part + rename soIsRunning()never reads a partial file.
Samples:samples\ai\opencode1.prg(3 agents in parallel),samples\ai\opencode2.prg+opencode2.html(TWebView2 WhatsApp-style project agents: list left, chat right, add/edit roles). Build:(mt required: hbvmmt). Run fromCode: Select all | Expand
build_new.bat opencode1 hb32 mt build_new.bat opencode2 hb32 mtsamples\aisolibcurl.dllis found.
Source:source\classes\topencode.prg(also infwh.hbpandmakes\hb_bcc64\prg_list.txt).
Docs: en/es/ptgetting-started/whatsnew-26.08.html#topencode,internet/topencode.html,samples-guide.html.
- New: opencode2 — project agent teams that talk to each other; static libcurl build workspace in
3rdparty\.- TOpenCode transport is now hbcurl with a static libcurl (Schannel), 90 s timeouts: no
libcurl.dllto ship. (WinHTTP COM killed MT apps on the second POST; curl does not.) samples\ai\opencode2.prg: "New team" analyzes the activity and designs a specialized team (leader level 1 + reports/leads hierarchy). Agents consult each other with[[ASK:Name]]...[[/ASK]]tags and run a greet -> topic -> talk rounds -> proposal protocol. Retry backoff with cooldown and UI waitstat; adaptive fallback (last good model first, 3 retries); when the Zen free chain is exhausted it falls back to a local model via Ollama (ollama:<model>at127.0.0.1:11434, OpenAI-compatible endpoint). In-flight sends are persisted toopencode2.jsonon every launch / retry and resumed on the next start (ResumePending): nothing is lost. Domain knowledge (oc2_knowledge.txt): CFO authorizes POs with its CMF (CMI is strategic) and seeks financing (other people's money); ISO 9001 + ISO 28000 with per-company process maps; business roles validate and certify in SANDBOX; normalized job titles (never "Jefe").3rdparty\: curl sources (curl.tgz,curl-src\) and the batch scripts (bld32/bld_bcc/bld_msvc, cfg32/cfg64,tlib_*,smoke_*) that buildlib\libcurl_static*.{lib,a}for bcc32/bcc64/msvc32/msvc64/gcc. Build outputs (curl-build-*) are git-ignored.
- TOpenCode transport is now hbcurl with a static libcurl (Schannel), 90 s timeouts: no
- Fixed: FWH64 (Harbour/xHarbour + BCC64)
Five64.a/Fivexh64.adid not contain TC5ImgList, TVMenu or TVItem. They were infwh.hbp(32-bit and MSVC64) since June 20 but never added tomakes/hb_bcc64/prg_list.txt. VMenu on FWH64 therefore failed with "Class TC5ImgList not found" while 32-bit was fine.
Workaround for June/July FWH64: compilesource\classes\tc5imglst.prginto the app (or upgrade).
Verified:samples\test\vmenu_test.prgbuilds and runs with hb64 (TC5ImgList pulled fromFive64.a).
Build:build_new.bat vmenu_test hb64.
Docs: en/es/ptgetting-started/whatsnew-26.08.html#fwh64-tc5imglst,reference/tvmenu.html.
- Fixed:
TXBrowse:bLClickedran before the row change (April 2026 double-fire fix), sooBrw:BookMarkwas still the previous record. Check columns that assignnSelectedRow := oBrw:BookMarkinbLClickedtherefore checked the old current row instead of the clicked one.bLClickedis now evaluated once AFTERSkip()/BookMark update, still niled aroundSuper:LButtonDownso it does not fire twice.
Sample:samples\system\xbrwin7c.prg.
Auto-test:xbrchkbm.prg.
Docs: en/es/ptgetting-started/whatsnew-26.08.html#xbrowse-blclicked,ui/txbrowse.html#blclicked.
- Enhanced:
samples\test\testblur.prg— load BMP/JPG/JPEG/PNG (not BMP-only). UsesFW_ReadImage()with FreeImage/GDI+ fallbacks; DEFINE DIALOG + TRUEPIXEL so the image and horizontal blur slider (0–100) stay visible.
Optional CLI:testblur.exe path\to\image.jpg.
Build:build_new.bat testblur hb32.
Docs: en/es/ptgetting-started/whatsnew-26.08.html#testblur,samples-guide.html.
- Enhanced:
samples\test\testblur.prg— uses FWH libraryBlur()(ribbon.c) instead of a duplicate embedded C#pragma BEGINDUMP. Sample is pure PRG: loads the image, shows the slider, callsBlur( hBmp, nRadius )from the linked FiveHC / FiveC libs (Win32hb_retnl/ Win64hb_retnll). Same UI as day 11 (JPG/PNG + TRUEPIXEL dialog).
Build:build_new.bat testblur hb32.
Docs: en/es/ptgetting-started/whatsnew-26.08.html#testblur,samples-guide.html.
- Fixed:
samples\misc\dshow.prg— 64-bit Harbour crash (ACCESS_VIOLATION) on Connect. Embedded C (#pragma BEGINDUMP) now includeshbapiitm.hsohb_itemArrayNew/hb_itemReturnRelease/hb_itemReleasehave correct pointer prototypes; without them, MSVC/BCC64 treated the return as int and truncatedPHB_ITEMon x64 insideMfCamStatus().
Verified:build_new.bat dshow hb64/ hm64 (preview OK).
Docs: en/es/ptgetting-started/whatsnew-26.07.html#dshow-webcam,en/getting-started/samples-guide.html.
- New:
samples\tgauge— TDashGauge semicircular dashboard gauge control. Custom TControl subclass with double-buffered GDI rendering (thick arcs, prediction needle, center dot). Interactive mouse: left-drag moves the active zone, right-click cycles zones (Goal/Actual/Prediction), mouse wheel adjusts value by 1% per notch.
Build:build_new.bat tgauge hb32.
- New:
samples\emoji- Color Emoji test suite demonstrating Direct2D-rendered Unicode emoji in FWH controls: menus, toolbar buttons (TBtnBmp), BITMAP controls on different backgrounds (gray/white/red), and popup menus. Renders emoji at 16/24/32/48/64/128px using Segoe UI Emoji via Direct2D + DirectWrite + WIC.
Build:build_emoji.bat(hm64).
- Fixed:
source\winapi\dibbmp.c-isalphabmp()now falls back to calculatingbiSizeImagemanually when the driver returns 0, preventing the alpha-channel detection loop from being skipped on some bitmap formats.
- Enhanced: TWebView2 — new
SetBackGroundColor( nRgb )method to set the initial background color before HTML content loads, eliminating the white flash. UsesICoreWebView2Controller2::put_DefaultBackgroundColorunder the hood. Pass anyRGB()value:Docs:Code: Select all | Expand
oWebView:SetBackGroundColor( RGB( 240, 240, 240 ) )en/internet/twebview2.html.
- Enhanced:
.claude/skills/edit-strings— new agent skill to editsource\function\strings.prgalways preserving CP1252 encoding. Documents why CP1252 is required (Harbour expects single-byte accented chars), provides PowerShell helper for full rewrites, and verification steps.
- Fixed:
source\function\strings.prg— reorganized translation strings, preserved CP1252 encoding (no UTF-8 BOM, accented chars as single bytes).
- Fixed:
source\classes\folder.prg,tfoldex.prg— page changes now evaluate the pending VALID of the control with focus on the current page (TFolder and TFolderEx). Previously, clicking another tab (or pressing Ctrl+Tab) hid the current page before the active control lost focus, so its VALID was never evaluated and the variable kept the new value anyway. NowSetOption()calls the focused control'slValid()first; if it returns.F.the page change is cancelled and focus stays on the control. This covers tab clicks, Ctrl+Tab and Alt+hotkey navigation.
Docs: en/es/ptui/tfolder.html,ui/tfolderex.html.
- Enhanced:
samples\misc\dshow.prg— TWebCam-style API on Media Foundation. New TMfWebCam class (named to avoid clashing with TWebcam in the FWH libs):Connect()/Disconnect(),Clipboard( oBmp ),Save( oBmp, cFile, nQuality )(BMP direct, JPG/PNG/GIF/TIF via GDI+),Source( nProperty, nValue, lAuto )(brightness, contrast, exposure, white balance, zoom, pan, tilt, focus, gain, backlight compensation via IAMVideoProcAmp / IAMCameraControl),Format()(enumerates/selects camera resolutions),GetStatus()andResize( nW, nH, lSetFormat ). Still self-contained: MF/COM resolved at runtime (ole32, mfplat, mf, mfreadwrite), nomfcam.dllor MF SDK needed.
Build:build_new.bat dshow hb64/ hm64 / xb32 / xhbc.
- Enhanced:
samples\DesktopWeb— form designer input types + HTTP port 2222. Grid columns support control types text, money, select (combobox), checklist and checkbox; options configured in the designer. Default HTTP port 2222, configurable via admin Edit app (restart to apply).
- Enhanced:
samples\DesktopWeb— docked windows use painel-web aesthetics. Appointments, balance and meta screens share the floating-panel look: blue title bar, multi-layer shadow, footer with record count and icon buttons (same layout as Cadastro / painel-web).
Build:samples\DesktopWeb\build.bat.