What's Changed
* Ensure the footer attribution message is translated by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2369
* Translations update from Hosted Weblate by weblate in https://github.com/bartfeenstra/betty/pull/2370
* Translations update from Hosted Weblate by weblate in https://github.com/bartfeenstra/betty/pull/2371
* Fix a bug where extensions' npm dependencies would not be installed in development environments by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2372
* Add a Sass variable for the focus color by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2373
* Fix a bug where extensions would not be sorted correctly by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2374
* Add a service decorator for core components to declare service properties by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2377
* Rename core components to service providers by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2379
* Support asynchronizing `multiprocessing.Lock` by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2380
* Add `not_void()` to narrow that a value is not `Void` by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2384
* Add `pickleable` and `processsafe` markers by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2385
* Add an `unpickleable` marker by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2386
* Expose the Wikipedia rate limiter as a service by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2387
* Add explicit service initialization by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2388
* Mark several classes as thread-safe by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2389
* Avoid `fontsource` fonts 5.2.x for now, as it introduces import errors by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2393
* Make the ledger multiprocessing-safe by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2390
* Fix our usage of multiprocessing synchronization primitives by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2395
* Rename the core API to the service API by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2394
* Make the rate limiter multiprocessing-safe by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2392
* Use a single multiprocessing manager by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2396
* Make the caches multiprocessing-safe by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2391
* Ensure `AppConfiguration` is pickleable by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2397
* Introduce the concept of service managers by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2398
* Improve ledger performance by 30% by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2399
* Introduce the concept of service overrides by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2400
* Make App process-safe by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2378
* Reduce the number of processes used in tests by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2402
* Add job context IDs by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2403
* Revert "Avoid `fontsource` fonts 5.2.x for now, as it introduces import errors" by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2406
* Make asset URLs unique using job context IDs so browsers reload them by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2404
* Improve `FileBasedSchema` performance by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2405
* Improve performance when generating JSON schemas for plugin IDs by bartfeenstra in https://github.com/bartfeenstra/betty/pull/2409
**Full Changelog**: https://github.com/bartfeenstra/betty/compare/0.4.9...0.4.10