We use Semantic Versioning (https://semver.org/)
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards compatible manner, and
- PATCH version when you make backwards compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format. In our case this is e.g. -rc.1
, -rc.2
.
- Issue 156 Adapt to introduced namespace in ADL
- This is a breaking change. Requires version update to v2.x
- It affects names and labels of all artefacts (concepts, relations, interfaces, rules, views, etc)
- It affects metadata from PrototypeContext. Be sure to update those when used in application extensions or running environments
- Issue 161 Bugfix ConceptNotDefinedException
- Issue 180 Bugfix Php warning about undefined array key 'ifcPath'
- Issue 210 Bugfix using TableType enum for method to empty a relation population
- Issue 218 Improve error reporting for exceptions in excel importer
- Issue 221 Bugfix typescript type object property naming by surrounding view labels with quotes
- Add regression tests to automatically check if certain Ampersand (ADL) scripts generate valid backend and frontend files
- Issue 79 Add support for delimited multi value columns in excel importer
- Issue 115 Bugfix name ConceptNotDefinedException to match class filename
- Issue 165 Only show warning 'Generated model is changed...'on startup of browser app
- Catch FileNotFoundException and log warning when corresponding file of deleted FileObject is not found on filesystem
- Skip tracking affected relations and concepts for RELATION lastAccess[SESSION*DateTime]
- Add codebase of new developed frontend. Not integrated in building image yet.
- This is a major change. Justifies major version update to v2.x
- Issue 91 Display errors/exceptions in the frontend that occur before the API ExceptionHandler is initialized. E.g. database connection failure
- Issue 97 Fix issue with Excel importer date value 0. Improve error message with cell location
- Issue 100 Add admin API to cleanup metapopulation (i.e. removing interfaces that don't exists anymore)
- Add workflow to automatically trigger documentation update for our landingpage
- Issue 92 Bugfix issue with exec-engine function to merge atoms that not exist (anymore)
- Update to Ampersand compiler v4.7.z
- Bugfix default values for new atom
- Issue 90 Bugfix php warning when logging non-string setting value
- Backward incompatible changes
- Remove Ampersand specific RotatingFileHandler for logger. Logs are written to stderr and stdout by default. Projects can add their own handlers
- Config 'global.dataPath' must now be an absolute path. Method Settings::getDataDirectory() now returns trailing directory separator
- Bugfix undefined parts (settings and/or extensions) of a settings.yaml file
- Add env variable AMPERSAND_DATA_DIR to set global.dataPath config
- Bugfix wrong return type of method Session::getSessionAccount()
- Note! Contains backward incompatible changes for projects that extend or customize the backend framework
- Issue 70 Improve exec engine error message
- Issue 88 Initialize model before registering current ampersand model version during reinstall of application
- UI Fix for longer notification (error) messages. Message now overflows on new line
- Add missing parameter and return type declarations for all methods. Remove unneeded docblock comments
- Add class property type declarations. Remove unneeded docblock comments
- Refactor use enums for TableType, RuleType, SrcOrTgt, MenuType, concept TType
- Simplify and unify exception handling
- Remove default response Content-Type header (was 'application/json;charset=utf-8'). Must be set per API (group) seperately
- Remove/refactor global variable $angularApp. Use MenuItemRegistry::addMenuItem() and AmpersandApp::frontend() instead
- Refactor bootstrapping of framework, including API definitions. PHP files with API routes in './bootstrap/api' are bootstrapped automatically
- Issue 68 Update Docker image to PHP v8.1. Make backend compatible with php 8.x
- Backward incompatible change Refactor Resource::all() to return array of Resource instead ResourceList object
- Backward incompatible change Remove ArrayAccess methods from Resource class
- Add methods Resource::value() and Resource::values() to replace ArrayAccess methods offsetGet()
- Add transaction reference to AtomEvent and LinkEvent
- Update to Ampersand compiler from v4.5.z to v4.6.z. Backward incompatible change. See compiler releases
- Issue 1189 Add support for DEFAULT SRC/TGT atoms for RELATION statement
- Issue 1208 Fix warning when a reinstall of the database may be needed based on model hash
- Use main branch instead of master
- Update to Ampersand compiler v4.5.z
- Issue 1170 Rename Concept::inSameClassificationTree to inSameClassificationBranch. Adapt error messages.
- Issue 1212 Change database collation to utf8mb4_nopad_bin to fix issue with trailing whitespace
- Update build-push to docker hub. We are moving to master branch only, no development anymore
- Fix a warning in the devcontainer
- Bugfix issue with unhandled exception in frontend when API patch returns error
- Bugfix redirect to previous url after navigating manually to login page
- Issue 993 Don't call API to save field when value is unchanged
- Provide more specific error message when file upload failed (e.g. exceeded maximum filesize)
- Library update indicated by dependabot
- Add helper methods to Population class
- Remove OAuth module. Should be implementated by applications that use the framework instead.
- Remove frontend package from dist folder. Package is now build every time.
- Update frontend dev libraries (npm update)
- Update backend libraries (composer update)
- Issue 1155 Fix issue with MrgAtom exec-engine function in case of non-existing atoms
- Hotfix bug introduced in v1.9.2 related to query data optimization
- Fix query data optimization in case of transformation from Atom to Resource. Improves performance by reducing amount of queries significantly.
- Issue 1151 Bugfix boolean population transformation to database
- Issue 1152 Handle violation segments for expressions with multiple targets
- Add OAuth2 handler for Microsoft accounts
- Issue 1103 Adapt templates TABS and FORM: by default don't show 'hamburger' item to nav to other interfaces. Add template attribute 'showNavMenu'
- Issue 1143 For template TABS change interpretation of hideOnNoRecords from a single TAB to the complete TABSET
- Issue 1144 For templates TABS and FORM add attribute hideSubOnNoRecords to hide a single sub interface when result set is empty
- Issue 1146 For template TABLE hide complete table (including title) when attribute hideOnNoRecords is set
- Issue 1148 Allow exec-engine delpair function to handle multiple src and/or tgt atoms
- Update EasyRdf library to v1.x
- Set content-type to mime type when downloading files using /file api. Let browser determine if content can be loaded in the browser
- Use Ampersand compiler v4.1.3. First time we use an explicit version number instead of development tag
- Meta population installer: cleanup interface atoms from database when they are not defined in the Ampersand model (anymore)
- Bugfix auto create (crudC) for non-ident interface expressions
- Try to create missing data directory
- Remove unused extensions folder from Phan static analysis check
- Update dev dependency Phan to v3.x
- Bugfix word-wrap css class
- Breaking change: OAuthLogin module is not an extension anymore, but built in the framework.
- Changes are required in configuration files, see readme
- Implemented state token to prevent CSRF
- Removed whole CA certificates stuff, because this is already provided and configured by the php-apache docker image
- Issue 1125 Use UUIDs when automatically creating atom identifiers instead of a timestamp
- Bugfix link to population exporter API
- Add administrator api functionality to regenerate atom identifiers for all concepts or a specific concept
- Issue 1104 Built-in template revisions
- Add
hideOnNoRecords
functionality to TABS template
- Issue 1070 Don't pick up database configurations from Ampersand compiler anymore
- Issue 1096 Show more usefull error message when composer autoloader file can not be found
- Issue 1097 Implement file system interface to allow for other storage solutions
- Issue 1098 Implementation of event dispatcher. Started with add/del atom and link and transaction related events
- Removed Hook class implementation. Replaced by event dispatcher
- Issue 1067 Update CI scripts. Add script to build-push to Docker Hub instead of Github package repository
- Update to PHP version 7.4
- Update cacert.pem file for OAuthLogin extension. Automatically download latest version during Docker build
- Introduction of BOX attributes functionality
- See readme about templates
- Template
FORM
replacesROWS
,ROWSNL
,HROWS
,HROWSNL
- Template
TABLE
replacesCOLS
,SCOLS
,COLSNL
,HCOLS
andSHCOLS
- Template
RAW
replacesDIV
,CDIV
,RDIV
- Upgrade unmaintained phpexcel package to newer library phpoffice/phpspreadsheet
- Allow to configure database username and password using environment variables
- Issue 1009 Fix 404 session not found when session is expired
- Bugfix issue due to not taking into account php's short circuit evaluation
- Bugfix uncaught AccessDeniedException for patches on top-level interface atoms
- Improve stack trace. Now also showing trace of previous errors/exceptions
- Add config for setting data dir (needed for containerizing Ampersand backend application). Uploads folder is now fixed relative to data folder
- Add option to set certain configurations via environment variables. Starting with AMPERSAND_DEBUG_MODE, AMPERSAND_PRODUCTION_MODE, AMPERSAND_DBHOST and AMPERSAND_SERVER_URL, AMPERSAND_DBNAME
- Simplify ways to specify configurations. Removed recent option of environment folder structure (was introduced in v1.4.0)
- OAuthLogin extension: allow to specify urls in config file relative to global.serverURL
- Bugfix. When loading configuration files, first load extensions and after that additional config files
- Add devcontainer configuration to repository
- Don't use php's $_SESSION records anymore. This doesn't fit with containerized design priciples like process disposability principle
- Bugfix issue with API interfaces shown in UI to solve signal violations. Caused by wrongly placed parentheses.
- Add sort values for all BOX templates that start with the char 'S' (for SORT). Instead of only for the SCOLS, SHCOLS and SPCOLS templates.
- Issue 1005 Bugfix deadlock due to un-defined interfaces
- Issue 426 Add support for optimized VIEW expression queries using injection of _SRCATOM
- Add Dockerfile to build Ampersand prototype framework image that can be used by containerized prototype apps
- Improve configuration of prototype for different environments (dev/prod/...). See readme
- Simplify logging. Log to stdout and stderr to work with containerized prototype apps
- Add logs for add/rm/del atom and add/del links
- Add CI using Github Actions to build docker image and perform php static analysis using phan
- Issue 940 Remove company logos from footer
- Issue 951 Refresh page after role (de)select
- Issue 983 Increase default timeout for installing the application to 5 min
- Issue 1016 Fix for invariant violation in metapopulation that will be resolved by initial population. Installing application is now in a single transaction
- Bugfix error message in case of network/connection error
- Many bugfixes (see commit history)
- Implement dynamic RBAC. Accessible interfaces for a given role are now queries from database instead of generated json files
- Issue 787 Remove header in interface templates ROWS, HROWS, ROWSNL, HROWSNL. Delete templates ROWSNH (no header)
- Issue 487 Allow application meta-model export in OWL language (first partial implementation)
- Issue 447 Fix issue with certain interface labels that interfere with Restangular method names
- Issue 583 Mark required fields in interfaces (implemented in all atomic/leaf templates)
- Issue 578 Implement meta-model (and meat grinder) for navigation menu
- Issue 900 Bugfix redirect after session login timeout
- Issue 905 Legacy browser support. Added Babeljs transpiler
- Move initialization of all object definitions (Rule, Role, Concept, Relation, etc) to Model class
- Add functionality to export subset of population
- Hotfix: bug in delete query when removing multiple links at once
- Major refactoring of backend implementation of prototype framework
- Minimum requirement of php version >= 7.1 (was >= 7.0)
- Update OAuthLogin extension: use Linkedin API v2, because v1 is phases out by 2019-03-01. Note! in project config file the linkedin 'apiUrl' must be updated to: 'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))'
- Issue 866 Automatically reload javascript resources when needed
- Issue 792 Support for TXT in interface definitions
- Issue 819 Refactor initialization phase of Ampersand application. Config -> Init -> Session -> Run
- Issue 802 Little Things In Prototoypes/Frontend
- Issue 829 Fix issue with database initialization
- Don't automatically create database table. Installer is required.
- Remove dependency injection container for AmpersandApp (for now)
- Move Monolog dependency from Logger class to localsettings
- Issue 823 Add option to ignore invariant violations for default population.
- Issue 822 Fix importer flag on error/invariant violations
- Fix issue with session that timed out after default expiration time of 24 min regardless of user activity.
- Security fix: renew session id after login.
- Interfaces defined with API keyword (as synonym for INTERFACE) are filtered out in navigation menu and don't have UI artefacts (view+controller) anymore
- Improve logging of php errors
- Issue 395 Add ExecEngine termination command
- Issue 143 Introduction of service runs (special kind of exec engines that must be called explicitly)
Several bugfixes. See commit messages.
Initial version of Ampersand prototype framework in its own repository. Earlier the complete prototype framework was included (zipped) in the Ampersand generator. As of this release the prototype framework, including a PHP backend and a HTML/JS frontend implementation are maintained in a seperate repository. This enables us to add automated tests and CI/CD more easily. For more background see related issue Ampersand #756.