Skip to content

Instantly share code, notes, and snippets.

@ewingson
Created October 19, 2023 08:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ewingson/38caade838b1197fa976cdcef1f5ed22 to your computer and use it in GitHub Desktop.
Save ewingson/38caade838b1197fa976cdcef1f5ed22 to your computer and use it in GitHub Desktop.
v7.0.0
New features
The minimum supported Node version is now v18.
Account management and everything related to it have been drastically changed, see the usage documentation for an overview of the new features, and the architecture documentation for an overview of the new structure. On a default server, the entry point for everything related to accounts is http://localhost:3000/.account/. Creating an account now requires multiple steps, but allows you to have multiple pods or WebIDs for 1 account. The architecture has been updated to be more easily extensible.
Pod seeding has been updated to account for the new account management, with an updated CLI parameter --seedConfig, see the updated documentation for more details.
Migration was added to update account data automatically from previous versions. See below for more details.
Due to the changes in account management, setup has been removed completely. The *-no-setup.json configurations have been renamed to *-root.json to indicate their focus on the root container.
The StaticAssetHandler can now be used to link static pages to containers. This can be used to set a static page for the root container of a server. See the /config/app/init/static-root.json config for an example.
Data migration
Old internal data will need to be migrated. When starting the server for the first time after updating the version, this will happen automatically. A prompt will be shown to confirm. It is advised to first backup the internal data in case something goes wrong. When using the filesystem backend with default storage options, these can be found in the .internal folder.
Only account data will be migrated, other internal data such as OIDC sessions and notification subscriptions will be removed as how they are stored has changed as well. This means existing tokens and sessions will be invalidated and users will have to log in again. Notifications will have to be resubscribed to for the same reason.
This migration step is based on how storage is defined in the configurations provided in this repository. If you made drastic changes to how internal data is stored, you might need to have a look at the app/init/migration/v6.json configuration.
In case the prompt causes issues, it can be skipped automatically with the --confirmMigration CLI option.
Configuration changes
You might need to make changes to your v6 configuration if you use a custom config.
The @context needs to be updated to https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld.
The following changes pertain to the imports in the default configs:
There is a new identity/oidc import set that needs to be added to each config. Options are default.json and disabled.json.
There is a new static-root.json import option for app/init, setting a static page for the root container.
There is a new initialize-root-pod.json import option for app/init, initializing a pod in the root.
There are more identity/handler options to finetune account management availability.
There is a new set of imports storage/location to determine where the root storage of the server is located.
The app/setupand identity/registration imports have been removed.
There is a new ldp/handler/disabled.json import to disable the LDP API.
The following changes are relevant for v6 custom configs that replaced certain features.
All configurations that had a reference to setup have been updated.
/app/init/* imports have changed. Functionality remained the same though.
All imports that define storages have been updated with new storage classes.
/http/notifications/base/storage.json
/storage/keyvalue/storages/storages.json
All identifiers containing the string "WebHook" have been renamed to instead use "Webhook" to be consistent with the notification type.
/identity/* configurations have drastically changed due to the account management update.
/http/static/default.json has been updated to allow easier overriding of the static resources.
Interface changes
These changes are relevant if you wrote custom modules for the server that depend on existing interfaces.
The AppRunner functions to create and start the server now take a singular arguments object as input.
Most of the key/value related storages had their constructors changed to allow more values.
EncodingPathStorage has been removed and its functionality split up over Base64EncodingStorage and ContainerPathStorage. HashEncodingPathStorage has similarly been replaced by introducing HashEncodingStorage.
All classes with the name WebHook* have been renamed to Webhook* to be consistent with the corresponding notification type.
Most classes related to the IDP have been changed.
All classes related to setup have been removed.
The StaticAssetHandler has bene updated to support the new functionality.
SeededPodInitializer has been renamed to SeededAccountInitializer.
WebIdAdapterFactory has been renamed to ClientIdAdapterFactory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment