September 2026
Â
- Fixed: TScrollPanel horizontal scroll (
source\classes\scrlpanl.prg ). ThebGotFocus handler 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.prg started 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.prg andmenus\vistamenu.prg . For runtime checks,samples\test\fwunit\run_all.bat builds and runs the console test suites, andsamples\run_fwmaria_ut.bat offline runs the FWMariaConnection tests with no server.
Â
- Fixed: xHarbour + BCC 64 (xb64).
Fivexh64.a was 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 xb64 now lists any source that fails to compile and stops, instead of leaving it out ofFivexh64.a without a word.
Â
- Fixed: FiveWin libs build again with MinGW 32 (
source\internal\remoteview\capture.c definesSM_CXPADDEDBORDER when the SDK headers lack it), and FWMariaDB apps link with xHarbour + MSVC 32 (source\internal\fwmaria.prg uses its ownnxs_crypt there, 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.c now fills with the typed formSMTP:user@domain and 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 leavinglpszAddress empty for the client to resolve (also disables the typed fill). Dual formTO cName, cAddress is 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.prg is 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 ~230x sudoku 4x4 0.99 s ~0.01 s Rebuild
FiveHC.lib andFiveH.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
aRestChain goal lists as variable ids, crashing SolveNQueens (HB_HHASKEY with 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: public header (was MissingSessionID), live free-model catalog (ling-3.0-flash-fin-free default; dead x-preview/hy3/laguna ids removed),nHttpCode fallback 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 ). NewlAutoRefresh DATA (.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 /::aSeries cannot 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_parldef with 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_HGRAY track 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.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_SUM on 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 — becausenAt callsColAtPos() before::aDisplay exists during INITIATE/ADJUST. Numeric cell + footer formatting: do NOT setbStrData on numeric array columns. The defaultbStrData (ArrCell) appliesoCol:cEditPicture to data cells; a custombStrData returning 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 . UsecEditPicture for the cells,cFooterPicture for the footer total (it drops the ".00") andnFootStrAlign to right align it (default is left):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.lib bitmap.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.lib has been rebuilt withmakes\build_fivehcm.ps1 . Two build bugs that had been blocking that rebuild are fixed too:include\xhbcompat.h usedHB_EXTERN_BEGIN /HB_EXTERN_END and"long long" although it is force-included (-FI ) beforehbapi.h , which VC98 (C89) rejects — now plainextern "C" guards andHB_LONGLONG ; andsource\internal\twebview\cwebview.cpp usedINVALID_FILE_ATTRIBUTES , undefined in the VC98 SDK — now guarded with#ifndef .
Verified:makes\xhb_commercial\go.bat compiles and linkstest.exe with 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 frombuild_new.bat opencode1 hb32 mt build_new.bat opencode2 hb32 mtsamples\ai solibcurl.dll is found.
Source:source\classes\topencode.prg (also infwh.hbp andmakes\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.dll to 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.json on 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.a did 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.prg into the app (or upgrade).
Verified:samples\test\vmenu_test.prg builds 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:bLClicked ran before the row change (April 2026 double-fire fix), sooBrw:BookMark was still the previous record. Check columns that assignnSelectedRow := oBrw:BookMark inbLClicked therefore checked the old current row instead of the clicked one.bLClicked is now evaluated once AFTERSkip() /BookMark update, still niled aroundSuper:LButtonDown so 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.h sohb_itemArrayNew /hb_itemReturnRelease /hb_itemRelease have correct pointer prototypes; without them, MSVC/BCC64 treated the return as int and truncatedPHB_ITEM on 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 calculatingbiSizeImage manually 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_DefaultBackgroundColor under the hood. Pass anyRGB() value:Docs:oWebView:SetBackGroundColor( RGB( 240, 240, 240 ) )en/internet/twebview2.html .
Â
- Enhanced:
.claude/skills/edit-strings — new agent skill to editsource\function\strings.prg always 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.dll or 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 .