Objo Studio v26.10.2 Released

I’m very happy to announce the immediate availability of Objo Studio 26.10.2.

There are 75 completed items in the release tracker this time, with new controls, improvements to the Plugin SDK, more flexible desktop windows and plenty of fixes across the editor, designers and runtime.

Download Objo Studio 26.10.2

Building on the Plugin SDK

The Plugin SDK arrived with 26.10.1, and it’s already growing.

This release is accompanied by Plugin SDK 1.3.0, which makes more existing C# libraries straightforward to expose to Objo. Exported classes now include their inherited public members, and Objo recognises inheritance between exported plugin classes. A derived plugin object can be passed to a method expecting its exported base class, and IsA understands the relationship.

The type bridge also gains support for DateTime and Colour, including arrays, and plugin methods can expose Objo’s Assigns calling convention. That lets an API offer familiar assignment syntax such as:

doc.Metadata("author") = "Björn"

There are improvements for people using plugins too. Studio gives clearer explanations when a required package is missing or the installed package has different contents. If another version is already in your Plugin Library, Studio can offer to switch the project to it, showing any resulting compile errors before you confirm.

You can find the updated tools and samples in the public SDK repository, with guidance in the Plugin SDK documentation.

PDFs and Markdown in Web applications

Web projects gain two useful viewers.

PDFViewer displays documents directly inside your application, with page navigation, zoom, text search and downloading. You can load a bundled PDF resource or supply bytes generated by your application, making it useful for reports, invoices and manuals. Text remains selectable, and the PDF engine ships with your application.

MarkdownViewer brings the desktop control’s Markdown support to Web pages. Headings, tables, lists, code blocks, links and images give you a convenient way to present help, rich descriptions or generated reports.

The default Web appearance has also been adjusted, with tighter control spacing and slightly larger text. Newly placed buttons start wider so ordinary captions have room to fit.

Better charts

Charts gain stacked vertical and horizontal bars on both Desktop and Web. These let you show how several series contribute to a total, such as sales by product within each month. Each segment keeps its own tooltip and click information.

Both targets also gain an optional Subtitle, useful for a date range, units or a short explanation beneath the main title.

On Desktop, category labels can now rotate through LabelAngle. The renderer also avoids overlapping labels when there are too many to fit, while retaining the full labels in tooltips. The bundled Chart Gallery demonstrates the new options.

The Desktop Chart and Web Chart documentation covers the details.

More flexibility for desktop windows

Desktop Windows now support opacity, translucent backgrounds and picture masks for custom shapes.

Opacity fades the entire window, including its controls. A background colour with transparency lets the desktop show through behind the controls, while Mask uses a Picture’s alpha channel to shape the window itself. Together with a hidden title bar, this opens up possibilities such as floating badges, overlays and custom splash screens.

Transparency is supported on macOS and Windows, and on Linux desktops running a compositor.

Desktop Buttons also gain custom background and text colours, and TabPanel tabs can now be reordered by dragging them in the Inspector. Their controls move with them, and the whole operation supports undo and redo.

Small controls that save work

A new Spinner control is available on Desktop and Web. It gives you a compact animated busy indicator for operations whose completion percentage is unknown. Set Active while an asynchronous operation runs, then clear it when the work finishes.

TextField input masks are also available on both targets. A mask such as ##/##/#### guides date entry, inserts the separators and lets your code check whether all required positions are filled.

There’s also a new CharacterPressed event for committed text, including accented characters formed with dead keys and text entered through an input method. It gives your application the finished string. Desktop handlers can consume it before insertion; Web handlers can consume ordinary typed text, while input-method commits are reported after the browser completes them.

Publish every selected desktop target

Desktop publishing now builds every target selected in your project settings.

If you select macOS, Windows and Linux, Studio includes all three when you publish. Runnable Windows portable ZIPs and Linux portable archives can be produced from another operating system, and the Publish dialog explains the output you’ll receive.

Formats that require platform-specific packaging tools still have their own requirements, such as macOS signing and notarisation or creating an MSIX package. The selected targets now consistently determine which builds Studio produces.

Barcodes and shared code

The standard library gains built-in Code 128 barcode generation. It produces a Picture or PNG bytes locally, ready for labels, inventory systems and documents.

In a desktop application, generating and saving one is as simple as:

Var code As Picture = Barcode.ToPicture("INV-001234", BarcodeFormat.Code128)
code.Save("invoice-barcode.png")

Shared code also gains conditional compilation target symbols: TargetDesktop, TargetWeb, TargetCommandLine and TargetWorker. These let one source file select the appropriate code for each project type.

Fixes worth mentioning

ListBox received plenty of attention. Iterating selected rows is faster on large desktop lists, selections survive row insertion and removal, cell editing receives focus correctly, and Web selection changes no longer briefly blank the rows. Built-in cell copying also lets your application customise the copied text or cancel the operation.

Elsewhere, GameCanvas gains a Paint event for drawing scores, health bars and other graphics over sprites. Autocomplete works after bare inherited property names, and Tab once again moves correctly between method completion parameters.

On macOS, fixes address missing or stuck menu-bar items and Edit shortcuts in open and save panels. Desktop applications on Windows and Linux also correctly leave Studio’s running state when they quit.

The complete list is in the changelog.

Download Objo Studio 26.10.2, explore the updated examples, and let me know how you get on in the forums.

Thank you to everyone who has reported problems and suggested improvements. Those conversations continue to shape each release.

Enjoy!

Do you ever sleep???

I get tired from just reading about all the work you’ve d… :sleeping_face:

Does falling asleep at the keyboard count? :laughing:

I guess so!!!