Skip to content

Releases

VibeBasic 0.14.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 16:56

Added

  • A real Decimal type: CDec gives a Variant of subtype Decimal (14), a 96-bit integer with a scale of 0-28 as in VB6, instead of a Double that lost digits past about 15. Arithmetic with a Decimal stays Decimal, and comparison, Int/Fix/Abs/Sgn/Round, Str/CStr/Print, Format, FormatNumber, Write #, binary Put/Get and Dictionary keys keep all its digits.

Changed

  • VibeBasic is released under the MIT License.

Fixed

  • DatePart and Format honour firstdayofweek and firstweekofyear in week numbers (vbFirstFourDays, vbFirstFullWeek; days before week 1 count as the last week of the year before), and Format honours firstdayofweek for w.
  • AscW returns a signed Integer, like VB6 (AscW(ChrW(65535)) is -1).
  • Time$ and Date$ return VB6's fixed-format strings (hh:mm:ss and mm-dd-yyyy) instead of a Date.
  • CDate("3 PM") and IsDate("3pm") accept a time with AM/PM and no minutes. DateValue(Null) and TimeValue(Null) return Null instead of raising error 94.
  • Format uses the positive section when the negative or zero section is empty (Format(-5, "0;;zero") is "-5"), and keeps the sign of a negative number that rounds to zero (Format(-0.4, "0") is "-0").
  • A database's RecordsAffected is 0 after SQL that changes no rows, instead of the count of the last INSERT, UPDATE or DELETE.
  • Made macOS apps whose names have no Latin spelling get distinct bundle identifiers, so App.PrevInstance no longer mistakes one such app for another. A Make target ending in .APP no longer becomes Name.APP.app.

VibeBasic 0.13.1

Choose a tag to compare

@github-actions github-actions released this 27 Oct 07:41

Fixed

  • Ask AI on an error raised before any statement of an event ran (an event procedure whose parameters do not match the event: "Argument not optional") no longer just ends the program: it ends, then asks the AI about the procedure.
  • Ask AI on an error brings the IDE window in front of the program's form windows and shows a dialog at once, so the request is never running unseen.

VibeBasic 0.13.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 06:33

Added

  • New Project offers runnable Text Editor, Drawing and Serial presets.
  • The @ (Currency) type suffix on names and number literals.

Changed

  • Running programs draw faster on forms with many controls (the menu bar is no longer looked up per graphics operation), and loading many control-array elements in a loop no longer slows down quadratically.
  • The designer finds, selects and outlines controls without scanning the whole form per control; commands no longer clone every control, re-render the Project Explorer or re-read every code window.
  • Winsock and MSComm data reach the program at the pace the window can take; Inet answers travel as raw bytes, without a base64 copy.
  • The Ask AI stream log appends only new text, and the AI request id is reported once per request instead of once per streamed chunk.

Fixed

  • Saving no longer marks edits made while the file was being written as saved, and overlapping saves of one project no longer share a temp file (each is synced to disk before it replaces the file).
  • Open ... For Output refused with "Too many files" no longer empties the file first.
  • A Timer kept in a variable no longer keeps firing after its form is unloaded; an MMControl Open still loading when the form unloads or the program ends no longer leaks a timer and its media.
  • An MDI child is shown again by AutoShowChildren when it is loaded again after Unload. A newly loaded OptionButton array element starts unselected.
  • Closing a Winsock listener closes connections nobody accepted (after a short grace period, so Close: Accept requestID still works), and a listener keeps listening through transient accept errors. PortOpen = False stops an Output stuck on the device, so the port can be reopened at once.
  • Double arithmetic past its range raises Overflow (6) where it happens. Singles of 1E+07 or more print in 7-digit E notation. Format uses the Null section and understands ttttt and c. Val("&HFFFF&") is 65535.
  • Ask AI finds the JSON in a reply despite brackets in the surrounding prose, lowers the output budget to fit a smaller server context, keeps the code it sends within the context, and bounds and retries the picture-support probe.
  • Pasted controls follow a pasted ImageList or Data control that gets a new name. Decimal user-scale values can be typed in the Properties window. A case-only rename of a control-array member keeps its index. Cmd+Y redoes in the code window on a Mac.
  • Very large batches of drawing operations no longer overflow the stack. Disposing an Agent no longer silences other Agents.

VibeBasic 0.12.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 16:20

