test: unit test succeeds fix: not quiting loop when releasing unexisting lock refactor: pull wait() function into TimerUtils feat: store all locks inside a single lock folder feat: use md5 hashing for filepath hashes test: coverage back to 100% fix: store locks in proper .internal/locks folder feat: reworked tryfn test: coverage back to 100% buidl: package json types next to lib style: linting dos: add more documentation to Locker classes refactor: SingleThreadedResourceLocker -> MemoryResourceLocker refactor: MultiThreadedResourceLocker -> FileSystemResourceLocker feat: update all file-based backend configs to use the new FileSystemResourceLocker feat: add warning on starting the MemoryResourceLocker in a worker process test: coverage back to 100% fix: finalizer of file.json was configured wrong docs: updated release notes for 5.0.0 refactor: incorporated changes so far refactor: retryFunctions are less complex now test: jitter fix
10 KiB
Community Solid Server release notes
v5.0.0
New features
- Support for Node v12 was dropped.
- Components.js was upgraded to v5. If you have created an external component you should also upgrade to prevent warnings and conflicts.
- A new FileSystemResourceLocker has been added. It allows for true threadsafe locking without external dependencies.
Data migration
The following actions are required if you are upgrading from a v4 server and want to retain your data.
...
Configuration changes
You might need to make changes to your v4 configuration if you use a custom config.
The @context needs to be updated to
https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^5.0.0/components/context.jsonld.
The following changes pertain to the imports in the default configs:
- The prefix of all imports was changed from
files-scstocss. - All default configurations with a file-based backend now use a file-based locker instead of a memory-based one, making them threadsafe.
The following changes are relevant for v3 custom configs that replaced certain features.
config/app/variables/cli.jsonwas changed to support the newYargsCliExtractorformat.config/util/resource-locker/memory.jsonhad the locker @type changed fromSingleThreadedResourceLockertoMemoryResourceLocker.
Interface changes
These changes are relevant if you wrote custom modules for the server that depend on existing interfaces.
YargsCliExtractorwas changed to now take as input an array of parameter objects.RedirectAllHttpHandlerwas removed and fully replaced byRedirectingHttpHandler.SingleThreadedResourceLockerhas been renamed toMemoryResourceLocker.
v4.0.0
New features
- The server can be started with a new parameter to automatically generate accounts and pods, for more info see here.
- It is now possible to automate authentication requests using Client Credentials, for more info see here.
- A new
RedirectingHttpHandlerclass has been added which can be used to redirect certain URLs. - A new default configuration
config/https-file-cli.jsonthat can set the HTTPS parameters through the CLI has been added. This is also an example of how to add CLI parameters through a custom configuration. - A new RedisLocker has been added to replace the old RedisResourceLocker class. It allows for true threadsafe read/write locking.
Configuration changes
You might need to make changes to your v3 configuration if you use a custom config.
The @context needs to be updated to
https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^4.0.0/components/context.jsonld.
The following changes pertain to the imports in the default configs:
- ...
The following changes are relevant for v3 custom configs that replaced certain features.
- The key/value storage configs in
config/storage/key-value/*have been changed to reduce config duplication. All storages there that were only relevant for 1 class have been moved to the config of that class. - Due to a parameter rename in
CombinedSettingsResolver,config/app/variables/resolver/resolver.jsonhas been updated. - The OIDC provider setup was changed to add client_credentials support.
/identity/handler/adapter-factory/webid.json/identity/handler/provider-factory/identity.json
Interface changes
These changes are relevant if you wrote custom modules for the server that depend on existing interfaces.
- The output of
parseContentTypeinHeaderUtilwas changed to include parameters. PermissionReaders take an additionalmodesparameter as input.- The
ResourceStorefunctionresourceExistshas been renamed tohasResourceand has been moved to a separateResourceSetinterface. - Several
ModesExtractorsPermissionBasedAuthorizernow take aResourceSetas constructor parameter. RepresentationMetadatano longer accepts strings for predicates in any of its functions.CombinedSettingsResolverparametercomputershas been renamed toresolvers.IdentityProviderFactoryrequires an additionalcredentialStorageparameter.- The
RedisResourceLockerclass has been removed and theRedisLockerclass was added instead.RedisLockerimplements both theResourceLockerandReadWriteLockerinterface.
v3.0.0
New features
- The Identity Provider now uses the
webidscope as required for Solid-OIDC. - The
VoidLockercan be used to disable locking for development/testing purposes. This can be enabled by changing the/config/util/resource-locker/import todebug-void.json - Added support for setting a quota on the server. See the
config/quota-file.jsonconfig for an example. - An official docker image is now built on each version tag and published at https://hub.docker.com/r/solidproject/community-server.
- Added support for N3 Patch.
- It is now possible to customize arguments to the
community-solid-servercommand, which enables passing custom variables to configurations and setting new default values. - The AppRunner functions have changed to require Components.js variables. This is important for anyone who starts the server from code.
- When logging in, a consent screen will now provide information about the client.
Data migration
The following actions are required if you are upgrading from a v2 server and want to retain your data.
Due to changes in the keys used by the IDP, you will need to delete the stored keys and sessions.
If you are using a file backend, delete the .internal/idp/ folder in your data folder and restart the server.
This will not delete the user accounts, but users will have to log in again.
Configuration changes
You might need to make changes to your v2 configuration if you use a custom config.
The @context needs to be updated to
https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^3.0.0/components/context.jsonld.
The following changes pertain to the imports in the default configs:
- A new configuration option needs to be imported:
/app/variables/default.jsoncontains everything related to parsing CLI arguments and assigning values to variables.
The following changes are relevant for v2 custom configs that replaced certain features.
- Conversion has been simplified so most converters are part of the conversion chain:
/util/representation-conversion/default.json
- The IDP settings have changed to support the latest Solid-OIDC draft.
/identity/handler/provider-factory/identity.json
- Requests targeting the OIDC library now use a separate handler.
/http/handler/default.json/identity/handler/default.json
- The architecture of IDP interaction handlers has completely changed to improve modularity
/identity/handler/interaction/*/identity/registration/*
Interface changes
These changes are relevant if you wrote custom modules for the server that depend on existing interfaces.
TypedRepresentationConverterfunction signatures changed and base functionality moved toBaseTypedRepresentationConverter.- Many changes to several components related to the IDP. This includes the HTML templates.
v2.0.0
New features
- Pod owners always have Control access to resources stored in their Pod.
- The server now offers a one-time setup upon first boot.
This can be accessed by going to
/setup. Configurations with a persistent backend enforce setup before the server can be used, preventing unintended modifications in the backend. These have corresponding*-no-setup.jsonfiles where setup is disabled, so the pre-v2.0 behavior is still available. ETag,Last-Modified,If-None-Match, and related conditional headers are supported.PATCHing containers is now supported.PUT/POSTrequests with empty bodies are supported.- WebACL authorization supports groups.
- IDP components (registration, login, etc.) fully support JSON input and output.
- There is a new configuration
sparql-file-storage.jsonto have a SPARQL backend with file storage.sparql-file-storage.json. - A server can be set up to restrict access to IDP components using WebACL.
A consequence of this is that IDP components are only accessible using a trailing slash.
E.g.,
/idp/register/works,/idp/registerwill error.
Configuration changes
You might need to make changes to your v1 configuration if you use a custom config.
The following changes pertain to the imports in the default configs:
- There are 2 new configuration options that for which a valid option needs to be imported:
/app/setupdetermines how and if setup should be enabled./identity/accessdetermines if IDP access (e.g., registration) should be restricted
- The
/app/init/default.jsonconfiguration no longer initializes the root container. This behaviour has been moved to the other options for/app/init. /ldp/permissionschanged to/ldp/modesand only has a default option now.
The following changes are relevant for v1 custom configs that replaced certain features. The path indicates which JSON-LD files were impacted by the change.
IdentityProviderHttpHandlerandInteractionRoutearguments have changed substantially./identity/handler/default.json/identity/handler/interaction/*/identity/registration/*.
- All internal storage is now stored in the
/.internal/container./storage/key-value/resource-store.json.
- Patching related classes have changed.
/storage/middleware/stores/patching.json.
BasicRequestParsernow needs aconditionsParserargument./ldp/handler/components/request-parser.json.
LinkTypeParserhas been renamed toLinkRelParserand now takes mappings as input./ldp/metadata-parser/*
ComposedAuxiliaryStrategyisRootRequiredhas been renamed torequiredInRoot./util/auxiliary/strategies/acl.json.
- Many changes to authentication and authorization structure.
- Config
/ldp/authentication/*and/ldp/authorization/*.
- Config
- All
HttpHandlers have been changed./app/setup/handlers/setup.json/http/handler/default.json/identity/handler/default.json/ldp/handler/default.json.
v1.1.0
New features
- The
ConstantConvertercan now filter on media type using theenabledMediaRangesanddisabledMediaRangesoptions. That way, the server can be configured to bypass a default UI when accessing images or PDF documents. (https://github.com/solid/community-server/discussions/895, https://github.com/solid/community-server/pull/925)
v1.0.0
First release of the Community Solid Server.