BNightly Build Notes for Alpha Anywhere

IMPORTANT: The nightly builds (previously called the 'pre-release' builds) are only available to customers with a valid Alpha Anywhere subscription. If your subscription has expired you will not be able to use the nightly build.

If your subscription is valid and you download and use the nightly build please keep in mind that if you do not renew your subscription after it expires your eligibility to use nightly builds will end.

 

Build 9998-5725 03 OCT 2025

 

The Features and Bugs Listed Below are for the current nightly build. These features/fixes will be included in the next official Update. These notes are for users who are testing the nightly build.
 

This is not an official patch, so you should not deploy this update to a production environment.

 

This nightly build is our internal, development build and it is made available to you for the sole purpose of testing the new features that have been added and the bug fixes that have been made since the last official release. We are making this nightly build available to you so that you can provide us with feedback on whether the changes we are making are working correctly and have not introduced new issues.

 

If you encounter any type of bug while using this nightly build, please send information about the bug (including full instructions on how to duplicate the issue, and a test case that we can run on our own machines) to a5v12bugs@alphasoftware.com.

 

Please do NOT post bug reports concerning the nightly build on the message board. Alpha Software engineers do NOT routinely monitor the message board and there is a good chance that your posting will be overlooked. Also, since your posting will be referencing unreleased code, it will only serve to confuse other users.

 

This nightly build is not intended to be used in a production environment.

 


 

Downloading the Universal Installer

IMPORTANT: A new installer (called the Universal Installer)  is used to install the nightly builds. To learn more about the Universal Installer, click here.

 

How to Install a Nightly Build

The Nightly build is installed using the Universal Installer. To open the Universal Installer, select the Help, Run Universal Installer menu command.

 

If you have previously installed a Nightly build (of any of the product variants) using the Universal Installer, the Universal Installer will display the install details on the Installed tab and you can simply click the Update button to install the latest Nightly build of that product variant.


However, if you have not previously installed a Nightly build using the Universal Installer, go to the the Available tab, select the product variant you want to install, click on the Version to Install link, select Nightly build from the Product to Install dropdown and set the install location. Then click the Install button

 

Videos

UX Component - JSON Forms How to create a custom Integer-Step control In this video we show how you can turn a standard textbox control into a custom Integer-Step control.

Watch video
Download component


Date added: 2025-08-21
UX Component - QUILL HTML Editor How to customize available fonts in the QUILL HTML editor In this video we show how to customize the fonts in the QUILL HTML editor.


Watch video

Date added: 2025-09-20
Grid Component - Context Menu Search How to add context menu searching to a Grid In this video we show how you can add a search feature to a Grid that is invoked by right clicking on a Grid row.

Watch video

Date added: 2025-10-03

 


 


 


 

Note About Unresponsive Application Server

Some customers have reported that their (classic) server unexpectedly stops responding to client requests. We have been working with these customers to identify the cause and resolve the issue, but we have not yet been able to duplicate the problem in order to troubleshoot it.

If anyone else is experiencing this issue, please submit a bug report with the relevant details. Please include the Application Server build number you are running on your server, your OS version, and any other details or patterns you are aware of that lead to the problem. If there are any crash dump files, please submit the most recent one, and if you have access and Xbasic error logging enabled, and there are logs covering the period of the most recent problem, please include them as well.

If you do not have at least access and Xbasic error logging enabled, please enable them so we can get an idea of the level of traffic and type of requests that your server is seeing.

Also for the sake of consistency and making sure we are all on the same page, please be specific about what the server is doing in your case, using the below terminology:


crashing - alpha5.exe or a5applicationserver.exe exited unexpectedly and is no longer found when viewing Task Manager.
stopping - alpha5.exe or a5applicationserver.exe is still running and the UI is responsive, but it shows that the Application Server status is not running or stopped.
hanging - alpha5.exe or a5applicationserver.exe is still running. The UI may or may not be responsive, and if responsive, it will show that the Application Server is running. However no requests made to the server will load properly in a web browser.
If you are using AlwaysUp, please try running the Application Server directly, as AlwaysUp is not supported, and using it greatly complicates troubleshooting and debugging.

From working with the customers that have reported this behavior so far, it appears that their servers are receiving a large number of malformed - and likely malicious - TLS/SSL connection attempts. As a stop-gap measure, implementing a Web Application Firewall (WAF), such as Cloudflare or similar services and products, has been shown to at least partially mitigate the issue. Having such a system in place offers many benefits beyond this particular case, and is considered a best practice for all web applications, regardless of server software.

