Part-DB now requires PHP 8.2 or higher. It is recommended that you read the upgrade guide from v1 to v2 before upgrading.
Part-DB 2.0.0
This upgrade introduces a new web based configuration system. Existing configuration using environment variables will continue to work. If you want to configure these parameters via the WebUI in the future, an additional migration step is required. See the upgrade guide for more information.
Breaking changes
Part-DB now requires at least PHP 8.2 or higher. If you are still using PHP 8.1 you need to upgrade PHP first
Nodejs 20 or higher is now required
The config/banner.md file does not exist anymore. If you wanna customize the banner, either do it via the WebUI or the BANNER env.
The parameters partdb.sidebar.items, partdb.sidebar.root_node_enable and partdb.sidebar.root_expanded in config/parameters.yaml,
were removed. You can configure them now directly in the admin interface.
New features
Introduced capability to configure system settings and info providers via the WebUI. No need to work with environment variables anymore
If you are using Part-DB it would be helpful if you fill out this short survey on your usage of Part-DB (Google Forms): https://forms.gle/Q15twx3YYq3qCNfe8
Tip
There is a new experimental docker image, which is much faster. See this post for more info.
Tip
You can help to translate Part-DB to other languages. See this post for more info.
Bug fixes
Pass the proxy related settings to the docker application (issue #1001)
Fixed Content Versioning to correctly merge relational data and support all query parameter functionality (#25437)
The following changes should be kept in mind when updating:
Relational versioned data now requires explicit field expansion to be included in the response.
Invalid data (e.g. Fails validation rules) will error on query
Filter conditions now apply to the versioned data instead of the main record
For more information, please read the breaking change docs for a full list of changes.
Additionally there will be further breaking changes to USER_CREATED, USER_UPDATED, DATE_CREATED, DATE_UPDATED default values in a followup PR to improve this behavior further.
Check in with #25744 to see more info about the breaking changes.
β¨ New Features & Improvements
@directus/api
Fixed Content Versioning to correctly merge relational data and support all query parameter functionality (#25437 by @Nitwel)
@directus/app
Fixed links in WYSIWYG missing underline and pointer cursor styling (#25739 by @Abdallah-Awwad)
Added a new field to conditions for clearing hidden fields on save (#25646 by @robluton)
π Bug Fixes & Optimizations
@directus/app
Fixed timestamp fields being incorrectly marked as changed due to timezone mismatch (#25718 by @khanahmad4527)
Fixed code button state not updating when exiting code mode in WYSIWYG (#25741 by @Abdallah-Awwad)
Added currentItem id check to prevent in-flight api call from returning stale data (#25660 by @robluton)
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
Negative side-effect: users of the option to automatically mark updated articles as unread will once have some articles with enclosures re-appear as unread
If you are using Part-DB it would be helpful if you fill out this short survey on your usage of Part-DB (Google Forms): https://forms.gle/Q15twx3YYq3qCNfe8
Tip
There is a new experimental docker image, which is much faster. See this post for more info.
Tip
You can help to translate Part-DB to other languages. See this post for more info.
Bug fixes
Fixed a potential denial of service issue related to user avatars (thanks to @NaklehZeidan21)
Added TypeScript support for services within the extension context (#25368)
The services exposed to API extensions using TypeScript are now fully typed instead of any, which may cause new type errors when building extensions.
Arguments of service methods are now strictly typed, which can result in type errors for broader types that would not error before:
The ItemsService constructor now expects the collection name to be a string and will error on string | undefined (or other unions).
Similarly, functions like service.readOne()/service.readMany() now expect string | number for their primary keys and will error for nullable types
As a workaround, casting the services back to any will result in the original behavior. However, it is recommended to resolve the type errors instead.
@directus/extensions-sdk
Added TypeScript support for services within the extension context (#25368 by @that1matt)
[PepperBridgeAbstract, DealabsBridge, HotUKDealsBridge, MydealsBridge] Adapt RSS bridge to website content update; remove country of origin due to missing data by @sysadminstory in #4634
[BlueskyBridge] Fix cases for missing reply post context and QoL fix for video loading by @mruac in #4635
[Fix] OpenWrt agent install script by @evrial in #1005
[Feature] Move name copy to Action Dialog by @svenvg93 in #1010
Note
The agent must be run as administrator to access sensors through LibreHardwareMonitorLib, just as when running LibreHardwareMonitor directly. I'll update the docs this weekend with more details and instructions for configuring this with NSSM.
Exclude database-only tables from snapshots (#25271)
Snapshots now exclude tables not tracked in directus_collections (database-only tables).
Source Version
Target Version
Behavior
Impact
< 11.10.0
β₯ 11.10.0
Database-only tables from source will be created on target
β οΈ Tables added
β₯ 11.10.0
< 11.10.0
Database-only tables will be dropped from target
π¨ Data loss risk
β₯ 11.10.0
β₯ 11.10.0
Database-only tables are ignored in snapshots
β No changes
< 11.10.0
< 11.10.0
Database-only tables may be created or dropped
β οΈ Depends on the diff between source/target
Please review your snapshot workflows to ensure these changes will not result in unexpected behaviour.
@directus/api
Fixed replacing process.env.NODE_ENV on backend extensions (#25180 by @Nitwel)
Exclude database-only tables from snapshots (#25271 by @Nitwel)
@directus/extensions-sdk
Upgraded all dependencies of @directus/extensions-sdk to the latest major versions of Rollup and Vite, and resolved several false-positive security reports. (#25486 by @rijkvanzanten) β οΈ This change also raises the minimum supported Node.js version to 20.19.0.
Fixed replacing process.env.NODE_ENV on backend extensions (#25180 by @Nitwel)
This is a beta release. Please make a hub backup before upgrading.
Version 0.12.0 adds the ability for agents to initiate an outgoing connection to the hub.
It also introduces universal tokens, which can be used to register systems without needing to add them manually in the hub. It also allows you to deploy multiple agents with the same configuration, which should make cluster deployments easier.
Please report issues or provide feedback in #951. Thanks!
Upgrading
Docker: Switch to the :edge tag.
Other: This is the first beta release so I'm not sure how the different package managers handle it. To run manually, download the new binary, replace the old one, then add the new env vars and restart the service. I'm working on updating the install scripts and will look further into the package manager situation tomorrow.
Details
The WebSocket connection works in tandem with the agent's existing SSH server. If the agent connects successfully via WebSocket it will stop the SSH server. Likewise, if the agent connects via SSH it will stop attempting to connect via WebSocket.
Note: Don't add the HUB_URL env var to an agent that connects to multiple hubs. This isn't supported yet with WebSocket. Otherwise everything should be fully backwards compatible.
The agent gets two new environment variables:
HUB_URL: The URL of the hub.
TOKEN: The token associated with the system, provided in the hub.
You can copy these values for existing systems in the hub at /settings/tokens.
WebSocket authentication
We use a mutual authentication handshake that ensures both parties are trusted before any data is exchanged. Let me know if you have ideas for improvement.
Initial connection and token verification: The agent initiates a WebSocket connection to the hub. It includes a unique registration token as an HTTP header during the upgrade request. The hub verifies that the token is associated with an existing system before upgrading the connection.
Hub challenge: To prove its identity to the agent, the hub signs the token using its private key and sends the signature back to the agent. The agent verifies the signature using its public key.
Fingerprint authentication: After verifying the hub, the agent responds by sending its fingerprint. This fingerprint is a secure hash of unique identifiers, locking the agent's registration to the machine it's running on. The hub verifies the received fingerprint against the one stored for the system. If they match, the connection is authorized.