twinBASIC Update: January 21, 2025

Highlights include new localization support (with 10 languages already!), expanded theming capabilities, and a whopping 19 new beta releases.

twinBASIC Update: January 21, 2025

On April 23, 2021, I helped Wayne Phillips introduce the world to twinBASIC at the Access DevCon Vienna conference. I boldly predicted that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025. With that goal in mind, this weekly update is my attempt to keep the project fresh in the minds of the VBA development community.

Every Sunday Monday week, I will be providing updates on the status of the project, linking to new articles discussing twinBASIC, and generally trying to increase engagement with the project. If you come across items that should be included here, please leave a comment below.

Here are some links to get involved with the project:


Highlights

Localization Support Added

twinBASIC's IDE took a major leap toward global accessibility with the introduction of comprehensive language support in BETA 654.

The new localization framework allows the IDE interface to be translated through straightforward language pack files, with Wayne Phillips implementing the system to handle all UI elements including menus, dialogs, and messages. The community's response was remarkably swift, with 10 different language packs being contributed within days of the feature's release. During implementation, several technical discussions emerged around translation methodology, with community experts like sokinkeso highlighting the limitations of AI translation tools, particularly for languages like Greek where manual translation remains necessary for accuracy.

This rapid internationalization of the IDE represents a significant step toward making twinBASIC accessible to developers worldwide, particularly in regions where English is not the primary development language.

To contribute to the effort or check on the status of your native language, head over to the new langpacks channel in Discord.

* Summarized by Claude-3.5-Sonnet

Expanded Theming Support

The twinBASIC IDE's theme system received several targeted improvements this week, with hints of bigger changes ahead.

Several new theme-specific properties were introduced, including:

  • ToolbarPreviewButtonColor
  • PanelBorderTop
  • PanelHeaderBorderRight
  • DesignerToolboxItemHoverBackground

The built-in themes received refinements, particularly to the Light theme's toolbar icon filters, and several theme-related bugs were addressed including fixes for form designer properties, reference list visibility, and notification box colors in the Dark theme. Looking forward, Wayne Phillips confirmed plans to transition all visual IDE settings, including fonts and minimap visibility, into the theme system, with a dedicated theme editor add-in and persistent theme folders planned to simplify customization.

These improvements, combined with Wayne's roadmap announcements, suggest themes will become the central mechanism for IDE customization, though some community members expressed concerns about the current complexity of theme editing without supporting tools.

* Summarized by Claude-3.5-Sonnet

Discord Chat Summary

* Auto-generated via Claude-3.5-Sonnet-200k on poe.com

Overview

This week saw significant developments in IDE localization with rapid community engagement, continued refinement of the theming system, and important bug fixes. The community actively discussed version 666's release, French keyboard compatibility issues, and various technical implementation details. Multiple new members joined the community during this period.

IDE Improvements & Localization

  • Language pack support was introduced in BETA 654, with the community quickly contributing 10 different language packs (noted by Wayne)
  • A critical French AZERTY keyboard compatibility issue was identified and fixed in BETA 663
  • Theme system continues evolution with plans to incorporate all visual IDE settings, including fonts and minimap visibility

Bug Fixes & Technical Updates

  • Fixed regression in BETA 659 affecting code editor functionality
  • Resolved IDE startup issues in BETA 662
  • Addressed theme-related visual glitches affecting checkbox colors and dialog transparency
  • Wayne confirmed LLVM compilation will be available for both 32-bit and 64-bit targets

Community Tools & Contributions

  • New twinBASIC loader application released by DTZ, notably being the first such tool written in twinBASIC rather than VB6
  • Significant discussion around automated vs. manual language translations, with community experts noting current limitations of AI translation quality
  • Community actively testing and reporting issues for v1 release preparation

Development Progress

  • Wayne announced the final days of the New Year perpetual license sale
  • Discussion of string handling and entry point customization for advanced scenarios
  • Confirmation that theme customization will become more accessible through planned theme editor add-in

Conclusion