Features

xbasic a5_calendar_html() Function - Generates an HTML calendar layout. The typical use case for this function is in a report to print a calendar control showing a date value. The syntax for the function is:

Syntax:

html = a5_calendar_html(n year, n month, c days)

where days is a comma delimited list of days to highlight (e.g. 5,6,7). You can also highlight a range of dates (e.g.5-8) and you can put a comment in a calendar cell (e.g 5:comment).

To use the function, add an HTML Layout control, to your report, define a calculated field using the a5_calendar_html() function (e.g. calc1 = a5_calendar_html(year(date),month(date),""+day(date)) ) and then add the calc field to the HTML Layout control.

Here is how the resulting report might look:

 

 

 

Open SSL -  OpenSSL 3.3.5 is included with all Alpha Anywhere servers and desktop environments. The Alpha Anywhere Application Server for IIS does not use OpenSSL to provide TLS/SSL service, but does use OpenSSL for making cUrl and http* requests.

OpenSSL 3.3.5 was released to address a known vulnerability. For more information regarding OpenSSL vulnerabilities, see https://openssl-library.org/news/vulnerabilities/index.html
 

CRON Jobs - -  You can now define CRON Jobs in Alpha Anywhere. CRON Jobs are server-side tasks that run on a schedule. For example, you might want to run a particular report at 3 am every Friday and email the report to certain recipients. Previously CRON Jobs could be set up using the Windows Event Scheduler service, but this service is not available on Alpha Cloud.

 

To define a CRON job, select the CRON Jobs category in the Web Projects control panel and then click the New button.

A CRON job is specified by calling an .a5w page that executes server-side code (typically Xbasic, but could be Node, Python, etc.)

 

 

When you click the New button, or edit an existing job, this CRON Job Editor dialog will be shown

 

To define a CRON Job, specify:

 

To define when the job should run, you can either select the Interval radio-button or the CRON expression radio-button.

If you specify an interval, you can specify an interval in minutes, hours or days (e.g. every 15 minutes).

NOTE: You cannot specify an interval that is shorter than 15 minutes

To define a CRON expression, select the CRON expression radio button. A CRON expression is a standard way of specifying when a CRON job should run. A CRON expression is comprised of 5 parts separated by spaces.

NOTE There are many on-line resources to help you construct CRON expressions.

 

 

 

If you click on the Build CRON Expression button, the following dialog is shown. The dialog shows the human readable description of the CRON expression.

 

 

You can also click on the Sample CRON Expressions hyperlink to get a display of some common CRON expressions.

 

 

For each CRON job that you define, you must specify that name of the .a5w page to run when the CRON job runs. The .a5w page should contain an Xbasic code block.

 

IMPORTANT; Once you have published your project (that includes one or more CRON jobs), you  must register your CRON jobs by running a special system page. __a5RegisterCronJobs.a5w. For example, assume the URL of your published site is https://mydomain.com/. You will need to run this page:  https://mydomain.com/__a5RegisterCronjobs.a5w. Tje page will return a message telling you how many CRON jobs we registered.

 

System Table

The CRON feature makes use of a system table, the  CRON Job Log. The CRON Job Log table is used to store information about the success or failure of each CRON job. If you have not defined this system table, it will be automatically created when you define a CRON job.The table is defined in the Project Properties dialog.

 

The a5_updateCRONLog() helper function can be used to update the CRON Job Log table. If a CRON job fails because of an error in the Xbasic code a new entry is automatically made in the CRON Job Log table. if the CRON job succeeds you must add code in your .a5w page to update the table.

Here is a sample .a5w page to print a report and mail it to a list of recipients;

 

<%a5

dim report AS C = "report1.a5rpt"
DIM FN AS C = a5_default_path + chr(92) + REPORT
DIM REPORTFN AS C = a5w_report_saveas(fn,"PDf")
dim ms as p
DIM ms.message_html as c = "Here is your report"
DIM MS.send_to as C = "person1@acme.com,person2@acme.com,person3@acme.com"
DIM MS.subject as C = "Your report"
DIM MS.from_alias as C = "AlphaSoftware"
DIM MS.from_email as C = "noreply@alphasoftware.com"
DIM MS.from_name as C = "AlphaSoftware"
dim ms.attachments as c = reportfn
dim key as c = "your_sparkpost_key"
p = email_send_sparkpost(key,ms)

'update the CRON Job Log table

