Attention: If you skipped one or more releases, please also check the release-notes of the skipped ones.
Repositories
This release consists of the following new versions of the livingdocs-server
and the livingdocs-editor
:
Package | Version |
---|---|
@livingdocs/server | v83.2.11 |
@livingdocs/editor | v39.2.31 |
Livingdocs Server
How to require the server in your package.json:
"dependencies": {
"@livingdocs/server": "v83.2.11",
}
- Link to the release branch: https://github.com/livingdocsIO/livingdocs-server/tree/release-2019-07
Livingdocs Server Patches
- v83.2.11: bump framework includes componentConversion match all flag and links are correctly copied
- v83.2.10: fix(request-logger): extend with user id through verified token
- v83.2.9: fix(add-pagination-config): add pagination config for document-lists
- v83.2.8: fix: correctly pass userId for copied articles
- v83.2.7: fix(render_pipeline): passing renditionNames to beforeRender hook
- v83.2.6: fix(document-api): Re-introduce the accidentally removed
path
query support indocumentApi.findOne
- v83.2.5: chore: improve test naming for copy-controller
- v83.2.4: chore: rotate npm token
- v83.2.3: prevent group membership assignment from overwriting
- v83.2.2: Disable Netlify feature flag
- v83.2.1: Update livingdocs-framework for release-management
- v83.2.0: webhooks via channel config
Livingdocs Editor
How to require the editor in your package.json:
"dependencies": {
"@livingdocs/editor": "v39.2.31",
}
- Link to the release branch: https://github.com/livingdocsIO/livingdocs-editor/tree/release-2019-07
Livingdocs Editor Patches
- v39.2.31: bump framework includes componentConversion match all flag and links are correctly copied
- v39.2.30: fix(collaboration): Fix the user names that are shown when another user edits a document
- v39.2.29: fix(compare-toggle): reset diffService selection
Revisions must be reset before compare started again
- v39.2.28: fix(sortable-js): use version 1.9.0
because 1.10.0 doesn’t work with current version from angular-legacy-sortablejs-maintained
v39.2.27: fix: Migrate to the newer dependency injection syntax
v39.2.26: fix: finishing proofreading forces a new revision
v39.2.25: fix(search): Fix last publication date on search result
v39.2.24: chore: retrigger ci
v39.2.23: fix(history): always display published event
v39.2.22: chore: re-run ci
v39.2.21: fix(proofreading): improve dashboard card sorting
v39.2.20: fix(revision): Spacing
Fixed left spacing on revision items
Linted some lines
v39.2.19: fix(styling): display deleted articles warning red
v39.2.18: fix: dedicated element for dot for windows compat
v39.2.17: fix(ABAC): correctly access for multiple groups
v39.2.16: fix(tasks): show tasks in publish panel on the sidebar
v39.2.15: fix: increase the delay from 400 to 800 ms when leaving a document
v39.2.14: fix: set bowser version to 2.5.2 to prevent building problems
v39.2.13: fix(filter): allow notContentType in dashboard filters to be a value or an array
v39.2.12: fix(styleguide): adapt wording
v39.2.11: fix(proofreading): show truck status
v39.2.10: fix(lists): don’t always hide the delete button
v39.2.9: tasks: respect policy for priority updates
v39.2.8: track changes polishing
v39.2.7: show fast-truck icon always in the same size
v39.2.6: dashboard: handle errors when an item has no metadata config
v39.2.5: crop-size: use image size as max value for crop
v39.2.4: resolve filter properly when query string is set in url on a custom dashboard
v39.2.3: fix ‘load more articles’ computation
v39.2.2: add default label for tasks
v39.2.1: correctly initiate lock-mode from history
v39.2.0: fix: show modified components in the diff view
Highlights
Track Changes (Differ) 🎉
We now have the much anticipated Track Changes feature as official version in the editor 🎉. Track Changes shows you all the changes between two versions of a document e.g.
- added and removed components
- added and removed text
- modified components (style changes, image change, embed changes)
Every change is labeled by the user who did the change. You are also able to configure the color palette of the changes to match your design. Changed component are marked with colored and labled boxes.
In the history sidebar you can switch between the compare
and the revision selection
mode.
All the existing functionality for show a specific version or revert to it are still there. The task events are now also showed in the history.
Track Changes can be found in the History menu of the editor.
We removed the beta version config option diffViewEnabled
because track changes are now included in the history.
References:
Custom Realtime Proofreading Task Dashboard 🎁
In the last few sprints, we worked on different aspects of the editor to improve the proofreading process and to make parts of it customisable. This guide shows you, how you can set up your own proofreading dashboard with your own design card.
Pin Component Feature 🎁
Components can now be pinned which prevents both deletion and moving of the component. In the sidebar you can see a pin icon in the sidebar when a component is focused. Clicking it pins the component according to the rules:
- if it is alone in a container it can not be moved, deleted nor can anything be moved or inserted before or after it (perfect for a fixed article header)
- if it is next to other components, it can not be moved nor deleted, but other components can be moved or inserted around it
Enable the pin feature in the editor:
pinComponents: {
isEnabled: true
}
You can read more about the feature in the references section.
References:
Prefill Author 🎉
Allow the author on the metadata screen to be prefilled from the currently logged in user. This requires setting up data-records for users and some metadata configuration in contentTypes.
References:
Breaking Changes 🔥
Migrate the database
# run grunt migrate to update to the newest database schema
# migration - 118-add-configs-table.js
# create config_indexes + config_properties table
# migration - 119-migrate-channel-configs.js
# migrate channel configs
livingdocs-server migrate up
Document API Refactoring
For the next version of access management (hooks for now), we need to refactor the documentApi
. By removing complex and not much used queries, it’s easier to restructure the API and make the queries much more performant (less database calls).
Changes
documentApi.findOne
experienced these changes:
- ♻️ returns now all possible data from the model (before we filtered the object)in there.
- 🔥 removed
options.fields
parameter (has no effect anymore). - 🔥 removed
first_publication
- 🔥 removed
revision_user
- 🔥 removed
owner
- ➕ added
revision.user_id
- ➕ added
first_publication_id
- ➕ added
last_publication_id
Needed Actions 🔥
- 🔥 check if the removed fields from the changes are used in the downstream and replace them.
- References
Upgrade to Node 10
We’re dropping support for node 8. Please use node 10 from now on.
Needed Actions 🔥
- 🔥 To upgrade the node version in your Docker files, please change all occurences of
livingdocs/server-base:8
in your project tolivingdocs/server-base:10.0
. - ♻️ We now use a more secure imagemagick policy by default. If you need to overwrite our imagemagick policy, please use such a declaration in your Dockerfile to use the default policy
FROM livingdocs/server-base:10.0
RUN cp /etc/ImageMagick-7/policy.original.xml /etc/ImageMagick-7/policy.xml
- References
Update Elasticsearch Index
We now only store the reference to a user (userId
) instead of the whole user
object in Elasticsearch to prevent a reindexing when user info like the name changes. This release keeps the old properties on the Elasticsearch mapping to allow a smooth migration without the need to drop the old index.
Changes
These properties were added/deprecated from the document index (please migrate your code. In one of the next releases we will remove the deprecated properties)
- 🔥 deprecate
last_publication
- ➕ added
published_at
(the last publish date as date type) - ➕ added
published_by
(the user id as keyword type, this replaces thelast_publication.user
object) - 🔥 deprecate
revision
- ➕ added
updated_by
(the user id as keyword type, this replaces therevision.user.first_name
andrevision.user.last_name
properties) - 🔥 deprecate
layout_name
(got replaced bycontent_type
some time ago)
Needed Actions 🔥
- 🔥 Check and update your code to not use deprecated fields
- 🔥 The mapping should update automatically during server start. If indexing fails for some reason, please run grunt
search-index:documents:update-mapping
- optionally reindex calling
livingdocs-server search-index
- References
Update Project Builders
Extracts the code of “Project Builders” from li-registration
into it’s own feature li-project-builders
. This allows to apply registered builders when creating a new project at any time.
Needed Actions 🔥
Change Builder Registration
- 🔥 moved
registrationApi.registerProjectBuilder
toprojectBuildersApi.registerBuilder
Example
// Before
const registrationApi = liServer.features.api('li-registration')
registrationApi.registerProjectBuilder({
handle: 'awesome-project',
builder: ({userId}, builderConfig, callback) => {
buildMyAwesomeProject({userId}, builderConfig, callback)
}
})
// Now
const projectBuildersApi = liServer.features.api('li-project-builders')
projectBuildersApi.registerBuilder({
handle: 'awesome-project',
async builder ({userId}, builderConfig) {
const project = await buildMyAwesomeProject({userId}, builderConfig)
return project
}
})
Change Builder Configuration
- 🔥 moved/refactored server config
registration
toprojectBuilders
Example
// Before
registration: {
defaultProjectBuilders: ['awesome-project'],
projectBuilders: [
{
handle: 'awesome-project',
config: {}
},
{
handle: 'another-project',
config: {}
}
]
}
// Now
projectBuilders: {
enabled: true,
defaultBuilders: ['awesome-project'],
builders: [
{
handle: 'awesome-project',
config: {}
},
{
handle: 'another-project',
config: {}
}
]
}
You can read more about the changes in the Project Builder PR
Rewrite Channel Config
You can skip this section when you are a business customer which configures the channel-config via files. This change replaces the event stream implementation with a simpler config properties store that makes it easier to add and test additional configurations. Also draft support is considered from the beginning. In the next release we will introduce new configuration and design workflows which base on this new implementation and will significantly ease working with and testing designs. And we will also gradually introduce new configuration options which can be defined per project instead of for the whole server (it will become possible to configure many options per project which currently can only be configured either in the editor or server configuration)
Breaking Changes in the ChannelConfig API
- 🔥 removed
channelConfigApi.execCommands()
- 🔥 removed
channelConfigApi.createChannelConfig()
- 🔥 removed
channelConfigApi.importConfig()
- 🔥 removed
channelConfigApi.linkConfig()
- 🔥 removed
channelConfigApi.importStaticConfigs()
- 🔥 removed
channelConfigApi.applyConfig()
// only used by tests - :recycle changed return value for
channelConfigApi.plan()
- ➕ added
channelConfigApi.createConfig()
- ➕ added
channelConfigApi.updateConfig()
- ➕ added
channelConfigApi.plan()
Needed Actions 🔥
- 🔥 migrate the db with
livingdocs-server migrate up
- If there are problems with the automatic db migration you can skip it with
EXPORT SKIP_DB_MIGRATION_119=true
- There is also a manual migration that will migrate projects individually in
./node_modules/@livingdocs/server/db/manual-migrations/005-migrate-channel-config-streams.js
- If there are problems with the automatic db migration you can skip it with
- 🔥 Check and update your code to not use removed functions
You can find a much more detailed description of the rewrite in the Rewrite Channel Config PR.
Update Supported Browser Versions
This change removes supported browser versions to natively support ES2015 features.
- 🔥 remove support for chrome 49-54
- 🔥 remove support for safary 10
- 🔥 remove support for firefox 52
- 🔥 remove support for edge 12-15
- References
Beta Versions
You can use and test beta features. Your feedback is highly appreciated. As long as a feature is in beta phase, we will sometimes change it’s UX, design or config if needed.
Attribute Based Access Management (ABAC) 🎉
We have implemented a first version of Attribute Based Access Management (ABAC). At the moment only 2 Policies are implemented: a dashboard.get
and a document.metadata.update
Policy. If you want to know more, you can check these PRs:
- References
Desk-Net Integration 🎉
In collaboration with Mainpost we developed a first version of a Desk-Net integration into Livingdocs. In the next weeks we will decide how to improve and how to continue with the Desk-Net integration.
The current integration will connect a Livingdocs channel with a Desk-Net account.
- Any “stories” created in Desk-Net will also create a related article in Livingdocs.
- Desk-Net and Livingdocs title will be synced automatically.
- Any changes to the publication status in Desk-Net or Livingdocs will also result in a publication (or a status change in case of Desk-Net) on the related entity.
- Articles created from a Desk-Net signal in Livingdocs will have additional read-only metadata fields in the publication form.
- References
- MVP Desk-Net integration livingdocs-server #2390
- Hidden setup form for Desk-Net livingdocs-editor #2774
Other Changes
Features
- Update project config via setupProjects (
__update: true
) livingdocs-server #2467 🎁 - Add default config options for links in doc-editable directive livingdocs-editor #2697 🎁
- Add main navigation config option for hover/click behavior livingdocs-editor #2729 🎁
- New channel config publish screen that works with the new server channel config logic livingdocs-editor #2754 🎁
- Add delete button for lists livingdocs-editor #2770 🎁
- Add sortable ui option for li-reference-list livingdocs-editor #2802 🎁
- Update project config via setupProjects (
Bugfixes
- Prevent config overwrites during camelization livingdocs-server #2452 🪲
- Support transactions in
documentListApi.unpublishFromAllLists
(List API) to prevent partial unpublish livingdocs-server #2421 🪲 - Don’t show drag object after the deletion of a clipboard item livingdocs-editor #2703 🪲
- Robustify read only / soft lock mode livingdocs-editor #2700 🪲
- Fix sortable tables in admin section livingdocs-editor #2737 🪲
- Fix content-type form preview in project setup livingdocs-editor #2743 🪲
- Check if link attributes are allowed in a doc-editable directive before setting defaults livingdocs-editor #2752 🪲
- Fix document conflict handling in editor livingdocs-editor #2765 🪲
Improvements
- Send cache-control header for html files / config / version livingdocs-editor #2723 🎁
- Prevent closing modals during document creation livingdocs-editor #2682 🎁
- Show project settings navigation as dropdown in main menu livingdocs-editor #2740 🎁
- Support promises in include service registration livingdocs-server #2441 🎁
- Support promises in the feature initialization livingdocs-server #2433 🎁
- Use environment variable
DEBUG_CONFIG_CHANGE
to inpsect feature config changes livingdocs-server #2448 🔧
Icon Legend
- Breaking changes: 🔥
- Feature: 🎁
- Bugfix: 🪲
- Chore: 🔧