The week demonstrated strong community engagement, particularly around localization efforts. The rapid response to bug reports and continuous refinement of the IDE shows steady progress toward v1 release. The transition to theme-based configuration represents a significant architectural shift in how the IDE will handle customization going forward, though some community members expressed concerns about the current implementation complexity.

Around the Web

Call for Bug Hunters

In Discord, fafalone posted the following call to action for tB community members:

Wayne needs some help identifying bugs that definitely need to be addressed for v1, as a solid single list independent from all the feature requests or IDE issues that can really wait. If you've posted bugs or are able to help recheck bug reports from others concerning VBx compatibility or bugs preventing program execution please help confirm they're still unfixed in the latest builds (or quite likely to be) and provide a link in a reply to the following discussion so I can add it to the master list. There's more details in the post as well. Helping out with this will save Wayne a lot of time and effort he can then spend getting right to fixing them to get v1 out sooner.
I've verified a few to get it started and will be working on it as time permits, but definitely can't do it alone. So whenever you have a few spare minutes, give an issue a check please. 😃
List of high priority bugs: VBx compatibility and tB code execution · twinbasic twinbasic · Discussion #2010
Bugs concerning VBx compatibility and tB code execution are important to fix for V1 and Wayne needs some help gathering a list of these specifically vs just the general Issues list which is full of…

WebView2 with WinDevLib

From fafalone:

If you love Wayne's WebView2 package but wished it used WinDevLib so all the latest WebView2 interfaces were available and it used the same IStream as every other WDL package, check out WebView2WDLPackage.
It can be swapped out with the original in the WebView2 Samples project without any change.
Zip includes the source twinproj for the package, the .twinpack built package, and the WebView2 samples project using the new version.

I haven't actually added much in the way of new features yet, just DownloadCompleted and DownloadInterrupted events. The next step will be wrapping it in a UC/AX control that can be used in VB6 and VBA.

There's a ton that went into this besides the interfaces themselves, and Wayne absolutely still deserves 100% of the credit, I just switched those out for use with WinDevLib.

There's a zip file with the sample package available in Discord.

But, with a bit of luck (read: additional volunteer work from fafalone 😂), these enhancements will be available with the built-in WebView2 package, as Wayne invited fafalone to take over development of the official version.

DTZ's tB Launcher Rewritten in twinBASIC Itself

In Discord, tB community member DTZ posted:

The new version of the launcher/updater program for twinBASIC is here, and it’s the first one made not with VB6, but with tB itself.! It’s provided as a ZIP file, and after extraction, it should be placed on the Windows desktop, for example. When run from there, it checks what the Downloads folder is on the machine, whether there’s already a "tB" folder there, and if so, whether a newer version exists on GitHub. If no newer version is found, it launches the existing one, and the program itself remains invisible. If a newer version is found, it notifies you that an update is available, and the update can be downloaded with the UPDATE button. (The old tB version is deleted, but it is possible also to downgrade, if someone will.)

Changelog

Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.

Releases · WaynePhillipsEA/twinbasic
Contribute to WaynePhillipsEA/twinbasic development by creating an account on GitHub.

AI-Generated Changelog Summary

* Auto-generated via Claude-3.5-Sonnet, sorted in order of its opinion of "most impactful changes."

Here's a concise summary of the notable updates in twinBASIC for this release:

  • Multi-Language Support

    • Added support for custom language packs with initial releases in 11 languages including French, Spanish, German, Chinese (Traditional & Simplified), and others
    • New localization framework with 117+ localizable strings
  • IDE Improvements

    • Enhanced theme system with new customizable properties and refined Light/Dark theme behaviors
    • Improved form designer functionality, particularly for menu editing and control manipulation
    • Better intellisense behavior with refined SPACE key acceptance
  • Compatibility & Debugging

    • Added new project setting 'Debugger: Break On All Errors'
    • Fixed critical IDispatch::Invoke implementation for better COM compatibility
    • Improved Form handling with fixes for control anchoring, startup positioning, and initialization behaviors
  • IDE Extensibility

    • Added new theme-related APIs including ActiveThemeNameGroup property
    • Enhanced panel and toolbar customization options