if p.error = .f. then

    a5_updateCRONLog(a5_getprojectguid(),"name_of_cron_job",now(),"success")

else

    a5_updateCRONLog(a5_getprojectguid(),"cron1",now(),"failed")

end if
%a5

 

 

 

Grid Component - Context Menu Searching - When you right click on a row in the Grid, a menu with search options is now shown. To turn on this feature, check the Has 'Context Menu' search property in the Grid properties. By default, this property is checked.

 

 

 

Different search options are available, depending on the data type of the column you right click on.

In the case of a date or date/time field, you can search on friendly date values, such as today, yesterday, etc. You can also search for all records in a particular month or quarter.

For numeric and date columns you can search for records between two values.

 

 

 

 

Cordova - Cordova Project Settings - Plugins - SQLite -With the release of Android 15, Google now supports devices with 16KB memory page sizes. Previously, 4KB memory page sizes were used.

When publishing Cordova apps to the Google Play Store, a warning is shown if native libraries (.so files) are not aligned for 16KB memory pages.

This requirement will affect apps that use Cordova plugins that include native libraries (.so files). To date the only plugins we've identified that include native libraries are the series of SQLite plugins.


If you are using the Cordova SQLite plugin, you should be sure to use the latest version of the SQLiteStorage plugin (cordova-sqlite-storage). The latest version of the SQLiteStorage plugin includes .so files that are aligned for 16KB memory pages.


If you have previously included any of the other SQLite plugins, first uncheck the plugin and save the project. Next re-launch the Cordova app builder and select the SQLiteStorage plugin. This is the only SQLite plugin that has been updated by the plugin author to support 16KB memory pages.


For further details see:

Android 15 16KB Memory Page Size Support
Prepare your apps for Google Play’s 16 KB page size compatibility requirement


Xcode - General - Supported Destinations - The latest versions of Xcode have changed the default selections for the projects supported destinations The default supported destinations now includes Mac and Apple Vision.

If your intention is to build a Cordova app for an iPhone or an iPad and you are not building apps for the Mac or Apple Vision, then you should uncheck these options. If you upload your app to TestFlight and you see an error rejecting your TestFlight build with errors indicating a missing LSApplicationCategoryType key and a disabled com.apple.security.app-sandbox these are typically only required for macOS apps, not iOS apps.




 

Javascript - Client-side Templates - How to merge data into a client-side template using Javascript

var template = 'Hello {Firstname} {Lastname}';
var pTemplate = {template: A5.u.template.parse(template)}
var data = {Firstname:'Fred', Lastname: 'Smith'}
var html = A5.u.template.expand(data,pTemplate)
alert(html)

 

CRON Functions - Three new CRON function are available

 

 

Examples

dim CRONExpession as c

conExpression = "*/15 * * * *"
?cron_validate(cronExpression)

+"valid"
?cron_validate("")
= "Error: Too few fields"

?cron_nextExecutionTime(cronExpression)
= "2025-09-06T18:15:00.000-04:00"

 

?cron_describe(cronExpression)

= "Every 15 minutes"

 

UX Component - QUILL HTML Editor - Fonts - You can now customize the fonts that are available in the QUILL HTML editor. By default three fonts are available, Seris, Sans Serif and Monospace.


Watch video

 

To customize the available fonts click the smart field for the HTML editor fonts property.

 

 

This will open a fonts selection dialog.

 

Select the fonts you want to make available in the QUILL HTML editor.

When you open the font selection dropdown, the list of selected fonts is shown

 


 

Publish - Select Files by Date - When selecting files to publish, you can now filter the list of available files by date/time

UX Component - JSON Forms - Integer-Step Control - Additional functionality has been added to the Integer-Step control. 

You can now:

 

To set these properties of the Integer-Step control, edit the JSON form select the Integer-step control and navigate to the Other Properties section of the properties grid.

 

Bugs

AD Login - Fixed regression with Active Directory login

Reports - Page x of y - Fixed regression with PageXofY

UX Component- List - Fixed issue when List data source is a Javascript function

SQL Query Builder - Icons were not showing on Filter pane when AA was installed in a folder with spaces in the name.

UX Component - Refresh - When refreshing a List, two Ajax callbacks were executed.

Workspace Restore - Fixed multiple issues with Workspace Restore.

UX Component List - Synchronize Edits - Batch size - Fixed a regression when a List was synchronized and the batch size was greater than 0.

Grid Component - show/hide expression - Fixed regression when when expression was data.rowNumber > 0