Release Notes
This page lists the major changes in each release of AppSynergy.
Release v151 (December 2024)
- Auto Delete Expired Invites. App invites that are not accepted within 7 days are now deleted.
- Revised task queue implementation.
- Miscellaneous bug fixes and smaller improvements.
Release v150 (October 2024)
- New Sign In Options. We now support signing in with a Google Account, a Microsoft Account, or
a native AppSynergy account. The AppSynergy account supports optional 2-step verification using the
authenticator app of your choosing.
- Miscellaneous bug fixes and smaller improvements.
Release v149 (September 2024)
- New 2024 Style Sheet with Dark Mode. This style sheet now also contains Dark Mode support. If your device
preferences are set to dark mode, this style sheet will automatically switch to dark mode.
- Miscellaneous bug fixes and smaller improvements.
Release v148 (July 2024)
- Direct Edit of Field Tab Order. You can now directly edit a field's position in the tab order by double-clicking
its tab index on the inspector.
- Improved AppSynergy API documentation.
Check it out here.
- Miscellaneous bug fixes and smaller improvements.
Release v147 (June 2024)
- Phone Number formatting. There is now a standard function to format North American phone numbers into a consistent style.
See documentation here.
- New Database Email Routing Option. You can now set up a personalized email address on your own domain and route it
to your database email address.
See documentation here.
- Miscellaneous bug fixes and smaller improvements.
Release 146 (May 2024)
- AS2 Send and Receive. Enterprise Edition customers now have access to their own dedicated AS2 server
for electronic data integration (EDI) with trading partners. This fully managed server implements the EDIINT AS2 standard,
offering extensive configurability and support for various signing and encryption algorithms.
They also support compression, HTTP/HTTPS transmission, and message disposition notifications (MDNs) for
receipt confirmation.
- Speed improvements. On average a 3x improvement in the time required to load large database schemas.
Significantly faster table creation and modification for situations where the change does not require checking existing
apps for potential modification. Application of native roles after a schema change is now also up to 10x faster.
- Miscellaneous bug fixes and smaller improvements.
Release 145 (May 2024)
- SFTP Upload and Download. Intended for lightweight EDI purposes.
You can now upload any generated text (e.g. an X12 file) or any document, image or signature from your database
to a trading partner via SFTP. You can also download files.
See documentation here.
- Miscellaneous bug fixes and smaller improvements.
Release 144 (April 2024)
- YourAccountId@dbmail.appsynergy.com You can now send email to your database by including your database email
address in the To, Cc or Bcc lines of any email. You can find your Account ID via
Help > About. See docs here.
- Miscellaneous bug fixes and smaller improvements.
Release 143 (March 2024)
- Image Serving URLs. This is the first version of AppSynergy to use the new Cloud Storage based
image thumbnail process.
- Miscellaneous bug fixes and smaller improvements.
Release 142 (February 2024)
Release 141 (January 2024)
- Chart Settings > Advanced Options now revert to their previous value if new, invalid options are entered by mistake.
- Miscellaneous bug fixes and smaller improvements.
Release 140 (November 2023)
- Miscellaneous bug fixes and smaller improvements.
Release 139 (September 2023)
- Upgrade to MariaDB v10.11. The most notable new features are:
-
Backup & Restore capability for Audit Trail history records.
Since AppSynergy v73 you have been able to optionally enable the Audit Trail feature on a table-by-table basis.
Enabling the Audit Trail instructs the system to automatically keep track of all changes by saving timestamped history records;
this allows you to query the database AS OF a specific timestamp to see what it looked like at that point in time.
However, prior to v139, Audit Trail history records could not be backed up which limited their usefulness in certain production systems.
As of AppSynergy v139 history records are now included in the nightly backups, and these backups can be restored if needed.
- Miscellaneous bug fixes and smaller improvements.
Release 138 (August 2023)
- Two new 2023 Style Sheet variations (Grape and Lime) to provide a refreshed look for your applications.
Be sure all widget settings in your app are set to Theme Default for the style to truly show through.
If you select the top-most tab or menu object in your app and choose Format > Apply Theme Defaults all widgets
under the selected tab or menu, not just the tab or menu itself, will have their defaults reset to the theme default.
Also be sure to apply the CSS styles save and cancel to the Save and Cancel buttons respectively
on your modal panels to fully utilize the new style sheets (via Format > CSS Style...).
- Public apps with a fixed-width app canvas (the default) now center horizontally within the browser like non-public apps.
- Miscellaneous bug fixes and smaller improvements.
Release 137 (July 2023)
- Improved Printing. Fixed a bug that would sometimes cause data to be cut off when printing a multi-page report.
- Improved embedded app styling. You can now also customize the embedded app container with CSS.
- Miscellaneous bug fixes and smaller improvements.
Release 136 (June 2023)
- New AppSynergy 2023 style sheet. Significant improvements in default color scheme for Modal Panels that
have master-detail style layouts using tabs.
- Rewrite of internal Datastore architecture.
- Miscellaneous bug fixes and smaller improvements.
Release 135 (April 2023)
- Upgraded to Google App Engine Java 17 environment.
- Fewer App Reload Required messages.
- Added support for improved printing on certain mobile devices.
- Miscellaneous bug fixes and smaller improvements.
Release 131 (March 2023)
- Formatted Notes Field - Dynamic Toolbar. If Dynamic Toolbar is enabled then a field's text formatting toolbar is only
displayed while the field is being edited. The dynamic toolbar is enabled by default for newly created fields.
You can toggle this feature on/off for older fields via Format > Dynamic Toolbar.
- Miscellaneous bug fixes and smaller improvements.
Release 130 (February 2023)
- Miscellaneous bug fixes and smaller improvements.
Release 129 (January 2023)
- Fast Record Append. Appending a new record no longer forces redisplay of the other records in the list.
- Better handling of broken database VIEWs. Fixing a broken view no longer destroys references to it.
- Persistent SQL Console. The SQL Console now persists its contents for a given user on a given machine.
- Miscellaneous bug fixes and smaller improvements.
Release 128 (December 2022)
- Native Barcode Scanning on Android Mobile Devices.
The new BarcodeScannerPanel class
enables native 1D and 2D barcode scanning by using the camera on your mobile device.
Currently only Android mobile devices are supported.
- QR Codes. The BarcodeField class can now render QR codes. Barcodes are also now their own icon on the palette.
- Discard Changes. Record objects now have a Discard Changes action available.
Useful for building better Cancel button behavior.
- Mobile menus now render the selected option name in the title area.
- Improved copy and paste between applications. Invalid hard references are now removed when pasting between apps.
- Miscellaneous bug fixes and smaller improvements.
Release 127 (November 2022)
- Improved printing:
- You can now print an object located within a Modal Panel.
- You can now print a Box object (with Container Options > Display > Flex Container) as a means
of printing more complex reports with headers and footers.
- Various smaller visual improvements.
- Miscellaneous bug fixes and smaller improvements.
Release 126 (October 2022)
- Ability to reorder Button Actions.
- Ability to reorder Data Links.
- Improved Data Link efficiency.
- Miscellaneous bug fixes and smaller improvements.
Release 125 (September 2022)
- New Application API method DataWidget.getFirstValue(tableName, columnName)
that returns an equivalent value to the @FirstValue() token. Note that as with @FirstValue() the UI event triggering
the code can only reach down a single level in the parent-child record nesting hierarchy.
- Fixed issue with Custom Filters on mobile devices.
- Miscellaneous bug fixes and smaller improvements.
Release 124 (August 2022)
- You can now share an application directly from the Start page (i.e. without first editing the app).
- parasql.util.getMachineId() A new API function that returns a pseudo machine id that should be stable across sessions
with the same browser/machine combination.
- Miscellaneous bug fixes and smaller improvements.
Release 123 (July 2022)
- The Last Executed time is now shown on the Scheduled Events panel; this only applies for automatically
executed events, not those executed via Run Now.
- Miscellaneous bug fixes and smaller improvements.
Release 122 (June 2022)
- Auto Round Calculated Numbers A new setting under File > App Settings... forces automatic rounding on
calculated numeric fields such that the stored number of decimal places matches the displayed number of decimal places.
- parasql.util.round(num, places) A new utility function to round a number to the specified number of
decimal places.
- Miscellaneous bug fixes and smaller improvements.
Release 121 (April 2022)
- New parasql_blob_get() Function. A new PL/SQL function called parasql_blob_get()
makes it easier to extract the constituent parts from a blob field (e.g. Document Field, Image Field, Signature Field).
For example, parasql_blob_get(MySignatureField, 'latitude') would return the latitude where the signature was captured.
- REST API action HTML2PDF "makePublic" option. You can now specify that the PDF file created by this API call
is made public upon creation. This allows anyone with the URL to access the document without a digital signature.
- Miscellaneous bug fixes and smaller improvements.
Release 120 (March 2022)
- @NewPrimaryKeyFor(T.C) New formula token allows you to generate a primary key value for a specific base table.
Useful when inserting records into a database VIEW that has a base table with an AutoKey column for its primary key.
- Miscellaneous bug fixes and smaller improvements.
Release 119 (March 2022)
- Code Search. Via Tools > SQL Console... you can now search across your entire PL/SQL code base in one step
(i.e. search across all triggers, stored procedures, functions, scheduled events, and database views).
- Miscellaneous bug fixes and smaller improvements.
Release 118 (February 2022)
- MariaDB v10.6. Upgrade servers to MariaDB v10.6.x.
You can see the exact version your account is currently running via Help > About.
This upgrade primarily provides reliability enhancements (atomic DDL) and a very useful
JSON_TABLE() function
for those working with JSON data.
- Miscellaneous bug fixes and smaller improvements.
Release 117 (January 2022)
- Inbound Web Requests. You can now accept a GET or POST web request directly into your database and process
it with a trigger. Documentation is here.
- Miscellaneous bug fixes and smaller improvements.
Release 116 (December 2021)
- Miscellaneous bug fixes and smaller improvements.
Release 115 (November 2021)
- parasql_code_search('Orders') A new utility procedure, accessible from the SQL Console, allows you to search across
your entire code base (all triggers, routines, events and views) for a specific keyword.
For example, typing CALL parasql_code_search('Customer') would return a list of all triggers, routines and events
that contain that key word.
- Miscellaneous bug fixes and smaller improvements.
Release 114 (September 2021)
- Record Widget Auto Select First Record. If a Record Widget has a DataLink to a non-child widget, the first
record will be automatically selected upon render. This now matches the behavior of a ReportWidget.
- New Record Widget Custom CSS class show-selection. If you are using the AppSynergy 2021 Modern CSS stylesheet,
you can optionally add a show-selection style via Format > Style options.... This causes the currently
selected record to be highlighted with a blue bar as its left border (same as a selected row in a Report Widget).
- My Routines. When editing SQL the three-dot menu now includes a My Routines menu to quickly insert
references to your own procedures and functions.
- Miscellaneous bug fixes and smaller improvements.
Release 113 (August 2021)
- New Format > Allow Direct Edit option. Allows direct editing of foreign key fields
(i.e. does not force use of the Pick List).
- Migration to new VMs. New virtual machine builds for all database servers using the latest security
hardened hardware and OS techniques. Instances with a -v10 suffix are those that have been migrated,
those with a -v1 suffix will be migrated in coming weeks.
The instance name associated with your account is visible on the About panel.
- Miscellaneous bug fixes and smaller improvements.
Release 112 (July 2021)
- Miscellaneous bug fixes and smaller improvements.
Release 111 (June 2021)
- New Arrange > Resize option. You can now select multiple widgets (via Ctrl+Click) and
make them all the same width/height. The first widget selected determines the width/height applied to the others.
- Multicolumn Record Layout. A Record object can now be set to render in a multicolumn layout
via Options > Multicolumn on the toolbar. The number of columns rendered is based on the
available width vs. the width needed to render a single record.
Search the AppSynergy support forum for specific usage examples.
- Miscellaneous bug fixes and smaller improvements.
Release 110 (June 2021)
- New Enabled / Disabled option. When creating a Visibility formula you can now set its behavior to either
Visible / Not Visible or Enabled / Disabled.
Disabled buttons cannot be clicked but are still visible.
Disabled fields are made temporarily read-only.
Currently only buttons and fields are supported.
- Improved Code Hints. When editing trigger code you can now type NEW. or OLD. then Ctrl+Space
to choose from a list of columns in the trigger table.
Likewise you can type a table name like Customers. then Ctrl+Space to choose from a list of columns in that table.
If you type a partial table name like Cust then Ctrl+Space a list of tables starting with those letters
will be shown (e.g. Customers, CustomerOrders, etc.).
- New CSS print Class. The CSS class name print is now added to every widget's CSS class list while printing.
This allows you to customize the printed vs. on screen look of a widget.
- Improved Error Handling. When an error occurs as a result of clicking a ButtonWidget all further actions assigned
to that button are halted.
- Miscellaneous bug fixes and smaller improvements.
Release 109 (May 2021)
- New CSS Theme. A new CSS theme named AppSynergy 2021 Modern is now available for use.
You can apply this theme to new or existing applications.
- Fix-Width Apps. A newly created app now defaults to fixed-width.
You can change the width behavior of the App Canvas to dynamic via Format > Layout....
- Miscellaneous bug fixes and smaller improvements.
Release 108 (April 2021)
- Dynamic setReadOnly.
As of this release you can now dynamically change a field's read-only attribute at runtime via the API.
- Dynamic setIsRequired.
As of this release you can now dynamically change a field's required attribute at runtime via the API.
- External Users. Support for designating external users via their Security Role.
- Miscellaneous bug fixes and smaller improvements.
Release 107 (April 2021)
- Icons on Tabs. You can now set icons on tabs.
- Icons on Menu options. You can now set icons on menu options.
- New Icons. On the icon panel you can now set any Material Design icon via its name.
- Miscellaneous bug fixes and smaller improvements.
Release 106 (March 2021)
- New PDF_AUTOFILL API. Use a fillable PDF as a template (say, an insurance form) and database data to
generate a completely filled PDF with a single REST API call.
See the documentation here.
- Miscellaneous bug fixes and smaller improvements.
Release 105 (January 2021)
- Automatic Code Completion. When editing code you can now press Ctrl-Space to get a list of auto completion
hints including table names, column names and keywords. Use sometablename. Ctrl-Space to hint columns from
a particular table. As you type the list of options narrows; tab or enter uses the highlighted option.
- Drag and Drop Values Between Fields. You can now designate a field widget as Draggable (via Format > Draggable)
and then define another field widget as a drop target (via Format > Set as Drop Target...).
This allows the user of your application to drag values from one field to another.
- Miscellaneous bug fixes and smaller improvements.
Release 104 (January 2021)
- Bulk Image and Document Import. You can now bulk import images and documents into AppSynergy Image Fields and Document Fields,
respectively. Contact AppSynergy support for details.
- Miscellaneous bug fixes and smaller improvements.
Release 103 (December 2020)
- New AppSynergy Data Migration Guide to make getting started easier.
- Firefox browser compatibility fix for scrolling records.
- New NOTESFIELD subtype to force-map a VARCHAR column to an AppSynergy Notes Field Widget.
Now used by default for new Federated tables with columns longer than VARCHAR(255).
- SendGrid for Invites. If your AppSynergy account is linked to a SendGrid account for sending email,
invitations sent via Share App will now be sent via SendGrid using your default From address.
- Miscellaneous bug fixes and smaller improvements.
Release 102 (November 2020)
- Document fields now accept files via drag and drop.
- Image fields now accept image files via drag and drop.
- New Button Styles. New Icon Only button styles (see toolbar > Style) with optional tool tip (set via toolbar > Label...).
- New Time Field Style. New Drop Down time field style (see toolbar > Style) renders a time field as a drop down with 15 minute increments.
- Faster delete of multiple UI widgets in auto save mode.
- Enhanced About panel.
- Miscellaneous bug fixes and smaller improvements.
Release 101 (October 2020)
- Application API: new public DataWidget methods for working with queries.
- Conditional formatting of report columns via the "rendercell" event. See the support forum for an example.
- Miscellaneous bug fixes and smaller improvements.
Release 100 (September 2020)
- PDF Generation. Improved API semantics and documentation.
See the documentation here.
- Making RESTful API calls from PL/SQL. Improved Outbound Web Request semantics and documentation.
See the docs here.
- Miscellaneous bug fixes and smaller improvements.
Release 99 (August 2020)
- Improved UI for certain administrative panels (e.g. Tools > Database Users and Share App).
- All new Tutorial Videos. See Help > Tutorial Video x for details.
- Miscellaneous bug fixes and smaller improvements.
Release 98 (July 2020)
- New Help > About... option. Shows current AppSynergy version number and a list of all tables directly
used by the application.
- New Report object Unhide Column > Unhide All menu option. Unhides all hidden columns.
- By default newly created Pick Lists now only include the first five columns from the table; other columns and tables
can be added manually if desired.
- TimeZone Data. TimeZone data has been loaded into the database so that SQL functions like CONVERT_TZ().
- Miscellaneous bug fixes and smaller improvements.
Release 97 (July 2020)
- Global CSS Themes. AppSynergy has supported fully custom CSS themes since v81.
This release provides new, built-in standardized CSS themes that you can use right away.
(You can also copy and paste a standard theme to a custom theme and modify it as desired.)
To apply a new theme to your application simply select the desired theme via File > App Settings... > CSS Theme.
You may also need to reset various UI objects to their theme defaults via Format > Apply Theme Defaults to have
the theme's styling be visible. Consider changing Tab and Menu object styles to Modern via the toolbar's Style drop down
(note that Modern is now the default for newly created menus and tabs).
Consider using a Box object to hold title text, buttons and virtual fields above your Record and Report objects as
custom themes can recognize the nesting and apply formatting conditionally without any additional work.
- Round Buttons. Set the button's Style to Round via the tool bar.
- Miscellaneous bug fixes and smaller improvements.
Release 96 (May 2020)
- Improved Palette. The palette is now resizable. Table names and column names can now be dragged directly from the palette
into records, reports and charts. Columns can be sorted alphabetically.
- Improved Report Formatting. Improved formatting of grouped columns plus additional granular formatting options
now available via CSS.
New computed column option to Hide Summary Values in Rollup Reports permits computed columns in rollup reports
that are not aggregations to render without summary rows.
- Improved Chart Rendering. Many more chart settings are now available. You can now also specify custom chart colors via CSS.
- Ability to use Ctrl+Click to add/remove objects to/from the selection in design mode (formerly Shift+Click).
- New menu option Edit > Group into Box. If you select multiple objects (via Ctrl+Click) you can group them into
a Box widget with this command (Ctrl+G). As of this version fields within records cannot be grouped.
- New menu option Format > Apply Theme Defaults. This will remove any custom color and font settings from the selected
object AND all of its child objects so that it is easier to apply a fresh CSS theme to an existing application.
- Improved error handling when attempting to send email with oversized attachments with Google as the email transport
(issue already resolved with SendGrid as email transport).
- Upgrade to MariaDB 10.4.x server.
- Miscellaneous bug fixes and smaller improvements.
Release 95 (March 2020)
- Miscellaneous bug fixes and smaller improvements.
Release 94 (February 2020)
- Resizable code editors. Certain code editors are now user resizable.
- Miscellaneous bug fixes and smaller improvements.
Release 93 (January 2020)
- Security Changes. An Administrator of a database now has the ability to run or modify any application on that database.
Previously, an Administrator had access to all data in the database, but could only run or modify applications
that were owned by them or shared with them.
- Miscellaneous bug fixes and smaller improvements.
Release 92 (December 2019)
- Multiple built-in Tab styles. Click the Style button on the tool bar to easily select from multiple tab styles.
Each style can be further customized via CSS.
- Radio Button Fields. A Drop Down field can now render as either a traditional drop down list or a set of
vertically or horizontally spaced radio buttons. Click the Style button on the tool bar to select the desired style.
Each style can be further customized via CSS.
- Multiple built-in Button styles. Click the Style button on the tool bar to easily select from multiple button styles.
Each style can be further customized via CSS.
- Miscellaneous bug fixes and smaller improvements.
Release 91 (November 2019)
- Inline editing of tab, menu option, and modal panel titles. You can now double click on these elements to edit their text.
- Miscellaneous bug fixes and smaller improvements.
Release 90 (November 2019)
- Mobile Hamburger Menu. The MenuWidget class now has a Style option on the tool bar that allows you to render the menu
as a normal menu or a mobile optimized "hamburger" menu.
- Miscellaneous bug fixes and smaller improvements.
Release 89 (October 2019)
- Optional native database roles. AppSynergy (formerly ParaSQL) had role-based user management prior to such facilities being
available at the database engine level and so therefore implemented its own role management system. Although secure and easy to use,
this role management system could become slow with large schemas and many users. This release optionally migrates the
existing role system onto native roles, which will improve performance for use cases involving
large schemas and many users.
- Miscellaneous bug fixes and smaller improvements.
Release 88 (September 2019)
- Ability to disable Auto Save. The default automatic save can be slow under certain circumstances
(e.g. changes to very large applications, deleting a large number of objects, moving objects with the cursor keys, etc.).
By turning off Auto Save (see File > App Settings...) you can dramatically speed up these types of modifications.
- Improved runtime Filter menu.
- Miscellaneous bug fixes and smaller improvements.
Release 87 (August 2019)
- Miscellaneous bug fixes and smaller improvements.
Release 86 (July 2019)
- Load balancer compatibility improvements.
- Miscellaneous bug fixes and smaller improvements.
Release 85 (June 2019)
- AppSynergy website refresh.
- Miscellaneous bug fixes and smaller improvements.
Release 84 (May 2019)
- Automatic federated driver Caching. You can now optionally specify that a federated driver automatically cache its results.
Caching data provides several benefits, including faster access to data and reducing the number of API calls, which improves performance.
Multiple connections can share the cache over time. You can enable and configure caching features by setting the necessary
connection properties on a federated data source.
- Changes related to ParaSQL becoming AppSynergy by ParaSQL.
- Miscellaneous bug fixes and smaller improvements.
Release 83 (March 2019)
- Enhanced PDF Generation. Now you can specify table headers that can repeat across multiple PDF pages,
enforce widow and orphan control, put page numbers in footers, and more.
- Miscellaneous bug fixes and smaller improvements.
Release 82 (February 2019)
- Dynamic Federated Data Sources. Federated Tables created with v82+ will dynamically pull their Federated Data Source
information (e.g. URL, user name, password, etc.) from the data source at runtime. Previously, this information was copied
from the data source to the Federated Table when the table was created.
- Miscellaneous bug fixes and smaller improvements.
Release 81 (February 2019)
- Custom CSS Themes. You can now specify a custom CSS theme for your application. Any widget attribute set to Default
in your application will now adopt the characteristics of the theme currently in effect for the application.
CSS Themes are account wide in scope, so the same CSS theme can be applied to multiple applications.
- See File > CSS Themes... to create a custom CSS theme.
- See File > App Settings... to apply a custom CSS theme to your application.
- See Format > Style options... to apply a custom CSS class to a widget. Custom CSS classes allow you to
create object sub-types with consistent characteristics. For example, you might create a custom CSS class called
FieldLabel that is a certain color and font size, then apply that custom CSS class to all your field labels.
- Edit > Select All Peers and Edit > Select All Similar Peers. You can now Select All widgets that are peers of
a selected widget, or Select All Similar that are peers of the same type.
- Multi-Select Improvements. You can now select multiple widgets and change their Custom CSS Class, color, font size etc.
all at once.
- Miscellaneous bug fixes and smaller improvements.
Release 80 (January 2019)
- SendGrid Integration. Send email notifications from anyone@yourcompany.com via our new SendGrid
email transport option. Email may include attachments. See Help > Sending Email for details.
- By default ParaSQL uses Google to send email. When sending email via Google the only valid from_address is
no-reply@parasql.com or the email address of the currently signed in Google Account user.
This is too restrictive for many use cases including invoicing, marketing, etc.
- ParaSQL can optionally send email via your SendGrid account (www.sendgrid.com).
This will allow you to send email from anybody@yourcompany.com without restriction.
After setting up your SendGrid account (be sure to visit SendGrid > Settings > Sender Authentication to authenticate
your domain) you can provide a SendGrid API Key to ParaSQL for sending email.
All outgoing email will be signed by your domain and sent with TLS security.
- Using SendGrid you can now send email campaigns with open tracking, link tracking, unsubscribe groups and personalizations
with substitutions so that each individual mail envelop can be personally addressed.
- Miscellaneous bug fixes and smaller improvements.
Release 79 (December 2018)
- Shopify Edition. ParaSQL now has a special Shopify Edition that is pre-integrated with Shopify.
Build custom Shopify applications and extensions with drag-n-drop simplicity.
- Miscellaneous bug fixes and smaller improvements.
Release 78 (December 2018)
- SQL Tool Bar Improvements. The SQL Tool Bar has been enhanced with a wide array of code snippet and common function examples.
You can now also search with Ctrl-F and search and replace with Ctrl-Shift-F.
- More Flexible Group By. Group By can now be used in conjunction with Order By (i.e. sort order) in non-rollup reports.
Ordering is performed after grouping.
- Upgrade to MariaDB 10.3.x Series
- Cursor For Loop. See the SQL Tool Bar > Code Snippets > Cursor For Loop for a syntax example.
This new cursor style makes writing business logic in the database server layer easier by eliminating the need to declare
each cursor variable, fetch each variable, test for more rows and open/close the cursor itself.
- Miscellaneous bug fixes and smaller improvements.
Release 77 (December 2018)
- Create & Edit Database Views. When creating a new table there is now the option to create a Database View.
When editing an existing Database View you can see both the existing column structure (Column View) and edit the source code used
to create the view (View Source).
Note that changing a column name in a view will break any application that references it and must be manually fixed by the developer.
- A Document Field may now optionally upload its file with public read access.
The default is still non-public and requires a digitally-signed time-expired download link to access.
The URL to access a public file is https://storage.googleapis.com/YOUR_ACCOUNT_ID.storage.parasql.com/OBJECT_NAME
- New menu options Arrange > Align top/bottom/left/right to make layout easier.
All alignment is relative to the first object selected.
- Miscellaneous bug fixes and smaller improvements.
Release 76 (October 2018)
- Box Widget. A new Box Widget object has been added to the palette.
This can be used for grouping objects together.
Display options allow you to optionally organize child objects in a flow for responsive design use cases
(i.e. the Box Widget is a flex container and child widgets are flex items).
- Format > Layout options... enhancements to enable better control of flex items.
- Miscellaneous bug fixes and smaller improvements.
Release 75 (September 2018)
- Large App Support. This Enterprise Edition feature enables support for AppSynergy applications up to approximately
10x the size of a normal AppSynergy application. To enable Large App Support for a given application, go to
File > App Settings > Large App Support and change the setting to Enabled.
- Miscellaneous bug fixes and smaller improvements.
Release 74 (September 2018)
- The Record object's Edit > Delete All Children command now really deletes all children except
the Primary Key field, which is hidden. This means that now Foreign Key columns will be deleted when using this command.
If you want them hidden, you must now add them back and then use the Edit > Hide Field command.
- Broken VIEWs are now displayed on the Palette with an error message in place of the column names.
A VIEW may become broken if an underlying table is altered or deleted.
- Miscellaneous bug fixes and smaller improvements.
Release 73 (August 2018)
- Enterprise Audit Trail. Automatically track all changes made to your data.
Once enabled for a particular table, you can query the table to see what the data looked like AS OF a specific time,
or you can query to see ALL changes made to a particular record. Easily see when data was added, changed, or deleted.
This is an Enterprise Edition feature and must be enabled for your account.
- Miscellaneous bug fixes and smaller improvements.
Release 72 (July 2018)
- Highlight Required Input is now the default for newly created Record objects.
- Improved code editor for editing a field's formulas.
- Triggers are now visible from the Edit Table panel; click a trigger to edit it.
- Objects within Records can now be pinned to the bottom and/or right corners.
- Browser API enhancements. Convenience method ReportWidget.getSelectedValue() has been added.
Also parasql.app.getWidgetById() can now return the Report object used for a field's pick list.
See the API documentation for details.
- Miscellaneous bug fixes and smaller improvements.
Release 71 (June 2018)
- Miscellaneous bug fixes and smaller improvements.
Release 70 (May 2018)
- Gantt chart improvements. Data links to other objects now work correctly. Null dates now work correctly. New 'click' event.
- Miscellaneous bug fixes and smaller improvements.
Release 69 (April 2018)
- Inbound Mail (Now Production). AppSynergy now has the ability to receive email into your database,
including file attachments.
InboundMail (contains the subject and body of the received email with all formatting intact),
InboundMailAddress (contains a list of all the TO, FROM, CC and other email addresses associated with each email), and
InboundMailAttachment (contains a row for every email attachment associated with each email - stored as
a AppSynergy Document field).
- Outbound Web Request (Now Production). AppSynergy Outbound Web Request is now production ready.
- PDF Generation. AppSynergy now has the ability to generate PDF files from the HTML you specify.
Once enabled for your account, the generated PDF can be stored in the database as a Document Field and/or sent
as email attachments (e.g. for emailing invoices as PDF attachments).
- Outbound Mail With Attachments. AppSynergy now has the ability to send email from the database that includes
one or more files attached from your database.
- Miscellaneous bug fixes and smaller improvements.
Release 68 (March 2018)
- Formatted Notes Field. New database field type that enables formatting like
bold, bullets and links. Copy and paste formatted text from other applications like email.
- Upgrade to MariaDB 10.2 Series MariaDB 10.2 provides some important new capabilities:
- Enhanced Analytics Functions. These are called "Window Functions" as they work on a sliding window of data.
Details here.
- Recursive Common Table Expressions. A recursive CTE will repeatedly execute subsets of the data until it
obtains the complete result set. Particularly useful for handing hierarchical or tree-structured data.
Details here.
- JSON Functions. Functions for parsing JSON data; useful in conjunction with the newly released
HTTP Request from the Database features which allows developers to make RESTful API calls to remote services.
This joins the existing XML parsing function ExtractValue().
Details here.
- Miscellaneous bug fixes and smaller improvements.
Release 67 (February 2018)
- Copy & Paste Objects Between Applications. Copy and paste objects between applications.
At the time of this release, this feature works with the following browsers on Windows: Chrome, Firefox.
Note: due to browser imposed security restrictions, you must use Ctrl-C to copy and Ctrl-V to paste
between applications.
- Miscellaneous bug fixes and smaller improvements.
Release 66 (February 2018)
- Tools > Stored Routines... Easily create and manage Stored Routines in your database.
A stored routine can be either a Stored Procedure or a Stored Function. See the Help button for details.
- Browser API Enhancements. New parasql.ui.ImportDataPanel() class. You can now have a non-Administrator
import data at the click of a button. See the Browser API documentation for details.
- Dedicated Server Access via DNS Names. Full support for direct dedicated server access via DNS names rather than IP addresses
without the need for additional security certificates.
- Added support for TLSv1.2.
- Miscellaneous bug fixes and smaller improvements.
Release 65 (January 2018)
- Capture Email Into The Database (alpha). Receive email messages and store them in the database
for further processing. When an email message is received in the database, a trigger can fire that allows you to parse
subject lines, link the email to other records, etc.
- Tools > Scheduled Events... Easily create and manage scheduled events in your database.
Scheduled Events are like database-native batch jobs or cron jobs and can be used for a variety of tasks
(e.g. automatically generating Purchase Orders based on inventory levels and restock thresholds, or periodically refreshing
local tables from remote federated tables).
- Highlighting of Parent Records in Design Mode. Selecting an object that is a child of a Record object now causes the
parent record(s) to show a dashed orange border in design mode. This makes it more intuitive to identify nested record relationships.
- AppSynergy API Enhancements: Various new methods added the parasql.app. See the documentation for details.
- Extended table comments. When creating a table, you can now specify longer comments about the table.
- Added support for Federated Tables to use remote MS SQL Server tables with a schema other than dbo.
- Miscellaneous bug fixes and smaller improvements.
Release 64 (December 2017)
- Miscellaneous bug fixes and smaller improvements.
Release 63 (November 2017)
- New Application API Class TransactionSet. See the Application API documentation for details.
- Elevated SQL Console Permissions. You can now issue CREATE EVENT, SHOW EVENTS and SHOW CREATE VIEW commands
via Tools > SQL Console....
- Miscellaneous bug fixes and smaller improvements.
Release 62 (November 2017)
- Joins on Pick Lists. You can now join other tables into a standard Pick List panel.
For further customization, use a fully custom pop-up Modal Panel.
- Deep Merge Queries. If you select a Foreign Key value from a Pick List, it can now populate nested
child records dynamically. Previously only the top level child record could be populated dynamically.
- Miscellaneous bug fixes and smaller improvements.
Release 61 (October 2017)
- Custom Chart Options. You can now set custom chart configuration options via Chart Type > Custom Options....
This gives the application designer fine grain control over chart colors, initial map zoom levels, map icons and much more.
See the Help for details.
- Integration Server for PostgreSQL is now GA.
- Miscellaneous bug fixes and smaller improvements.
Release 60 (September 2017)
- Report Object dblclick Event. Report objects can now emit a dblclick event when a row is double-clicked
by the user. See the Events... option on the tool bar for details.
- Integration Server for PostgreSQL (Beta). Integration server (aka Federated Tables) support for PostgreSQL databases
is now available in Beta. See Tools > Data Sources > Help for details.
- New Browser API Methods getSelectedRowIndex() and setSelectedRowIndex(). Two new Browser API methods allow for
getting and setting the selected row in a Record or Report object.
- Miscellaneous bug fixes and smaller improvements.
Release 59 (August 2017)
- Integration Server for Microsoft SQL Server improvements. Integration servers (aka Federated Tables) now work
with MS SQL Server NVARCHAR and NCHAR datatypes, including Auto Discovery and Auto Mapping of columns.
- Email improvements. When sending email via the parasql_email_out table you many now specify more than
one TO address, CC address, or BCC address by separating multiple addresses with a semicolon.
Also a new status column was added to the parasql_email_out table to help with error diagnostics.
- Miscellaneous bug fixes and smaller improvements.
Release 58 (July 2017)
- Reliability Improvements. Changes to prevent a user from accidently modifying the same app in
two separate browser tabs.
- Miscellaneous bug fixes and smaller improvements.
Release 57 (July 2017)
- @ReportValue() and MultiSelect. @ReportValue() will now return a comma separated list of values
if Allow Multiselect is enabled. You can use this in an Advanced filter with an IN clause as follows:
MyTableName.MyColName IN( @ReportValue(ID1234, OtherTable, OtherCol) )
- Does Not Contain Filter. New filter type to find rows that do not contain a certain word.
- Performance Improvements. Customers should experience generally faster query response times.
- Miscellaneous bug fixes and smaller improvements.
Release 56 (June 2017)
- Copy & Paste in Design Mode. You can now Copy and Paste widgets when building or modifying an application.
- Shift-Click Multiselect in Design Mode. You can now Shift-Click multiple widgets in design mode to add or remove them
to the current selection. Operations like copy, paste, move, etc work on the entire selection.
- Miscellaneous bug fixes and smaller improvements.
Release 55 (June 2017)
- Miscellaneous bug fixes and smaller improvements.
Release 54 (June 2017)
- SQL Console. New SQL Console for issuing administrative commands directly to the database.
See Tools > SQL Console... for details.
- Gantt Charts. New support for Gantt Charts. Simply drag a Chart widget from the palette and set its
Chart Type to Gantt via the tool bar.
- Chart Printing. Chart objects can now be printed using the Print Object action.
- Miscellaneous bug fixes and smaller improvements.
Release 53 (May 2017)
- Localization Support. The runtime UI is now localized for the following languages:
English, Spanish, Dutch, German, French. As always you can build your application in any language,
however now certain panels that may appear when running your application (e.g. Pick Lists, Filter, Confirm Save, etc.)
are now localized.
- Miscellaneous bug fixes and smaller improvements.
Release 52 (May 2017)
- New Edit > Find Object... menu option. You can now search an entire application for a specific object ID.
Typical usage: if a formula or error message refers to a particular object ID (e.g. ID1234) you can now search on that
ID to locate the object even if it is hidden or buried under multiple tabs, menu options, modal panels, etc.
- New Browser API method parasql.app.signOut() to sign the current user out of the system.
- New Browser API class parasql.ui.MessagePanel to display error info to the user.
- Miscellaneous bug fixes and smaller improvements.
Release 51 (April 2017)
- Button Icons. Buttons may now have an optional Material Design icon.
- Button Events. Buttons may now fire click events in addition to having actions. Events are fired before actions.
- Miscellaneous bug fixes and smaller improvements.
Release 50 (April 2017)
- Miscellaneous bug fixes and smaller improvements.
Release 49 (April 2017)
- Server API. New Database API that can be used to interact with the database.
Use case: use a simple command line tool like curl
(used to send REST API requests from shell scripts on any operating system) to automatically extract a CSV file.
See the Help button under Tools > API Keys... for more information.
- More Child Record Options. Two types of restrictions on the type of child records have been lifted.
First, records from the same table can now be placed within themselves; this enables linking to self (e.g. a company table
with a column parent_company_id that links to company.id). Second, records can be dropped within records that
are not automatically joined; a warning message is displayed and you will have to establish the Data Link manually.
- Palette Improvements. The palette now shows icons for primary keys and linked columns (aka Foreign Keys).
- Miscellaneous bug fixes and smaller improvements.
Release 48 (March 2017)
- Report Option Allow Multiselect. A Report can now optionally display check boxes to allow the user to
select multiple rows; enable/disable via Options > Allow Multiselect on the tool bar.
Which rows are selected can be determined via a new API method parasql.schema.DataRow#getIsSelected.
Currently this feature is only useful in conjunction with the API.
- Miscellaneous bug fixes and smaller improvements.
Release 47 (February 2017)
- Event Listeners. Various objects including fields and HTML widgets now emit events in response to user activity.
See the Events... option on the tool bar for detailed information. Sample usage scenarios:
- Add a "keypress" event listener to a Quick Search field so that pressing the Enter key automatically clicks a search button.
- Add a "render" event listener to an HTML widget so that you can perform custom rendering when the widget is displayed.
- widget.addEventListener(event, listener) New API methods enable the adding of event listeners to widgets.
See the API documentation.
- Report Column Allow Wrap. A Report can now optionally wrap text in any column;
use Report Column > Align > Allow Wrap to enable/disable.
- Miscellaneous bug fixes and smaller improvements.
Release 46 (January 2017)
- Barcode Fields. Simply drag a Virtual Field from the palette and chose Barcode as its type.
Your barcode field can then use a simple formula like @value(MyTable.MyField) to set its value.
Barcodes can be rendered in any of the following formats:
CODE128 (automatic mode switching), CODE128 A/B/C (force mode), EAN-13, EAN-8,
UPC (A), CODE39, ITF-14, MSI10, MSI11, MSI1010, MSI1110, Pharmacode, Codabar.
- @ReportValue(ID, TableName, ColumnName) Expressions can now reference data in the selected row of a Report object.
Report objects do not trigger recalc, so this function should only be used in query filters, default value calculations, etc.
- Report Action Clear Selection. New action method for buttons to clear the selected row in a Report object.
- Report Option Calculate Total Row Count. Report objects have a new option that allows you to optionally
calculate the total number of rows matching the filter. This is turned off by default as it slows query performance.
The total row count is displayed alongside the Next and Prev buttons.
- Application API Documentation. See Help > Application API for further details.
- Improved HTML Widget snippets. Many now use the Material Design icon font.
- Miscellaneous bug fixes and smaller improvements.
Release 45 (January 2017)
- Miscellaneous smaller improvements.
Release 44 (January 2017)
- Federated Tables Improvements:
- Federated Tables JDBC is now beta.
- Miscellaneous bug fixes and smaller improvements.
Release 43 (November 2016)
- New API methods for selecting tabs and menu options via File > App Scripts... code. See the support forum for details.
Note that programming features are not covered by standard support.
- Miscellaneous bug fixes and smaller improvements.
Release 42 (October 2016)
- Miscellaneous bug fixes and smaller improvements.
Release 41 (September 2016)
- Modal Panels. A modal panel is a pop-up dialog that displays information to the user. To create a modal panel
simply drag a modal panel icon from the palette and drop it into your application. You may drop normal UI objects in your modal panel
and connect to them from other parts of your application as needed.
The modal panel itself has actions Show and Hide that can be connected to by buttons to open and close the modal
panel in response to button clicks. Data Links may also be used.
- Inline Editing of Text and Buttons. You may now double-click to edit the text in a Text object or Button object directly.
This feature only works with modern browsers like Chrome and MS Edge.
- Movable Panels. Any user interface panel may now be dragged by its title bar to reposition it.
- Miscellaneous bug fixes and smaller improvements.
Release 40 (August 2016)
- New Auto Select First Row option for Report objects. Under Options on the tool bar you may now choose
if you want a Report object to automatically select its first row upon being loaded. If the Report object has a Data Link to another
object, the Data Link will be triggered as well.
- New Format > Highlight Required Input option for Record objects. If selected, the fields in the Record will highlight
themselves if they are required but blank. You can select the color used for highlighting.
- Miscellaneous bug fixes and smaller improvements.
Release 39 (July 2016)
- New Print Object action. Now Record objects, Report objects, Tab objects and Menu objects can be printed individually.
This allows, for example, designing a particular tab or menu option just for printed output; the header
and other objects in the application will not be printed, just the selected object and its children.
- New Format > Page Break After Record menu option. You can now control whether records are printed continuously or with
a page break after each record; this only applies if the Record object is printed with the new Print Object action.
- Miscellaneous bug fixes and smaller improvements.
Release 38 (June 2016)
- New Database Triggers Tool Bar to make coding triggers easier.
- New Report object Computed Column Tool Bar to make coding formulas easier.
- New Chart object Computed Column Tool Bar to make coding formulas easier.
- Improved error checking when modifying tables.
- Improved performance when applying Security Roles to a large number of users.
- Miscellaneous bug fixes and smaller improvements.
Release 37 (May 2016)
- Streaming Export. Report objects now have a new action available: Export Data (All Rows Matching Filter).
This options exports all rows matching the current filter to a CSV file on your computer.
- Miscellaneous bug fixes and smaller improvements.
Release 36 (May 2016)
- Added support for Chrome 50 on High-DPI displays.
- Miscellaneous bug fixes and smaller improvements.
Release 35 (April 2016)
- Signature Fields. You can now add a column of type Signature to any table.
A Signature Field allows you to sign with your finger or stylus on a touch-enabled device or with a mouse on a non-touch device.
The captured signature is stored along with the GPS coordinates of where the signature was captured, which can be
displayed on a map by clicking View Signature Info.
You can also place a transparent signature field over an image to annotate the image.
- Miscellaneous bug fixes and smaller improvements.
Release 34 (April 2016)
- Streaming Data Import. You can now import much larger files using the File > Import Data... option.
Import now also has greatly improved error detection and reporting.
- Faster data retrieval for complex Record objects with lots of nesting.
- Miscellaneous bug fixes and smaller improvements.
Release 33 (March 2016)
- Federated Tables Engine (beta 3):
- Adds support for Virtual Foreign Keys from a normal table to a connected table.
- Replace Local Table. Checking Replace Local Table will cause any existing local table to be overwritten with the new federated table specification; this is useful should you need to update an existing connected table with new information provided by an updated Data Source definition (such as a new password).
- Salesforce.com Connection Pooling. This yields a massive performance improvement.
- Note: this is the third beta release of Federated Tables Engine.
Please review the release notes below for more info on Federated Tables; this only describes the changes/improvements.
Federated Tables allows you to connect to tables from remote data sources and work with them in a ParaSQL app almost
as though they were local database tables.
You can view, add, edit and delete data, and join tables regardless of if they are local or remote.
- Miscellaneous bug fixes and smaller improvements.
Release 32 (February 2016)
- Federated Tables Engine (beta 2):
- Added Salesforce Integration. Federated Tables Engine can now simultaneously connect to your Salesforce data.
The connection requires a Salesforce Professional Edition, Enterprise Edition, Unlimited Edition, or
Developer Edition account with the API enabled.
- Greatly enhanced auto-discovery for column mapping with full manual override.
- Note: this is the second beta release of Federated Tables Engine.
Please review the release notes below for more info on Federated Tables; this only describes the changes/improvements.
Federated Tables allows you to connect to tables from remote data sources and work with them in a ParaSQL app almost
as though they were local database tables.
You can view, add, edit and delete data, and join tables regardless of if they are local or remote.
- Added new import option to Insert or Update as needed. This options allows you to import a file that contains both updates of existing records and new records in the same file.
- Miscellaneous bug fixes and smaller improvements.
Release 31 (January 2016)
- Federated Tables Engine (beta 1):
- This is the initial beta release of Federated Tables Engine.
Federated Tables allows you to connect to tables from remote data sources and work with them in a ParaSQL app almost as though they were local database tables.
You can view, add, edit and delete data, and join tables regardless of if they are local or remote.
- Once you have been set up on a Federated Tables account, you may use Tools > Data Sources... to establish a data source and test its connection.
After a data source has been tested successfully, you may click the Create Table icon on the Palette, then select Table Connected From Data Source and follow the prompts.
- Connected tables are displayed in orange on the Palette.
- When you first create a Connected table, it will not have any Primary Key info.
Click Modify Table on the Palette and read the Help to add a Virtual Primary Key and/or Virtual Foreign Key(s) as needed.
You will not be able to edit a Connected table without a Virtual Primary Key.
- Federated Tables support WHERE clause push-down; this means that when accessing the remote server only those rows
that match the WHERE clause are retrieved. If your remote table contains many rows, be certain to structure your apps
so that they limit the rows retrieved in all cases.
Currently, when JOINing local and remote tables where only the local table contains a WHERE clause restriction
the entire remote table is retrieved to perform the join. In the near future you will be able to specify an alternate
optional behavior where only the matching rows for the join are retrieved.
- Browser Back Button Support. You can now navigate backward through prior tab and menu selections within an app using the browser's back button.
- Deleting a user no longer deletes the apps that they own. Now if a user is deleted that owns apps, the ownership of those apps is transferred to the super administrator of the account.
- More efficient Data Links. Data Links to objects that are not visible are now postponed until they become visible.
- New user interface for Security Roles. See Tools > Security Roles... for details.
- Support for Editable Views. You can now perform a CREATE VIEW on the server and annotate it with Virtual Keys within ParaSQL.
VIEWs are displayed in blue on the Palette and Security Roles panel.
Single table VIEWs with a Virtual Primary Key designated within ParaSQL are editable, including support for AutoKey generation.
- Miscellaneous bug fixes and smaller improvements.
Release 30 (December 2015)
- Miscellaneous bug fixes and smaller improvements.
Release 29 (November 2015)
- Syntax Highlighting. Panels that allow for the editing of HTML, JavaScript, or SQL code (e.g. File > App Scripts..., Tools > Database triggers..., etc.) now display such code with syntax highlighting.
- Geo Chart Improvements. Geo Charts now support a Marker Mode that can render locations by address or lat/lon using circle size and/or color to indicate intensity. See the chart's help for details.
- Miscellaneous bug fixes and smaller improvements.
Release 28 (November 2015)
- App Scripts:
- You can now extend ParaSQL with your own custom JavaScript code. See File > App Scripts... for details.
- The App Init Script is JavaScript code that will be run after your app has loaded. This allows you to perform additional initialization specific to your app. For example, you might add a blank record for an embedded form or turn on the GPS to track position info.
- The Script Library is where you place your JavaScript function declarations. These functions can be called from throughout your ParaSQL app. For example, you could declare a function here and call if from a calculated field, a validation formula, a visibility formula or an HTML widget.
- Miscellaneous bug fixes.
Release 27 (November 2015)
- New File > Publish App... command.
- When making changes to an application that is already deployed and in use, you can now specify when to publish your
changes. For example, you may want to work on an app for several hours or days and then show all the changes at once
to your users.
- By default, all apps auto-publish so that changes are visible immediately to your users (as soon as they load
the app or hit refresh on their browser).
- You can now turn off auto-publish via the File > App Settings... panel. When auto-publish is off,
the changes you make to your app are not visible to your users until you click File > Publish App....
Until that time, your changes are only visible by clicking the Test App button in the design window.
- Embedded Apps with Full Authenticated. The File > App Settings... panel now has an embed code
that works with apps requiring authentication (in addition to the existing Public embed code). If the user is not
authenticated, a pop-up window will appear prompting for sign in. This Authenticated Embed works with modern browsers
including Chrome 46+ and the Microsoft Edge browser. This feature can be used to completely hide the ParaSQL
domain from your users.
- Miscellaneous bug fixes.
Release 26 (October 2015)
- New Format > Layout options...
- Now ParaSQL apps can dynamically resize width and height to fill the browser window!
- For newly created apps, the app canvas and all Tab widgets and Menu widgets are automatically set to dynamically resize.
All other objects default to Fixed but can be set to Dynamic via Format > Layout options....
- For your existing apps, you can change their behavior so that they dynamically resize to fill the browser window.
To do so you must first set the app canvas Width Type and Height Type to Dynamic via Format > Layout options...
and then do so for the other objects in your app as needed.
- See the Help button on the Layout Options panel for more details.
- Miscellaneous bug fixes.
Release 25 (September 2015)
- Accept Invite Confirmation. Now the user is asked to confirm before accepting an app invite, and is allowed to switch accounts if needed prior to accepting.
- Miscellaneous smaller improvements.
- Miscellaneous bug fixes.
Release 24 (August 2015)
- Geo Charts. A Chart Widget can now render geographic regions as an intensity (i.e. heat map) that renders countries or states
based on relative values.
- Miscellaneous smaller improvements.
Release 23 (July 2015)
- Bubble Charts. A Chart Widget can now render as a Bubble Chart, providing up to four dimensions of visualization in a single chart.
- Donut Charts. A Chart Widget can now render as a Donut Chart, which is a pie chart with a hole in the middle.
- Animated Charts. New option Chart Styles > Options > Animate to enable chart animation for most chart types.
- HTML Widgets now have a Print As Document action which can be used to print a formatted multi-page document
automatically filled in with database variables.
- The document variables can be text, formatted numbers, formatted dates, or images stored in the database.
- HTML Widgets now also have a predefined Merge Document snippet which provides a template for easily creating merge documents.
- If you have several different merge documents in your app, you can place them all under a hidden tab. Then use a button elsewhere in your app to "Print XYZ Document" that would a) switch to the tab with the merge document, b) call the HTML Widget's Print As Document action, and finally c) switch back to the original tab. This provides the user with a simple means of printing one or more different types of merge documents for the record they are currently working with.
- The current implementation is limited to a single document merge and is not yet capable of multi-document merge.
- Bug fix for duplicate records when using a ReportWidget or ChartWidget as a child object of a RecordWidget under certain circumstances.
- Miscellaneous smaller improvements.
Release 22 (July 2015)
- HTML Widget Enhancements:
- HTML Widgets now dynamically recalculate and redisplay when any field they depend upon is modified.
- HTML Widgets now dynamically grow scroll bars as needed.
- HTML Widgets now have a predefined Navigate To snippet option - use to trigger Google Navigation to a specified address (works on mobile devices only).
- HTML Widgets now have a predefined Send Email snippet option - use to open a new email with the specified To email address.
- HTML Widgets now have a predefined Gmail History snippet option - use to open Gmail and show all email to the specified email address.
- HTML Widgets now have a predefined Call snippet option - use to open the phone dialer with the specified phone number (works on mobile devices only).
- HTML Widgets now have a predefined Pop Up Help Panel snippet option - use to display pop up help in your app.
- Advanced Filters with Full Text Search:
- This feature only applies to ParaSQL accounts with a dedicated server.
- You can now create a full text index across multiple columns in a table and search all of the text in all of the columns quickly and flexibly.
- First, create a full text index across the columns you want to search by issuing the following command at the SQL prompt:
ALTER TABLE MyTableName ADD FULLTEXT INDEX (col1, col2, col3)
- Then in your app you can use an Advanced Filter to specify a full text natural language search as follows:
MATCH (col1, col2, col3) AGAINST (@value(Virtual.QuickSearch) IN NATURAL LANGUAGE MODE)
- A full text natural language search allows the user to specify one or more words. The results returned are sorted by relevance. Example: blood pressure devices
- You may also create an Advanced Filter to specify a full text boolean search as follows:
MATCH (col1, col2, col3) AGAINST (@value(Virtual.QuickSearch) IN BOOLEAN MODE)
- A full text boolean search allows the user to specify one or more words, and use + and - syntax to require or eliminate specific words. The results returned are sorted by relevance. Example: +blood -pressure
- New Record object action method to Insert Record At Top (in addition to existing after current and append options).
- New Image Field menu option to View Large Image.
- Miscellaneous smaller improvements.
Release 21 (May 2015)
- Greatly reduced save time when designing apps with large records.
- Removing a column index now works as expected.
- New @IsPrinting function that can be used with visibility formulas to control what is printed vs. displayed on screen.
- Miscellaneous bug fixes.
Release 20 (May 2015)
- Visibility Formulas:
- Any UI object can now be assigned a Visibility Formula, including individual tabs, menu options, fields, buttons, etc.
- If the visibility formula evaluates to true, the object is visible, otherwise the object is hidden.
- This enables many flexible UI options, such as: only showing a certain tab to a particular user, hiding fields based upon previous input, etc.
- Advanced Filters:
- You can now optionally specify a free-form SQL WHERE clause for any saved filter, including those for records, reports, charts, and pick lists.
- Advanced filters can make use of any ParaSQL @function to substitute UI values into the query as needed.
- Append Record. Record objects now have a new Append Record action (in addition to the previous Insert Record action).
- New @ROLE function returns the name of the Role associated with the currently logged in user.
- Virtual Field Default Values. Virtual fields may now have default values.
- Miscellaneous bug fixes.
Release 19 (April 2015)
- Improved File > Copy App to... command now works with databases that require more time to export and import their data.
- Miscellaneous bug fixes.
Release 18 (April 2015)
- Make RESTful API calls directly from the database.
- This feature requires a dedicated database server.
- There is a new ParaSQL system table called parasql_http_request.
- You can use a trigger or stored procedure to add a record to this table specifying a HTTP method (GET/POST/DELETE), a URL, a user/pass combo for HTTP Basic Auth, and the name of a stored procedure to call once the response is received.
- ParaSQL will make the request and write the response to the parasql_http_request table (including the status code and full header info) and then call the stored procedure you specified (if any).
- This allows for flexible, easy-to-implement custom integrations with most RESTful APIs on the web.
- Contact support for documentation and example code.
- Miscellaneous bug fixes.
Release 17 (March 2015)
- Sending email attachments. You can now send email attachments using new the parasql_email_out columns attachment_content and attachment_filename.
- Emailing with CC and BCC addresses. Sending email via parasql_email_out now supports CC and BCC addresses via new column names cc_address and bcc_address.
- Miscellaneous bug fixes.
Release 16 (February 2015)
- Better handling of multiple large apps within a single session.
- New menu option for Records: Edit > Delete All Children.
Deletes (not just hides) all child objects (e.g. fields, text, other records, etc.) except for primary key fields.
Can be used to dramatically improve performance for records with a large number of hidden fields.
- New menu option for Records: Edit > Delete All Hidden Fields.
Deletes all field objects within a Record that have previously been hidden (except for primary key fields and calculated fields).
Can be used to dramatically improve performance for records with a large number of hidden fields.
Release 15 (February 2015)
- New QuickSearch box for Pick Lists.
- Pick lists may now have their own QuickSearch box.
- To enable a QuickSearch box on an existing pick list, simply create a filter called QuickSearch.
- On newly created records, a default QuickSearch filter is created for each foreign key field. You may customize or delete this QuickSearch filter as needed.
- In your QuickSearch filter, you may reference the QuickSearch box with the formula @value(Virtual.QuickSearch)
- Duplicate App. You can now copy an app to the same database to create a duplicate. See File > Copy App to...
- When creating Data Links between objects, the target object now has its AutoRun filter turned off by default.
- For Report objects, turning on Select Distinct Rows now automatically turns on Don't Retrieve Hidden Columns.
- Parent Record objects now keep their scroll position even when switching between tabs.
- Parent Report objects now keep their scroll position even when switching between tabs.
- Better reporting of DeadlineExceededExceptions for long running transactions.
- Miscellaneous bug fixes.
Release 14 (January 2015)
- New File > Copy App to... command. Allows an Administrator to copy an application
(including its tables, triggers and data) to another database account.
The user performing the copy must be an Administrator on both the source and target databases.
- Custom Report Column Colors. Now each column in a Report can have its own text color and background color.
- Conditional Number Formatting. You can now specify a custom color for negative numbers.
- Computed F(x) Columns in Reports can now be deleted or hidden.
- New Report option Hide Columns to Right.
- New Report option Don't Retrieve Hidden Columns. For tables with many hidden columns this can provide a significant performance improvement.
- New Report option Select Distinct Rows.
- Various performance improvements for very large databases (with hundreds of tables and millions of rows).
- Miscellaneous bug fixes.
Release 13 (December 2014)
- Public Embed:
- Now you can create embeddable, publicly accessible ParaSQL apps to make certain parts of your database visible on your website.
Simply select Allow Public Access on the App Settings panel and paste the provided embed code into your existing website.
- Users visiting your website do not need a ParaSQL account and are not required to log in. They are considered "public" users of your app.
- By default, public users cannot see any of your data. To grant access, simply click Modify Table and then Table Privs... and/or Column Privs... to grant whatever access you desire to Public.
- Miscellaneous bug fixes.
Release 12 (December 2014)
- Document Fields:
- ParaSQL now has full support for storing documents in the database. Simply choose the Document column datatype when creating or modifying a database table.
- ParaSQL stores your files privately and securely in the Google Cloud Storage (GCS) service.
GCS is a durable and highly available object storage service with global edge-caching for fast access to your files from any location.
Your data is protected through redundant storage at multiple physical locations.
- Each ParaSQL account has a dedicated GCS bucket (files are never commingled). Access is granted only via digitally-signed, time-expired URLs.
- The maximum size for any individual file upload with ParaSQL is 1GB.
- There is no maximum on the number of files that can be stored per table or per database.
- These capabilities give ParaSQL extremely powerful, secure, cost effective document management capabilities.
- Image Fields:
- ParaSQL now has full support for storing and displaying images in fields. Simply choose the Image column datatype when creating or modifying a database table.
- ParaSQL stores your images privately and securely in the Google Cloud Storage (GCS) service.
- The maximum size for any individual image upload with ParaSQL is 30MB.
- Images are dynamically resized and edge-cached for optimum display performance, while still retaining the full original image for download if desired.
- There is no maximum on the number of images that can be stored per table or per database.
- Miscellaneous bug fixes.
Release 11 (December 2014)
- Database Triggers:
- ParaSQL now has full support for custom database triggers. See Tools > Database triggers... in the ParaSQL design window.
- Record inserts, updates, and deletes can now automatically trigger other actions, such as logging changes, updating related values, or sending email notifications (see below).
- Email Notifications:
- Triggers can schedule emails to be sent either immediately or on a delayed basis.
- Emails can be in plain text or HTML format.
- All email parameters (e.g. to, subject, body, etc.) may be derived from any combination of hard-coded values,
variables and/or database queries.
- Miscellaneous bug fixes.
Release 10 (November 2014)
- Prompt for Unsaved Changes. Now a user is warned if they attempt to close a browser window that contains unsaved changes.
- Multiple Asynchronous Button Actions. When a Button object has multiple actions, some of which result in asynchronous behavior
(e.g. saving, querying), each asynchronous action is now completed before the next Button action is run.
- Improved Design Window:
- The Palette and Tool Bar now remain visible as you scroll your app, making large designs easier to work with.
- Objects now snap-to-grid on resize making layout alignment easier.
- Text dropped into a Record object now matches the Record object's look.
- Pick List Dynamic Filtering. Now a Pick List can have a filter with an expression that refers to fields and other variables.
Example: A Pick List that only displays Cities that match the Zip_Code field.
- Absolute Field References. Now @functions() in formulas allow you to reference a field's ID directly as an alternative to table_name.column_name syntax.
- New @FirstValue() function. Allows a formula to refer to the values in the first record of a child record. Useful for certain formulas in 1-to-1 relationships.
- New Virtual Notes Field. Allows multiple lines of text to be displayed in a virtual field.
- Miscellaneous bug fixes.
Release 9 (October 2014)
- HTML Widget:
- Place a custom HTML snippet anywhere in your app.
- The HTML you specify may contain ParaSQL @functions() and JavaScript to reference field values and other
variables in your app.
This allows for dynamic HTML that can perform operations such as opening another window with a URL that
has parameter values inserted from the current record.
- Greatly improved click reliability on touch devices. Specifically, certain newer touch enabled devices no longer mistakenly duplicate clicks.
- Improved error messages for calculated fields, validated fields and filter expressions.
- An app administrator can now send invites to share an application even if their associated Google account is not enabled to send email.
- Miscellaneous bug fixes.
Release 8 (October 2014)
- Send Email To. You can now connect a button to a Record or a Report object and send email to a group of records with a single click.
- Bulk Update & Delete:
- Bulk Update any number of rows in a table by specifying a filter to select the rows and an expression to set a column(s) value. Full expression syntax is supported, including all functions and operators.
- Bulk Delete any number of rows in a table by specifying a filter to select the rows for deletion.
- Enhanced Master Filter functionality so that it can now accept expressions as well as constants,
allowing a dynamic filter to be locked down by the app designer and applied in conjunction with all user-specified filters.
- Added a formula tool bar to the Computed Column panel to make computed columns in reports easier to build.
- Added a formula tool bar to the Field Validation panel to make validation formulas easier to build.
- Added a Row Count option to the Account Settings panel and Tools menu that shows the current number of rows in each table.
- Improved data import with better pre-validation of data lengths and more informative error messages.
- Modifying a table and changing both keys and indexes in the same operation is now permitted.
- Miscellaneous bug fixes.
Release 7 (September 2014)
- Improved Reporting:
- Rollup Capability. Now you can optionally generate Rollup Reports (sometimes referred to as master-detail reports)
that automatically generate pretty-formatted groupings with super-aggregate data.
- Added auto Summarize options for Standard Deviation and Variance.
- Added support for Group By on a computed column.
- Added support for sorting on a computed column.
- New Drop Down List datatype. Now you can easily create a column of type Drop Down List for those instances
where a separate table and pick list is overkill. Pick lists are still the preferred method if there are more than
a handful of options or if the options may changed over time.
- Miscellaneous bug fixes.
Release 6 (September 2014)
- Improved billing and Account Settings panel.
- Support for new pricing options.
- Miscellaneous bug fixes.
Release 5 (August 2014)
- Improved printing support:
- Record and Report objects now have a Print action that can be triggered with a Button object.
Printing via this method causes Record and Report objects to grow in height dynamically rather than display scroll bars.
Known limitations in this release: objects below the records are still positioned absolute and therefore may become hidden during print.
- Tab Group objects and Menu objects now print only their contents (UI controls are hidden during print).
- Icon objects now print correctly in Chrome and Safari (with IE and Firefox you will need to have Print Background Images turned on in your browser).
- Improved error checking for circular references.
- Select events are now implemented for Timeline Charts, so that you can click on a Timeline chart element and trigger a Data Link.
- Miscellaneous bug fixes.
Release 4 (July 2014)
- Improved importing of CSV files with more flexible import options (e.g. delimiter options, character encoding options, date format options, etc.).
- Improved record and field selection with more consistent behavior across browsers.
- Pick Lists now have a Clear Field button so the user can revert to a blank field.
- Nested tabs now default to a contrasting color.
Release 3 (June 2014)
- If an invalid object is dropped into a Record object it is now rejected (with an error message as to why).
- If an invalid object is dropped into a Report object is is now rejected (with an error message as to why).
- If a new column is added to a table, it is now automatically added as a hidden column in all Report objects based on that table.
- If the datatype of a column is changed, Report objects that reference that column are now updated with the correct column datatype.
- If a table column has a link added, changed, or removed, corresponding Field objects are now updated appropriately.
- More use friendly error messages are now displayed for many of the most common alter table errors.
- The default color scheme for newly created records was enhanced.
- The Color Picker panel now allows for fully custom color values with alpha transparency.
- Added full support for UTF-8 encoded international character sets; import, export, data entry, display, and query now all support UTF-8 encoded characters.
- Child records without Data Links now display an error message at runtime.
Release 2 (May 2014)
- You can now create an app by selecting a template as a starting point.
- Icons can now be placed anywhere in your app layout.
- Version Control. Changed from a date-based version system to a Release number + Revision date system (visible at the bottom of the start page).