WARNING: The following issues are present in BETA builds 623 - 666 (the latest build as of publication):

  • IMPORTANT: This is an interim/experimental release. It includes significant changes, so some instability is to be expected. [Editor's Note: Rolling back to BETA 622 may be necessary until the BETA 623+ version stabilizes or if any of the KNOWN ISSUES below affect your project.]
  • KNOWN ISSUE: UserControls from the ACTIVE project will not appear correctly in the form designer in this release (they are purposely disabled until next release). Packaged controls, such as VBCCR will work.
  • KNOWN ISSUE: Menus currently not appearing in MDI Forms (broken in this build)
  • KNOWN ISSUE: 'Scale*' properties are often not settable in the IDE property sheet (broken in this build)
  • KNOWN ISSUE: Setting Width/Height via the property sheet often does not work correctly (broken in this build)
  • KNOWN ISSUE: Controls are not being destroyed properly by the form designer, causing big memory leaks (broken in this build)
  • there are known memory leaks in these versions, so memory usage will be higher than at the Version 1.0 release

BETA 648

  • added: redirection support for __vbaCastObj in MSVBVM60.DLL to internal implementation [ HackerVlad, vbforums ]
  • fixed: (regression in BETA 647) code editor vertical scrollbar could not be dragged
  • added: theme-able properties: ToolbarPreviewButtonColor, PanelBorderTop, PanelHeaderBorderRight
  • improved: tweaked Light theme Toolbar icon filters
  • fixed: (regression in recent builds) control anchors not working properly if control positions are changed in Form.Load event [ sokinkeso, discord ]

BETA 649

  • fixed: some form designer theme properties were not effective
  • fixed: first theme property statement could be ignored if it immediately follows an end block comment
  • improved: tweaked some built-in theme properties
  • fixed: (regression since BETA 623) can't create menu arrays in the form designer [ fafalone, discord ]
  • added: theme property DesignerToolboxItemHoverBackground
  • improved: when pasting controls in the form designer, original control names will be retained provided there are no conflicts
  • fixed: (regression) deleting a menu in the form designer threw an internal IDE error
  • fixed: changing the form width/height during Form.Load event would cause anchored controls to not be at correct positions

BETA 650

BETA 651

  • fixed: (regression) references list ticks are not visible due to a theme issue
  • fixed: (regression) IDE notification box button back color too dark in Dark theme

BETA 652

BETA 653

  • added: initial support for custom language packs (currently covering main menus and panel titles only), see locale\README.txt file

BETA 654

  • fixed: right-click on the IDE toolbar icons should not execute the command [ Don, discord ]
  • changed: removed 'Settings' entry from the PROJECT EXPLORER tree, and instead now provide a Settings icon in the panel header
  • improved: added the initial 6 language packs provided by the community (French, Spanish, Greek, Russian, Chinese Traditional, Chinese Simplified)
  • added: 44 new localizable strings to en-gb.lang
  • special thanks to our community members for the language packs (marcos_lm, woeoio2, sokinkeso, dragokas, camomille22003, dj-make)

BETA 655

  • fixed: (regression since BETA 623) changing Form.Left/Top position inside Form_Load event when the Form has a menu would cause incorrect final form height [ JimDrew, discord ]
  • fixed: (regression) IDE licence agreement was being shown before the IDE theme was applied, resulting in an incorrectly rendered window
  • added: 4 new language packs (Catalan, Italian, Swedish, Hungarian)
  • updated: 2 language packs (Spanish, French)
  • special thanks to our community members for the new/updated language packs (marcos_lm, maxVBA, DTZ, camomille22003)

BETA 656

  • added: 1 new language pack (German)
  • updated: 1 language packs (Greek)
  • special thanks to our community members for the new/updated language packs (sokinekso, Krool)

BETA 657

  • fixed: (regression since BETA 654) twinBASIC IDE won't start if you've closed the TOOLBAR [ camomille22003, discord ]

BETA 658

  • fixed: (regression since BETA 654) twinBASIC IDE won't start if you've closed the TOOLBAR [ camomille22003, discord ]
  • fixed: form z-order edge case for the startup object after Form_Load [ Jim Drew, discord ]
  • fixed: form Me.Visible = False edge case for the startup object inside Form_Load [ Jim Drew, discord ]
  • fixed: Mid() assignment edge case, leading to possible buffer overrun [ XYplorer ]
  • fixed: file Put statement with uninitialized UDT would cause a runtime hard crash [ XYplorer ]
  • updated: 1 language packs (German)
  • special thanks to our community members for the new/updated language packs (Krool)

BETA 659

  • fixed: (regression in BETA 658) error about missing StartupShow implementation in VB package
  • fixed: all calls to IDispatch::Invoke now supply the exception arguments. Fixes issues with TLBINF32 and probably other DLLs [ sokinkeso, discord ]

BETA 660

  • fixed: assignment statement to a control array element using a late-bound Object (objControlArray(x) = ) would fail instead of going through the default member property-let [ XYplorer, discord ]
  • added: project setting 'Debugger: Break On All Errors' boolean (Default NO) [ XYplorer, discord ]
  • added: 73 new localizable strings to en-gb.lang
  • updated: 2 language packs (Spanish, Catalan)
  • special thanks to our community members for the new/updated language packs (marcos_lm)

BETA 661

  • fixed: (regression) Form.StartUpPosition now defaults to vbStartupWindowsDefault again for imported VBx forms [ Jim Drew, discord ]
  • fixed: (regression) lightweight controls would not render before Form_Load had finished [ Jim Drew, discord ]
  • changed: shortcut description now use '/' rather than 'or' for separating alternative chords [ Krool, discord ]
  • added: support for detecting and aletring unhandled errors in IDE startup (before the IDE layout has loaded)
  • updated: 1 language pack (French)
  • special thanks to our community members for the new/updated language packs (camomille22003)

BETA 662

  • improved: tweaked some startup error handling behaviours [ camomille22003, discord ]
  • fixed: a theme related IDE startup bug [ James, private ]

BETA 663

  • fixed: IDE input issues with some keyboard layouts [ camomille22003 ]

BETA 664

  • updated: 2 language packs (Italian, German)
  • special thanks to our community members for the new/updated language packs (maxVBA, Krool)

BETA 665

  • fixed: (regression in BETA 644) globalKeyDown notification in the DEBUG CONSOLE [ kismertwise, discord ]
  • updated: 3 language packs (Spanish, Catalan, Greek)
  • special thanks to our community members for the new/updated language packs (marcos_lm, sokinkeso)

BETA 666

  • fixed: some IDE panel layout issues, where rearranging docked panels could leave behind empty spaces [ maxVBA, discord ]
  • fixed: (regression) accessing controls inside Form_Initialize event could cause all windowed controls to fail to render [ AntsAntix, discord ]
  • fixed: VarPtr(myUDT.myVariant(x)) would return the address of a compiler temp variable regardless if the variant holds an array [ FullValueRider, discord ]
  • fixed: changing IDE language did not update the CALLSTACK panel information until compiler restart [ sokinkeso, discord ]
  • fixed: IDE AddIn menu ticks not the correct color [ sokinkeso, discord ]
  • fixed: IDE extensibility model: Themes.ActiveThemeName now returns the actual theme name [ sokinkeso, discord ]
  • added: IDE extensibility model: Themes.ActiveThemeNameGroup (returns 'dark' or 'light') [ sokinkeso, discord ]
  • improved: IDE Intellisense SPACE key behaviour tweaked to avoid extra space being inserted unnecessarily [ sokinkeso, discord ]
  • fixed: closing Project Settings dialog without making changes could sometimes prompt to save changes [ sokinkeso, discord ]
  • fixed: making a pending change to a menu in the form designer property sheet, and then clicking on a different menu control causes property to change on wrong control [ sokinkeso, discord ]
  • fixed: form designer menu command 'Move Up' (CTRL+ARROWUP) was not working properly [ sokinkeso, discord ]
  • improved: (regression since BETA 623) form designer menu editing had become difficult (lots of issues) [ sokinkeso, discord ]
  • improved: right-click in the PROJECT EXPLORER panel, outside of the listed files/folders now popups up the 'Add' menu

All original code samples by Mike Wolfe are licensed under CC BY 4.0