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.
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.
IMPORTANT: A new installer (called the Universal Installer) is used to install the nightly builds. To learn more about the Universal Installer, click here.
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
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 |
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.
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:
c 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.
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.
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