Added

  • Ask AI now lets you choose selected code, the current procedure or the whole code file, with optional instructions to make a minimal change, preserve the layout or explain the changes.
  • Include a schematic of the current form from either the designer or its code window. Attach up to two PNG, JPEG or WebP reference images (5 MiB each), review their thumbnails and remove them before sending. Per-request choices keep the global AI preferences unchanged.
  • A larger request field, side-by-side image cards with enlarged previews, a compact context summary with expandable details, visible model/image support and an explicit Ask AI button. Keyboard shortcuts and small-window scrolling remain available.
  • Requested explanations appear separately in code and form proposal previews. Image omissions caused by model or server limits are disclosed before accepting a proposal.

Changed

  • Automatic repair keeps the better validated proposal: fewer syntax errors first, then fewer other problems. Ties retain the original answer, and Change continues from the proposal actually displayed.
  • Form requests ask for fixed fonts, colors and captions as design-time properties, so the designer and running form agree.

Fixed

  • An empty Ask AI request no longer discards attached images and scope choices.
  • Resizing WebP references preserves transparency instead of converting them to JPEG. Invalid and oversized attachments report errors without discarding the draft.
  • Unfenced VB responses are not duplicated in the explanation panel.
  • Closing an image preview restores keyboard focus even if a pending attachment rebuilt its original thumbnail. Context details can be opened with Enter without sending the request.
  • Omitted image warnings identify the correct attachment role even when reference and form pictures contain identical image data.

VibeBasic 0.11.2

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:22

Changed

  • AI reasoning effort defaults to Medium, adds an explicit XHigh choice, and has an adjustable output budget (initially 65536 tokens shared by reasoning and final answer). Fast follow-up effort reduction is opt-in. The server's reported context size is preserved.
  • AI Log now contains metadata only: request IDs, model, effort, output cap, usage, HTTP status, finish reason and outcome. Prompts, images, reasoning, answers, tool arguments and raw server errors are excluded.

Fixed

  • Reasoning-only, empty, interrupted and tool-call responses cannot be shown or applied as successful final answers. Reasoning and text remain separate, including servers that return JSON instead of SSE.
  • Length termination explicitly identifies the output limit and never retries automatically, even if a timeout or stream error follows. Budget errors never trigger an uncapped retry; other recovery paths have a shared four-attempt ceiling.
  • HTTP errors, timeouts, cancellation, incomplete streams and refused connections remain distinct. Removed misleading Ollama advice from generic connection failures.
  • Added native/browser parity tests for text, reasoning, tools, structured JSON, metadata, usage, completion status and privacy.

VibeBasic 0.11.1

Choose a tag to compare

@github-actions github-actions released this 26 Oct 11:46

Added

  • AI server discovery over Tailscale: Search LAN > Include Tailscale peers reads the local client's known online IPv4 devices and lets you choose which to check. Only listed peer addresses are probed; the Tailscale address range is never swept. Peer connections have longer timeouts for relayed links, and Tailscale URLs remain available in Recent.
  • A bounded, read-only Tailscale CLI lookup on macOS, Windows and Linux, including the bundled macOS client. Missing, disconnected or unresponsive clients show a useful message while keeping LAN discovery available.
  • Includes the LAN discovery feature below (networks/ports, results, Use, cancellation, key opt-in and remembered servers). Version 0.11.0 was superseded before its downloads were published.

VibeBasic 0.10.3

Choose a tag to compare

@Stigern Stigern released this 26 Oct 10:47

VibeBasic 0.10.3 restores easy access to the AI Wizard, fixes project-history races, and updates the About dialog and documentation for macOS, Windows and Linux.

AI Wizard and projects

  • Open the wizard from Tools > AI Wizard... or File > New Project > AI Wizard. It remains available when the startup chooser is disabled.
  • Describe a program or start with an example; choose colours, language, form size and improvements; adjust features, help and comments; review or copy the request before creating the program.
  • Explore the wizard before configuring AI. After saving the server and model in Options, creation continues with the same request.
  • Choosing “(none)” in the examples preserves your description.
  • New, Existing and Recent project tabs, recent projects in the File menu, and a startup splash window are included in this release.
  • Recent projects opened while settings load are preserved, removed entries stay removed, and slow settings writes cannot overwrite newer history. Startup changes are saved together.

Platforms, controls and documentation

  • About lists macOS, Windows and Linux, and shows the current system separately.
  • The README has a current wizard screenshot and updated setup and creation instructions.
  • All 59 toolbox control types are available. New projects show the 19 built-in controls plus Pointer; enable optional libraries under Project > Components (Ctrl+T). Selections are saved per project.
  • The DoEvents timing check allows for shared CI runners while retaining timer-responsiveness and completion checks.

GitHub is the source of truth

