- API: Correct handling of
If-None-Match
header to support caching. - Rules: Major refactoring of action handlers to add new actions with less code.
- Rules: Twitter action to post status update.
- Rules: Prerender.io action to invalidate cache entries for SPA sites.
- Contents: Support IN-queries, like
fileName in ['Logo.jpg', 'Logo.png']
- UI: Cloning content items.
- UI: Tag input in header to filter by tags when assigning assets to content.
- Schemas: Color picker as additional editor for string fields.
- Statistics: Report api usage and performance per client.
- Clustering / Orleans: Fixed correct serialization of exceptions, e.g. as validation errors.
- Backups: Always assign the user who started the restore operation as Owner to the app.
- UI: Reset name when a asset or content query is saved.
- UI: Disable spellchecking for tag editor.
- Contents: Introduce
X-Unpublished
header to also get unpublished content. - UI: General feature to store UI settings.
- UI: Save content queries.
- UI: Save assets queries.
- GraphQL: Endpoint to run multiple queries in parallel with a single request.
- Scripting: Override for the slugify method to use single line characters when replacing diacritics.
- Docker: Smaller image size.
- Schemas: Singleton schemas (can only have single content)
- UI: Nested fields got wrong ids and names and could not be saved.
- Content: Ensure that the content api returns content in correct order when querying by ids.
- Migration to .NET Core 2.1
- UI: Better sortable with improved UX.
- Migration: Increased performance.
- Migration: Disable event handlers during migration.
- Schemas: Invariant name handling for field names.
- MongoDB: Fixed date time handling.
- Schemas: Nested Schemas.
- UI: Migration to RxJS6.
- UI: Migration to Angular6.
- UI: Fixed the pattern selector in field editor.
- Content: Allow to save content updates as draft.
- Schemas: Create folders to group schemas.
- UI: Increased the search input.
- UI: Plugin system for content editors.
- Orleans: Remove orleans dashboard from 8080.
- UI: Big refactorings and UI improvements.
- Actions: New log formatter with placeholder for user infos.
- Actions: Azure Queue action.
- Actions: Algolia action.
- Actions: Fastly action.
- Backup: Backup all your data to an archive.
- Actions: ElasticSearch action.
- DomainObjects: Refactored domain objects to be ready for Orleans.
- EventStore: Event metadata are stored as json objects in MongoDB now and you cacn query by metadata.
- Content: Updated to state can be scheduled, e.g. to publish them.
This releases will run a migration, which might take a while and also effects the events. We recommend to make a backup first.
- UI: Checkbox style fixed.
- Rules: Allow content triggers to catch all content events.
- Rules: Ensure that the events for an aggregate are handled sequentially.
- UI: History stream in the dashboard.
- UI: Better UI for apps overview.
- Apps: Added a ready to use blog sample.
- UI: History UI was throwing an exception when a user was referenced in the message.
- UI: A lot of style fixes.
- Content: Slugify function for custom scripts.
- Migration: Assets and schemas were not removed before recreation.
- Content: OData queries only worked for data fields.
- Assets: OData queries did not work at all and included too many fields (e.g. AppId, Id).
- Login: Consent screen to inform the user about privacy policies.
- Rules: Trigger when asset has changed
- Rules: Action to purge cache items in fastly
- Rules: Action to push events to Azure storage queues.
- Rules: Layout fixes.
- Freeze action, triggers and field properties using Fody.
- Fetch derived types automatically for Swagger generation.
- Assets: OData support, except full text search (
$search
) - Rules: Slack action
- Rules: Algolia action
- Rules: Color corrections for actions.
- Asset structure has changed: Migration will update the ocllection automatically.
- Asset endpoint:
take
query parameter renamed to$top
for OData compatibility.skip
query parameter renamed to$skip
for OData compatibility.query
query parameter replaced with OData. Use$query=contains(fileName, 'MyQuery')
instead.