I’m very happy to announce the immediate availability of Objo Studio 26.11.1.
This release brings installable Web applications, camera barcode scanning, text-to-speech, and more flexible layouts for both Desktop and Web. There are also improvements to tabs, code editing and application icons, along with fixes for several problems reported on the forums.
Put your Web application on the home screen
Your users can now install an Objo Web application from supporting browsers, giving it a home screen or desktop icon and its own application window.
Enable Project Settings > Web > Installation > Allow installation. Studio uses your project’s display name, application icon and Web appearance to generate the necessary installation metadata and icon sizes. Optional settings let you customise the home screen name and colours.
The application still runs on your server and needs a connection to it. Installation is supported according to the user’s browser and platform, with HTTPS required for deployed applications.
This should be particularly useful for applications people return to regularly, such as stock systems, booking tools and internal dashboards. The Web application installation guide explains how to get started.
Read barcodes with a phone’s camera
Web applications gain a new BarcodeScanner API for reading UPC-A, EAN-13, EAN-8, Code 128 and QR codes.
Your application starts a scan, the user opens their camera, and the result gives you the decoded text and detected format. Users can select a camera, and your application can remember their preference for another visit.
Decoding happens locally in the browser. Camera frames are never uploaded to your server, and the decoder ships with your application.
Open the new Web Barcode Scanner example to try the supported formats and see how to handle successful scans, cancellation and camera errors. Camera access requires HTTPS when deployed, or localhost during development.
Speech on Desktop
The new SpeechSynthesiser class lets Desktop applications read text aloud and save generated speech as a WAV file.
You can choose a voice, adjust speaking speed and volume, queue speech and stop playback. Speaking and exporting run in the background, keeping your application’s interface responsive, with both events and awaitable methods available.
This opens up read-aloud features, spoken prompts and generating audio for later use. macOS and Windows use their system voices, while Linux applications include the speech engine they need.
The documentation includes examples of speaking text and exporting speech, along with details of the available voices on each platform.
More flexible Web layouts
Two additions make it easier to build Web applications around the available browser space.
Navigation bars can now appear on the left or right of a page, as well as across the top. Side navigation supports a configurable width, expandable groups and a current-page indicator, switching to a dismissible drawer on smaller screens.
You still design the navigation once and reuse it across pages. Each page chooses its placement, so the same definition can serve different layouts. The NavigationBar documentation covers the designer and page settings.
Controls can also fill the remaining browser height. Select a control and choose Placement > Height > Fill remaining to let a ListBox, Chart, Canvas or container grow and shrink with the available space.
The setting belongs to each responsive breakpoint. A wide dashboard can fill the browser while its compact phone layout keeps a fixed height, and the designer’s new viewport-height preview lets you inspect both.
The fill-height layout guide explains minimum sizes, nested containers and how the available space is shared.
Tabs that adapt to your application
TabPanel receives several related improvements on Desktop and Web.
Individual tabs can now be hidden and shown without losing their controls or values. Hiding a tab also leaves the other tabs’ indices unchanged, making it easier to show the sections relevant to the current user or task.
Desktop panels gain an optional scrolling header row. Both Desktop and Web provide a compact overflow menu when the headers do not fit, giving users a convenient way to find another tab.
Optional close buttons are available on both targets too. Closing raises a request that your application handles, so you can ask about unsaved changes, protect particular tabs or decline the request. Desktop applications can remove an accepted tab; Web applications can hide it while retaining its contents.
The Desktop TabPanel and Web TabPanel documentation includes the new settings, methods and close-request examples.
More control over controls
Individual RadioButton controls are now available on Desktop and Web.
Give related buttons the same GroupName to make them mutually exclusive, then position them freely. This is useful for settings panels where an option has explanatory text, checkboxes or other controls beneath it. The existing RadioButtonGroup remains available for automatically arranged lists.
GroupBox also gains custom border colour, thickness, corner radius and caption colour on both Desktop and Web.
Desktop Label controls gain vertical text alignment, allowing a block of text to sit at the top, middle or bottom of its available area.
Some smaller additions
A few other changes deserve a mention:
- Method descriptions now appear beneath signatures in parameter hints. You can control this in Settings > Editor.
- Subclass event handlers can call their parent’s implementation explicitly, for example with
Super.Opening(). - TCPClient gains
ReadBytesAsyncandWriteBytesAsyncfor transferring binary data throughMemoryBlock, making binary protocols easier to work with. - PNG artwork can be dragged directly into the application icon editor, including individual size slots.
- Asset and icon pickers remember their last folder during the current Studio session, saving repeated trips through the same directories.
Fixes worth mentioning
On Windows, copying a ListBox cell no longer freezes the running desktop application. Shell.Start and Shell.Execute also preserve correctly quoted command text, including paths and arguments containing spaces or commas.
The editor restores completion and member help for plugin types used through imported namespaces. Rejected renames now display feedback, naming a newly duplicated member stays local during its initial setup, and a crash when selecting items in Studio has been addressed.
Theme exports now include the complete editor and Markdown colour palettes, including colours left at their defaults. There are also fixes for designer selection values, RadioButtonGroup bounds, misleading unused-method warnings and Studio’s Linux taskbar icon.
Finally, macOS applications built or published from Windows receive the executable signing needed for development and testing after transfer to a Mac. Developer ID signing and notarisation remain separate steps for public distribution.
You’ll find the complete list in the changelog.
Download Objo Studio 26.11.1, try the new features, and let me know how you get on in the forums.
Thanks to everyone who has shared reports, suggestions and examples of their projects. They help us decide what to improve and make it much easier to track down problems.
Enjoy!