All downloads are built from tag v0.10.3 by GitHub Actions. The release workflow runs TypeScript and Rust tests on every platform before uploading its packages. Locally uploaded macOS builds no longer take precedence over GitHub-built files.

Version 0.10.2 was superseded before its downloads were published; this release includes its wizard and recent-project fixes.

The downloads are unsigned on Windows and Linux; the macOS app is signed ad hoc. First-run instructions are in the README.

VibeBasic 0.10.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 12:05

A bug hunt in the AI assistant, measured against a real local model (Qwen 27B on vLLM). Tasks solved at Thinking Low rose from 82% to 96%: form layouts from 64% to 91%, Ask AI on run-time errors from 80% to 100%.

Changed

  • The Ask AI waiting window can be made bigger with the grip in its lower right corner; the box with the thinking and the answer grows with it. It keeps its place and size for the next request (until VibeBasic is closed).
  • Every dialog can be moved by its title bar, as in Windows 98.

Fixed

  • AI code merges never break your code: declarations no longer land inside a Type, Enum or #If block or in the middle of a continued line, multi-line procedure headers and Attribute lines are kept, End Sub is not doubled, a changed Dim replaces the old one, and #If blocks stay whole. A merge that would add syntax errors is refused and explained instead of applied.
  • Thinking High failed on servers that only take low, medium and xhigh. A rejected level is now retried with the nearest one the server accepts, and Test Connection shows the levels the server takes (and picks Low for a new setup).
  • Form mode no longer drops values silently: a value it cannot use goes back to the model with the valid ones (StartUpPosition, SSTab tabs, Boolean values, form-level changes), and clear intent is accepted as is.
  • Syntax complaints quote the statement and show the expected form (Scale, Line, Circle, PSet, ListItems.Add). Code that still has syntax errors after the retry is marked in red and Cancel is the default.
  • Ask AI on a run-time error now sees the values on the failing line and is told to handle them, not to hide the error.
  • There was a gap of up to 3 seconds between the prompt and the waiting dialog in which you could start the program or a second Ask AI; a "Connecting..." dialog now covers it, and only one AI request runs at a time.
  • The code check knows ListItem, ADODB.Recordset and ADODB.Connection members, read-only properties (WindowList, MDIChild) and Implements methods; the MDI event-name fix renames to MDIForm_.
  • Placement and the layout check follow docked containers (a docked PictureBox on an MDI form).
  • Small overflows (up to 240 twips) grow the form instead of costing another round; truncated answers are rejected.
  • The preview diff uses bounded memory on big modules. The AI Log no longer shows a user name and password from the server address. Error texts say "this computer" on Windows and Linux.
  • Windows: a running program's form could not be moved by its title bar. Windows resizes a new window to its scaled size, which rebuilt the title bar without its drag mark; the title bar now carries it each time it is built.
  • Windows: F5, Ctrl+R and Shift+F5 in a running program reloaded its window, which went blank (WebView2's browser shortcuts). Those keys, and Ctrl+P, Ctrl+F, Ctrl+G, F3, F7 and Alt+Left/Right, no longer reach the browser in any window. The program still gets KeyDown for them, and F5 in the IDE still runs.
  • Windows: a double click on a DirListBox folder did nothing, and so did DblClick on a TreeView or ListView. WebView2 fires no dblclick when the first click repainted the list.
  • Windows: characters typed with AltGr (Norwegian @ £ $ { [ ] } €) raised no KeyPress, got past a MaskedEdit's mask, and did not start an edit in a DataGrid or the Properties window.
  • DriveListBox.Drive read in Form_Load was "/" on Windows; the drives had not come yet. Reads now wait for them. DriveListBox also has List, ListCount and ListIndex, as in VB6.
  • Kill of a read-only file deleted it on Windows; it is error 75, as in VB6. FileSystemObject.DeleteFile and File.Delete honour Force.
  • Name "a.txt" As "A.TXT" (a new case only) was error 58 on Windows and macOS.
  • GetAttr on Windows reports vbSystem and vbArchive, so it matches SetAttr. Dir(..., vbDirectory) leaves out hidden folders ($Recycle.Bin, System Volume Information) unless vbHidden is given; on Windows a folder named ".git" is not hidden.
  • CurDir("D") gave the current drive's folder instead of drive D's.
  • Make on Windows turns a device name (CON, NUL, COM1...) into "CON_", which Explorer can open and delete.

Added

  • tests-live/: a live evaluation of the AI assistant against an OpenAI-compatible server (33 tasks, behaviour checks in the real run time), with a report.

VibeBasic 0.10.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:41

Added

  • Windows and Linux support. VibeBasic runs on Windows 10/11 (WebView2) and Linux (WebKitGTK 4.1) as well as macOS.
    • Windows: real drive letters and backslash paths as in VB6, DriveListBox with "c: [label]", ChDrive, COM ports for MSComm (CommPort 3 is COM3), the Windows printer list, power status for SysInfo, and Ctrl as Ctrl.
    • Linux: /dev/ttyUSB* and /dev/ttyACM* serial ports, CUPS printers, battery status from /sys, and mounted drives under /media and /mnt.
  • Make app on Windows produces a single .exe with the project inside, the project icon and the version information (Properties > Details). On Linux it produces an executable plus a .desktop launcher and icon.
  • Downloads for every platform are built by GitHub Actions on each release: a Windows installer and portable zip, a Linux .deb and AppImage, and a macOS zip. Every push is tested on macOS, Windows and Linux.

Changed

  • The clipboard uses a cross-platform library off macOS; macOS behaves as before.

VibeBasic 0.9.0

Choose a tag to compare

@Stigern Stigern released this 23 Oct 14:49

A Visual Basic 6 clone for macOS with the Windows 98 look and a local-AI coding assistant. 0.9.0 is the biggest release yet: menus, graphics, class modules, the debugger windows, printing, VB6 project import, MDI forms, drag and drop and much more.

Download

VibeBasic-0.9.0-macos-arm64.zip: for Apple Silicon Macs (M1 and later). The app is not notarized by Apple: the first time, right-click VibeBasic.app and choose Open, or run xattr -cr VibeBasic.app.

Added

  • Menus: the Menu Editor (Tools > Menu Editor, Ctrl+E), a Win98 menu bar in every form (designer and run time) with submenus, checkmarks, separators, shortcuts and Alt/F10 keyboard, menu control arrays (Load/Unload), and PopupMenu.
  • Graphics on forms and PictureBoxes: Print, Cls, PSet, Line (B/BF, Step), Circle (arcs, pies, ellipses), Point, PaintPicture, TextWidth/TextHeight, CurrentX/Y, DrawWidth/DrawStyle/DrawMode, FillStyle/FillColor, FontTransparent, AutoRedraw with Image, the Paint event, ScaleMode/ScaleLeft/ScaleTop/ScaleWidth/ScaleHeight, Scale, ScaleX/ScaleY and SavePicture.
  • Class modules: Property Get/Let/Set, New, Class_Initialize/Terminate, Event/RaiseEvent/WithEvents, Implements, Friend, default members and For Each (NewEnum).
  • The Locals, Watch and Call Stack windows, Add/Edit/Quick Watch with break conditions, data tips in break mode, and Set/Show Next Statement.
  • The Printer object and Printers collection (NewPage, EndDoc, KillDoc, Orientation, A4/Letter), a print preview with the macOS print dialog, Form.PrintForm and CommonDialog.ShowPrinter.
  • Opening VB6 projects (.vbp, .frm, .frx, .bas, .cls) with an import report, and Project > Add File (Ctrl+D).
  • Language: TypeOf…Is, named arguments (x:=1), Option Base and Option Compare, GoSub/Return, On…GoTo/GoSub, Global, #If/#Const, the financial functions (Pmt, FV, NPV, IRR, Rate, …), byte functions (LenB, LeftB, …), Partition and Debug.Assert.
  • MousePointer and MouseIcon on forms and controls, Screen.MousePointer, the Validate event with CausesValidation, and Alt+letter accelerators.
  • Sub Main as startup, Command$ and Environ, version information, file types and command-line arguments in Project Properties; made apps get their version, copyright and file associations; App.PrevInstance and App.LogEvent.
  • MDI forms with child windows, Arrange, the WindowList menu, merged menus, and several instances of a form with New.
  • Drag and drop: DragMode/DragDrop/DragOver, OLE drag and drop with DataObject, and files dropped from Finder.
  • ADO in code (New ADODB.Connection/Recordset/Command, transactions, Filter, Sort), CreateObject, Scripting.Dictionary and Scripting.FileSystemObject.
  • RichTextBox TextRTF/SelRTF, LoadFile/SaveFile, Find and paragraph formats; CommonDialog Flags (multiselect, DefaultExt, colour init).

Fixed

  • A thorough review of all of the above fixed 48 more issues, among them: objects in Collections and arrays are released, each ADO Connection has its own transaction, data tips never run code, crafted pictures in .frx files cannot hang an import, controls follow their container's ScaleMode, docked PictureBoxes know their size, Font* properties work everywhere, menu shortcuts follow the typed letter, and New form instances are freed after Unload.

Full history: CHANGELOG.md