13. Release notes #
← Migrating from 4.0 to 5.0 · Contents · AI assistant →
A version you own never loses its components: 5.0 contains the thirty-seven from 1.0 to 4.0, and a key whose maintenance covers the date of your build compiles with the latest DLL — see License.
5.0 — November 2026 #
Ten components: data entry, data, charts, planning, menus and media #
- Angular gauge — a dial gauge: needle, filled arc or marker, ranges coloured by their tone, ticks, target, a value the user can set with the mouse and the keyboard.
- Carousel — an iTunes-style carousel: covers in relief (Cover Flow), a flat strip or a stack, swiped with inertia, with the keyboard, the mouse wheel or in autoplay; each item is a picture, a rich text or a card written by a template, added by hand or read from a DataStore.
- Context menu — a native context menu built entry by entry, in cascades, with icons, check marks and radio groups, opened at the cursor, under a control or at a point of the screen.
- Form — a data-entry form in a single component: folding sections, twelve field types (text, number, switch, list, date, colour, tags, rating…), validation, masks, and reading or writing a DataWindow row.
- Gantt chart — a Gantt chart: tasks and folding summaries, milestones, dependencies, critical path, scales from day to quarter, dragging and resizing with the mouse, filled from a DataStore.
- Kanban board — a kanban board: cards dragged from one column to another, work-in-progress limits, tags, due dates and avatars, folding columns, filled from a DataStore and written back to the DataWindow.
- Linear gauge — a linear gauge, horizontal or vertical, of the same family as the dial gauge: bar or marker, coloured ranges, ticks, target, an adjustable value.
- Pie chart — an animated pie or doughnut chart: slices that glide to their new values, labels inside or outside, a text in the centre, a clickable legend, a half circle if you wish, small slices gathered into "Others", a DataStore read in one call.
- Property grid — a Visual Studio-style property grid: categories, expandable properties, an editor per type (number, boolean, list, colour, date…), search, alphabetical sorting and a help pane.
- Tree view — a tree, or a tree list as soon as it has columns: branches read on demand, three-state check boxes, in-place editing, drag and drop, search, sorting by column, branch totals, filled from a hierarchical DataStore and written back to the DataWindow, smooth with tens of thousands of nodes.
What changes #
- What is read without an argument is a property: the selection, a position, a state, the layout, the last error are read like any property (
uo.is_selected_key,uo.ib_open,uo.is_last_error), read only when they cannot be written;is_layoutreplaces theof_get_layout/of_set_layoutpair. The old functions are gone: the compiler shows every line to rework. - One word per role:
is_textis what an element shows,is_labelthe name of a piece of data,is_valuewhat the user types — the menu entries of the ribbon and the status bar and the commands of the palette move fromis_labeltois_text. The progress bar takes the words of the gauges (ib_show_value,il_value_color,is_format,is_unit), and the cartesian chart and the crosstab write their numbers throughis_format, a PowerBuilder display format, instead ofof_set_value_format. - Events say more: every right click on an item receives the screen point where to open a menu (
al_x,al_y: side bar, tabs, toolbar, breadcrumb;ue_tile_contextof the tiles box becomesue_tile_rclicked), and a few events receive one more argument — the calendar, the sound player, the toaster, the shell explorer, the rich text, the Markdown viewer. The button bar puts the text before the icon in its additions. - Every verb returns a code:
of_stop,of_closeandof_resetof the non-visual components,of_go_back,of_go_forwardandof_stopof the web browser,of_stopof the video player return along; a call written as a statement still compiles. The details, component by component, and what to change: Migrating from 4.0 to 5.0.
Elsewhere in the library #
- Button is no longer deprecated: it is the component for a single button, and Button bar remains the one for a row of buttons.
- Numeric input masks in the data grid (
is_maskof a column) and on a spinner of the ribbon (is_mask,is_format): the grouping appears as the digits come, the decimals are limited, letters are refused, and the value stays the bare number. - The native menus of a component that has an accent of its own show it on the pointed entry.
- crypto: blobs without a file (
of_base64_encode_blob,of_hash_blob,of_encrypt_blob…), a token checked against the key set of Azure AD, Google or Auth0 (of_jwt_verify_jwks, JWK), the expected claims and the tolerance of JWTs, new algorithms (RS384/512, PS256/384/512, ES384, HS384/512), PSS signatures, the additional data of AES-GCM, TOTP and HOTP settings,of_password_needs_rehash. - webbrowser: the list of the sites it may show (
is_allowed_hosts), an intranet certificate accepted by your application (ue_certificate_error), messages exchanged with the page (ue_web_message,of_post_message), the zoom (ii_zoom),ue_load_startedandib_loading. - PowerBuilder data and menus: a DataStore, a DataWindow or a DataWindowChild also feeds the cartesian chart, the side bar, the JSON (
of_from_datastore, andof_to_datastorethe other way) and the REST client (of_retrieve); the menu bar and the command palette fill themselves from the PowerBuilder menu of a window (of_load_menu); the PDF viewer and the picture show a blob without a file. is_accessible_nameandis_accessible_descriptionon every visual component, for screen readers; the code editor gains an undo history your code drives (of_undo,of_redo,ue_undo_state_changed) and Ctrl+/; the breadcrumb becomes an address bar with completion. The full list, component by component, is in 12.6 of Migrating from 4.0 to 5.0 and in the history of each component.
Fixed #
- Focus ring after a dialog box: a button (or any component) clicked with the mouse that got the focus back when a dialog box closed showed the keyboard focus ring. As Windows does, the component now keeps the mode it was in: no ring after a click, the ring after the Tab key.
- Control hosted in a tab or a panel: a control placed in a page of Tab or a panel of Dock container that wrote a property of a component in its
pbm_sizefroze the application 5 seconds per property, and the clicks made meanwhile were lost. The property now applies at once. - Memory: each creation then destruction of a component left part of the files loaded by its page in memory (about 0.5 to 1 MB depending on the component, since 3.0). An application that often opens and closes windows holding components saw its memory grow without coming back, up to the crash of a 32-bit application. The memory is now given back when the component is destroyed; nothing to change in your code.
- Menus: after a moment when the application was busy, a menu (context menu, drop-down, ribbon or menu bar menu) could stop closing on a click elsewhere. It now always closes; nothing to change in your code.
- commandpalette: a palette closed by Alt+F4 still said it was open, and the next press of its shortcut did not open it again. It now closes as with Escape.
- The reason of a failure (
is_last_error, formerlyof_get_last_error()) is that of this component: it was often the last message another one had left in the DLL. - crypto:
of_encrypt_fileandof_decrypt_filehandle files larger than 1 MB (the encryption returned-4, the decryption could stop a 32-bit application). - REST client: a synchronous request no longer freezes the window, even during a long download.
- Building big is fast: a ribbon or a tiles box filled one element after the other is drawn once (a ribbon of 200 controls took 13 to 14 s), and the code editor stays smooth past 2,000 lines.
- Data grid: a rating cell is read by a screen reader as its number of stars out of five (
4 / 5); opening then closing the editor of a numeric cell without typing no longer changes a value the format rounds.
4.0 — October 2026 #
Five components: data, charts, documents and sound #
- Cartesian chart — an animated cartesian chart: columns, bars, lines, areas, scatter, bubbles, heat maps, candles. The type is set per series: a combination chart (columns and a target line on two axes) fits in a single component.
- Data grid — a modern grid laid over a DataStore: typed columns and rich cells, sorting, filters, grouping and subtotals, in-place editing, very large volumes, CSV and Excel export. It reads what the DataWindow says about each column (title, format, code table), and the DataWindow stays the master of your data.
- Markdown view — a read-only Markdown document in the colours of the theme: headings, lists, tables, task lists, coloured code, pictures — from a text or a file of the workstation.
- Scheduler — an Outlook-style calendar: day, work week, week, month and agenda views, drag and drop, resources side by side, colour categories, cards and tooltips written with templates — filled appointment by appointment or from a DataStore.
- Sound player — a non-visual object that plays a file of the workstation, an
httpsaddress or a synthesized beep, asynchronously (events) or synchronously (the call returns when the sound ends).
What changes #
- A change asked for by your code (
of_select_*,of_expand,of_open…) raises the same event as a user gesture, asSelectTabdoes in PowerBuilder; the questions asked before a change are optional and switched on by anib_veto_*property. - Two methods go:
of_set_dataof the crosstab becomesof_from_datastore, andof_transformof XML leaves with XSLT, which the browser engine is removing. A few names and counts are aligned with the rest of the library. The details, and what to change: Migrating from 3.0 to 4.0. - Themes follow the application: the accent it sets survives a change of theme, and a theme axis left empty follows the application's.
Elsewhere in the library #
- The window keyboard: Enter presses the default button nearest the focus, a component's shortcuts answer from anywhere in the window, so does an underlined letter (
&Save), and F10 opens the menu bar. - Every drop-down menu searches as you type and stays smooth with thousands of entries.
- Rich text: the
[symbol=name]tag adds eighteen monochrome glyphs (clock, location, person, calendar…) that follow the colour of the text. - Additions in most shipped components — tabs from the keyboard (Ctrl+Tab, middle click), panels detached by a double-click, overflow chevron of the menu bar, drop-down list in the toolbar, line-by-line log of the statictext, actual size of a picture, reading a cell of the crosstab… The full list, component by component, is in Migrating from 3.0 to 4.0 and in the history of each component.
- An AI assistant (Claude, Cursor, VS Code…) can look up the exact API of your version and check the code it proposes, through the documentation MCP server shipped with the demonstration.
Fixed #
- A decimal property (
double) was read back with the workstation's separator: on a French Windows,1.5came back wrong. - A right-click on an item now produces a single event, in every component.
- Tiles box:
of_get_layoutreturned an empty layout.
3.0 — September 2026 #
Eleven components: data, utilities and media #
- Breadcrumb — the breadcrumb trail: where you are, and back to any level in one click. Branches opened on demand, direct path entry, files dropped on a segment.
- Button bar — a row of command buttons — icon, label or both — in a single component; a click reports the button's key.
- Crosstab — the live pivot table of a DataStore: rows, columns, aggregated values, filters, subtotals, calculated fields and measures, CSV and Excel export.
- Crypto — hashes, HMAC, password or key encryption, RSA, ECDSA and Ed25519 signatures, JWT, salted passwords, two-factor TOTP and DPAPI — with nothing to install.
- JSON — build a JSON document type by type, read it along a path and edit it in place, in pure PowerScript.
- JSON tree — a JSON document shown as in a code editor: line numbers, colouring by type, every block foldable, search.
- REST client — a native, asynchronous HTTPS client: GET, POST, headers, JSON, multipart, cookies, retries, file downloads — without a browser's CORS wall.
- Speech out — reading aloud with the voices installed on the workstation: current sentence and word, queue, pronunciation dictionary, synchronous reading.
- Video player — a video player with its own themed bar: subtitles, full screen, chapters, markers, playlist, frame capture.
- XML — build an XML document element by element and read it with real XPath: namespaces, editing, XSLT transformation.
- XML tree — an XML document shown as in a code editor: tags, attributes and text colour-coded, every element foldable, search.
What changes #
- Every position given to a method counts from 1, like the ones the reordering events already report; a cascading entry reports its full address. The details, and what to change: Migrating from 2.0 to 3.0.
- Button is still shipped and supported, but it is deprecated in favour of Button bar: a row of buttons fits in a single component.
Elsewhere in the library #
of_set_property,of_get_propertyandof_component_name: drive a property by its name, for a settings screen or a saved configuration.- The message box offers a list of choices (
of_add_choice,of_choose) besides its buttons.
Fixed #
- A colour read back (
il_text_color,il_accent…) returned0, black, whether set or not: it returns the colour set, and-1when it is the theme's. ue_errorof Picture and Shell explorer was never raised.- Rich text: an unknown
[word]made the rest of the text disappear; it is now shown as written. - Status bar:
ue_panel_rclickedgives screen coordinates, to hand as they are to a context menu.
2.0 — September 2026 #
Five components, all about navigation #
- Menu bar — application menu bar: menus, submenus, checkable entries, separators, icons, shortcuts and
&Filemnemonics, drawn by the library in the application's theme. - Command palette — one shortcut, three letters, and any action of the application is reached without hunting through menus. Searches the label, the group and the keywords, several words at once.
- Radial menu — commands in a ring around the cursor on right-click, chosen by direction rather than by walking a list.
- Shell explorer — the real Windows shell tree: Desktop, This PC, drives, folders, Network, with the machine's own icons. A single
of_expandopens a deep path. - Stepbar — a wizard's trail of steps: the ones done, the current one and the ones to come, horizontal or vertical.
A reshaped API on the sixteen from 1.0 #
One key, one address; everything from the component; an addition returns a code. The three rules, the before/after and every changed signature are in Migrating from 1.0 to 2.0. What motivated it: a handle that added could not say it had refused, and three arguments to name an item forced every component to invent its own way of doing so.
On every component #
of_count,of_keys_atandof_has, on the component and at every level: what a component holds can be asked, there is no need to keep track of it yourself.- Every method returning a
longsays what its return means:0applied,-5invalid argument,-2component not created — in the demo's embedded doc as well as here. - Item properties read back live: the icon of a listbar entry, the text and icon of a tile, the state of a bar button — a getter says what is on screen, never a remembered value.
ib_visibleon every menu entry — menu bar, context menu, radial menu, ribbon menus: hiding is not greying, the entry leaves the menu, shortcut included, and keeps its key to come back.- The status bar builds its menus one entry at a time (
of_add_menu_item ("panel/id", …)), with an entry handle that greys, checks and hides — instead of the two parallel arrays ofof_set_panel_menu. ue_script_error: a script error in the page reaches PowerBuilder with its message and stack, instead of being lost.
Fixed #
- A disabled or hidden item no longer answers anything: neither click nor keyboard — the listbar still selected a greyed entry on Enter.
- Greyed text is legible in every theme (3:1 contrast at least), and hovered text too in dark mode — two disabled ribbon buttons went invisible in Office 2007.
- A Windows path read back from the page came with its backslashes doubled (
C:\\Windows); a value holding a quote was cut short. - Dock container: the panel pinned on the left lost its right border above 100% display scaling.
- Ribbon: the icon of a disabled button was not greyed in compact mode; a menu bar title lit up together with the hovered one.
- Code editor: the text read back after folding was the old one, and unfolding overwrote what had been typed.
1.0 — August 2026 #
First release: sixteen components — button, code editor, dock container, listbar, message box, PDF viewer, picture, progress, ribbon, statictext, statusbar, tab, tiles box, toaster, toolbar, web browser — one DLL to deploy, x86 and x64 under the same name, no .NET, ActiveX or PBNI dependency. Office, Fluent and Metro themes, light and dark; six languages and RTL; entirely offline licensing; PowerBuilder 10.2 to 2025.