Commit Graph

2209 Commits

Author SHA1 Message Date
Rijk van Zanten
577f08e5f5 Remove nested transactions (#22023)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2024-04-16 10:13:33 +02:00
Pascal Jufer
6c35f43460 Fix nested queries with unlimited default limit (#22049)
* Fix nested queries with unlimited default limit

* Add changeset
2024-04-15 11:52:41 +02:00
José Varela
dfe6cca40b Api / Assets: Prevent backpressure on sending big files (#22175)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-04-15 08:29:57 +00:00
José Varela
75c03bdd99 Api / Graphql : Allow version as singleton argument on singleton (#22184)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-04-12 10:50:32 +00:00
Rijk van Zanten
58c1e308fc Tweak default email in init cli command email_from config (#22162)
* Change default email from in init .env to example.com

Directus's domain has a strict dmarc quarantine, so this will never work. Changing it to example should make it super obvious it's just an example.

* Add changeset
2024-04-10 11:45:17 -04:00
Pascal Jufer
c9105eaead Use Item/PrimaryKey from and move Alterations to @directus/types (#22027)
Co-authored-by: ian <licitdev@gmail.com>
2024-04-08 10:12:26 +02:00
Rijk van Zanten
1ff4bf3330 Improve schema retrieval by caching the schema cache creation (#21824)
* Don't await non-async function

* Add process lock to system schema cache generation

* Add changeset

* Publish message on failure as well to release waiting process

* Update api/src/utils/get-schema.ts

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Update api/src/utils/get-schema.ts

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Unsubscribe on callback

* Optimize db init

* Add timeout and infinite loop protection

* Reduce max attempts

* Clear timeout on callback

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-04-03 14:51:22 -04:00
Pascal Jufer
1120568b45 Fix migration for module bundle extensions (#21857)
* Fix migration/settings for module bundle extensions

* Revert settings lookup

* Add changeset
2024-04-01 14:34:48 +02:00
Pascal Jufer
b4dc3bcd28 Fix randomUUID import in Webhooks deprecation migration (#22029) 2024-03-31 23:27:32 -04:00
Brainslug
59bb45bd38 Remove or re-install missing extensions (#21969)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-30 15:47:42 +01:00
Rijk van Zanten
43cf048d21 Update migrations to fix initialization on MS SQL and CockroachDB (#22019)
* Alter migration to succeed in Crdb 23

* Add changeset
2024-03-29 15:07:45 -04:00
Daniel Biegler
7f14e387ed Fix 15553 remove webhooks (1/2) (#21808)
* add deprecation notice to webhooks

I dont like how the "Flows"-Link is not a real router-link so it reloads the page but we could sort this out later in the PR

* add feature flag store

* make links reactive

* add depreaction to webhook item route too

* better progressive deprecation, update translation

* fix batch deletion of webhooks

* remove batch editing (it doesnt work), remove irrelevant now code

* add changeset

* add up migration

* improve upon migration

* disallow creation of new webhooks

* remove create action

* remove isvisible field

no longer used

* remove feature flags store

no longer needed

* rm featureflag store remnants

* hide webhook fields from migration

* update comment

* change width of notice

* rm button for creating webhooks

* add changeset

* Update api/src/database/migrations/20240311A-deprecate-webhooks.ts

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Update api/src/controllers/webhooks.ts

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* prettier

* add changeset for system data

* update changesets

* remove top padding

* update deprecation notice

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* remove ability to patch webhooks and relevant snippets from its item route

* rm bottom padding since v-form has its own

* remove Flows created by the up-migration

* only add run-script if needed

* filter whitespace values out

* deprecate webhooks on service level

* fix tests for webhooksservice

* reuse deprecation error

* add deprecation and update test for updateBatch

* update changeset

* remove webhook initialization and handling

* remove check for POST

people could use raw values for PATCH, SEARCH, etc.

* Filter empty collections in migration

* skip run script for GET requests

---------

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <tim@brainslug.nl>
2024-03-28 17:10:06 +01:00
Gerard Lamusse
8336b4d868 Add onUpdate constraint to relations service (#21190)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-25 13:02:49 +00:00
Connor Winston
7259938c47 Truncate User-Agent to 1024 Chars and Migrate DB Column (#21687)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-25 12:58:02 +00:00
Brainslug
5650cdd33c Hiding non session SSO providers from the app (#21874) 2024-03-25 11:55:53 +01:00
José Varela
114b249d00 Notify other instances when extension is updated (#21908)
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-25 11:15:41 +01:00
Brainslug
90476ccf17 WebSocket Session Authentication (#21837)
* session auth experiments

* simplified cookie parsing

* forgot the package json

* Create brave-walls-scream.md

* prettier
2024-03-19 11:37:23 -04:00
kaifulee
2204a41383 chore: remove repetitive words (#21835)
Signed-off-by: kaifulee <cuishuang@outlook.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-14 11:06:51 +00:00
ian
233054440f Optimise multi-field update operations (#21818) 2024-03-13 18:44:58 +01:00
daedalus
7bea23b7f5 Add the ability to configure the error, bug and feature URLs (#21174)
* add report url fields

* update field template to be agnostic

* add changeset

* various fixes

* rename handler to load path level

* add translations

* updated docs

* fix tests

* add placeholder support for system-display-template

* refactor project to report and move to their own settings section

* example urls should be more concrete

Co-Authored-By: Pascal Jufer <5363448+paescuj@users.noreply.github.com>

* move hardcoded default report urls to constants

Co-Authored-By: Pascal Jufer <5363448+paescuj@users.noreply.github.com>

* Make nav reactive, so URL changes are immediate

* change order of report urls

* change icon to feedback

* move composable to top level

* remove ref, use from prop

* Update .changeset/tender-timers-develop.md

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* rm select_a_collection_or_tree_fields translation key

---------

Co-authored-by: Pascal Jufer <5363448+paescuj@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Daniel Biegler <DanielBiegler@users.noreply.github.com>
2024-03-13 15:04:25 +01:00
Rijk van Zanten
6ea2891b21 Add scope in gql schema cache key (#21821)
* Add scope in gql schema cache key

* Add changeset
2024-03-12 13:29:50 -04:00
Rijk van Zanten
f0e910ee58 Add LRU cache to GraphQLSchema generation (#21783)
* Install mnemonist

* Add LRU cache for graphql schema

* Add changeset

* Update api/src/services/graphql/index.ts

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Add env var to /env and docs

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-11 17:23:34 -04:00
Rijk van Zanten
c24dc0079a Add REDIS_ENABLED env var (#21809)
* Add REDIS_ENABLED env var

* Add changeset

* Remove previous attempt
2024-03-11 17:08:50 -04:00
Pascal Jufer
4575ce3a20 Return payload of sandboxed operation extensions (#21789)
* Return payload of sandboxed operation extensions

* Add changeset

* Align handler param with type
2024-03-10 22:56:48 +00:00
Pascal Jufer
4395fe1b66 Enable extensions auto reloading in dev mode (#21780)
* Enable extensions auto reloading in dev mode

* Add changeset
2024-03-08 17:57:28 -05:00
Pascal Jufer
06187df2b8 Prevent error when reloading sandboxed extensions (#21781)
* Prevent error with extensions auto reload of sandboxed extensions

* Add changeset
2024-03-08 17:50:59 -05:00
Pascal Jufer
b8ea374365 Fix extensions auto reloading (#21779)
* Fix extension auto reload

* Add changeset

* Update changeset wording
2024-03-08 17:49:22 -05:00
Pascal Jufer
ce7ce211f8 Remove over-engineered sanitizeError function (#21750) 2024-03-08 21:42:28 +01:00
Pascal Jufer
5cc89ef430 Clean-up and serialize errors thrown in async Sandbox SDK functions (#21749) 2024-03-08 21:42:12 +01:00
Rijk van Zanten
cc889bb578 Fix extensions sync issue when EXTENSIONS_LOCATION is set (#21747)
* Fix issue causing pm2 processes to get out of sync

* Setup lock abstraction based on memory/kv

* Use lock-based strategy rather than primary process

* Don't require amount (defaults to 1)

* Add changeset

* Update .changeset/dry-crews-scream.md

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Force sync on uninstall as well

* Delete lock in every case

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-08 12:28:01 -05:00
Ewout Stortenbeker
bd91484443 Return send mail promise (#21741) 2024-03-08 10:23:44 +00:00
Pascal Jufer
0ef1f3dd3e Fix loading of Sandbox Operation Extensions (#21751) 2024-03-08 09:24:02 +01:00
Pascal Jufer
6aebecde72 Fix headers type check in Sandbox SDK request function (#21746)
* Fix headers type check in sandbox request function

* Add changeset
2024-03-08 09:23:30 +01:00
Rijk van Zanten
bd168545d0 Add support for EMAIL_TEMPLATES_PATH (#21729)
* Load custom templates from templates path

* Fix name

* Add changeset

* Fix missing env vars in tests

* Fix name typo

* Move email templates to self hosted section

* Add breaking change note

* Add redirect for old file
2024-03-06 15:48:21 -05:00
Pascal Jufer
1058ea143a Fix unique constraint / alter statement issues in marketplace migration (#21721)
* Fix unique constrain issues in marketplace migration

* Add changeset
2024-03-06 12:32:06 -05:00
Pascal Jufer
750522a671 Fix marketplace/extensions migration (#21698)
* Fix marketplace/extensions migration

* Drop settings for deprecated extension types

* Resolve local v module on migration

* Revert workaround now that it happens in migratoin

* Don't fail on empty bundles

* Account for scoped packages in migration

* Fix for matching existing settings to local extension with different
folder & package name

* Update api/src/extensions/lib/get-extensions-settings.ts

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2024-03-05 15:52:11 -05:00
Pascal Jufer
82b23a57d4 Add the Directus Marketplace (#21674)
* Add support for MIGRATIONS_PATH (#20627)

* Deprecate "local" extension types (#20624)

* No longer resolve local non-package extensions

* Remove local extensions from watcher

* Install fs-extra for app dev

* Replace usage of get-extensions

* Rename create functions to match behavior

* Drop extensions prefix from cli create

* Drop name requirement from cli add

* Drop extensions name regex checks

* Don't rely on regex for extension identification

* Add changeset

* Fix build for @directus/extensions

* Don't ensure nested dirs

* Load npm dependency by name prefix

* Throw more helpful error when pkg json is missing

* Fix dependency loading paths

* Only load local extensions if extensions path exists

* Fix merge conflict

* Remove unused fs-extra

* Only sync extensions if location is defined

* `extensions` -> `localExtensions`

* Fix resolving of package extensions

- consistent usage of term "package extensions"
- enhance error messages

* Fix syncing extension from storage

* Revert-revert change from #20627

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Add back `MIGRATIONS_PATH` to `@directus/env` (#21053)

* Setup browse endpoint for browsing Directus extensions (#21033)

* Rename tag directus-custom to directus-extension

* Devil's in the details

* [WIP] Start on search lib

* Setup extensions-registry package

* Update pnpm lock

* Move registry search fn to new package

* Squash bugs

* Remove unused deps

* Remove unused dep in `extensions`

* Add tests for validate-limit

* Finish test coverage

* Remove unused constant

* Add back lodash-es 😇

* Install extensions-registry

* Add default keywords

* Expose registry endpoint in rest api

* Add describe module

* Reinstal pnpm

* Drop reliance on author field

The problem is that there's no requirement for it to be a valid(ated) user. Publisher is the only field we can rely on being an existing NPM user.

* Update convertSearchResult test after author change

* Format

* Allow anything after the route

To support packages with scopes

* Add test for describe

* Add more tests

* Throw unprocessablecontenterror instead of error

* Install errors pkg

* Finish test coverage

* Don't require description

* Don't wrap individual keywords

* Run formatter

* Add changeset

* Update packages/extensions-registry/src/modules/search/utils/validate-text.ts

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Return sandbox information

* Drop support for directus-custom keyword

* Set type to null for multiple tags

* Restart api for new registry

* Add version utility

* Add out-of-date error

* Add assertion for api versions

* Finish new list method

* Add describe

* Use updated registry functions

* Fix controller usage

* Return output in data flag to be consistent

* Add tests for the describe module

* Add tests for list module

* Finish tests for extensions-registry package

* Remove vscode shenanigans

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Project Forum: Browse UX (#21276)

* Render marketplace route in-app

* Update api list integration

* Add support for limit/offset in list

* Boilerplate route for drawer

* Render extension readme in drawer

* Render extension detail as separate page

* Setup markup for extension banner

* Render readme with markdown styling

* Boilerplate metadata block

* Use v-list for extension metadata metrics

* Render compatibility metric

* Show downloads and publish date

* Refactor to individual files

* Fix missing import

* Add size metric

* Show author on metadat

* Show verified badge

* Finish metadata

* Run formatter

* Style forum detail banner (#21290)

* Style banner contents

* Add background art

* Add banner styles to default dark mode theme

* Undo base style change to avoid conflict

* Add beta chip badge to settings nav (#21296)

* Add layout styling for detail page (#21297)

* Render metadata as grid if size allows

* Finish layout for detail page

* Fix alignment of count

* Fix search-input active state

* Finalize forum header

* Add marketplace banner

* Style registry filter

* Change v-list-item height to min-height

Allows rows for forum registry to grow

* Finalize styling for extension list item

* Finalize styling for registry

* Don't rely on format util

* Forum account detail page (#21299)

* Add support for author describe endpoint

* Boilerplate author page

* Add author endpoint

* Update naming to account

* Render github name on registry list

* Render user's name + avatar on detail

* Load account data on account page

* Restructure module

* Render account banner on account page

* Render account metadata

* Finish account detail page

* Run formatter

* Add sidebar info detail sections

* install extensions from registry (#21070)

* added an endpoint to install extensions from registries

* add changeset

* Revert format/lint scripts

* Update pnpm-lock

* Remove unused dependency

* Add download module to extensions-registry abstraction

* Download from extension registry instead of direct npm

* Throw on error

* Install based on version ID rather than name

* Install based on ID in body

Allows us to extend it in the future if need be

* Download to tmp path instead of extensions

* Save to extensions manager flattened

* Use const for package folder name

* Run more in try/catch to avoid server exit

* Remove changeset

* Undo docs updates

We'll do all docs in a single PR :)

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Manage extensions by directus_extensions primary key instead of npm package name (#21300)

* Add marketplace migration

* Include bundle info

* Rename name to folder

* Store name as folder

* [WIP] Change name to ID

* Update API to use UUIDs for extensions

* Update app to use extensions id

* Run formatter

* Add changeset

* Update generate-app-entrypoint to use updated format

* Fix graphql usage

* Format

* Add forum uninstall endpoint (#21301)

* Bootstrap uninstall

* Finish uninstall endpoint

* Use shared extensions store state for managing extensions in settings (#21317)

* Use extensionsstore for extensions management

* Use shared store for extensions state and modification

* Remove unused emit

* Adds install/uninstall GUI elements for project forum (#21319)

* Use warning color for incompatible

* Styling tweaks

* Transition optional background color

* Add keys for installing

* Add install button to extension detail

* Finish install button

* Add uninstall option to extensions item

* Empty local cached extensions on start

* Add (hopefully) temporary hack to await reload

* Add install / uninstall buttons

* Update lockfile

* Fix bundle entries not rendering properly

* Clean up spinner styling

* Properly wait for reload to be done

* Run formatter

* Fix registry name

* Fix local extension loading

* Render location/company in byline

* Rearchitect metadata to unstyled listitems

* Add max-width to page container

* Only allow admins to install/uninstall extensions

* Remove unused link

* Disable eslint for map use

* Run formatter

* Add no-results indicator (#21389)

* Add no-results indicator

* add error state as well

* Standardize trailing slash

* Standardize pk check

* Resolve unnecessary check

* Move all deps to dev deps in app

* Optimize exec order

* Pull data from top level package

* Redesign filter bar

* Reset page count on filter change

* Use default padding on top of page

Feels weird now, but there's a theme-update coming that'll make this make sense :)

* Show first/last in pagination

* Auto-format package name

* Use updated registry api return names

* Add sorting by total downloads

* Add sparkline for downloads

* Add a bit of padding

* Finalize sparkline styling

* Run formatterg

* Add sandbox flag in list call

* Add MARKETPLACE_TRUST env var

* Set sandbox requirement on download

* Render list item badge

* Fix padding

* Show license in gui

* Add support for multiple maintainers

* Add activity tracking for install

* Make incompatibility notice friendlier

* Tweak margin of sparkline

* Update default CSP headers to include github content

* Make extension readme selectable

* Consistent icon, add tooltips

* Reduce size of install button

* Run formatter

* Render readme anchors with target blank

* Add min width to v-select components

* Fix background on search input

* Reduce padding on marketplace pages

* Fix showing no results

* Be consistent

* Render type filter menu in full height

* Clean up compatibility notice

* Hide count result when search count is 0

* Use v-show instead

* Bump no results notice down a bit

* Cleanup size of install buttons

* Use buttons for install / author

* Fix sparkline rendering

* Add better loading state for extension detail page

* Add spinners

* Render proper error message in case readme is missing

* Use heart logo for marketplace

* Add image border shadow

* Add loading banner on account page

* Show reload warning as persistent notification

* Only show one notification

* Update snapshot

* Add padding to verified icon

* Base extensions id on package id, show installed badge

* Sync pagination / search / filter with URL

Special shoutout to Tim

* Next max ext (#21541)

* Add limit exceeded error

* Add limit exceeded translation

* Add extensions_limit env var

* Load extensions limit in app

* Don't allow installing unknown versions

* Don't require installed flag

* Return bundled entries in describe

* Update chip to match style

* Prevent install on limit reached

* Run formatter

* Fix bundle loading

* Resolve npm extensions by package manifest (#21478)

* Merge main into next (#21669)

* Clean-up deps

* Don't export type (as long as not used anywhere)

* Update semver to latest

* Relax compatibility notice

* Use more suitable icon for version

* Re-render download charts on color-scheme change

* Link extensions to marketplace

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Mahendra Kumar <22556323+mahendraHegde@users.noreply.github.com>
2024-03-04 14:34:59 -05:00
José Varela
3fcd7be3f6 API / Services / MAIL: Add EMAIL_AWAIT_RESPONSE option (#21683)
* Add `EMAIL_AWAIT_RESPONSE` option
Tells if Directus should await for the email server response or not

* Fix return type

* Revert all changes
Let's just not await so it's more maintainable

* Do not await for email server response
2024-03-04 13:14:26 -05:00
Azri Kahar
a9b628baa6 Deep merge relational fields in content versions (#21386)
* deep merge content version saves

* update content version graphql

* moved version merging to its own middleware

* added query param to request the unmodified version

* make sure the App uses the raw version format

* prettier

* removed unused middleware

* initial recursive version merging

* use loop instead of spreading

* cleanup

* accept boolean strings as versionRaw query value

* added middleware sanity check

* initial mergeVersionsRaw tests

* initial mergeVersionsRaw tests

* started merge tests

* initial m2o tests

* initial tests

* fixed logic for initial tests

* prettier

* more tests

* fixed brought up by tests

* first level relational tests

* testing nested relations

* fixed recursiveness

* more prettier

* namin consistency

* the prettiest

* Create chilled-icons-provide.md

* Add breaking change note

* updated graphql for version merging

* prettier

* added new sdk query param

* implemented judds feedback

* Enable singleton

* Slightly reformat/reword breaking change

Thanks @w0kyj!

* Clarify comment about primitive type substitution

Co-authored-by: daedalus <44623501+ComfortablyCoding@users.noreply.github.com>

* replaced for in loops

* applied isObject check

* prettier

* Short issue link

* Update changeset

* added sso guide warning

* pretttier

* update sso guide instead of warning

* prettier

* reverted SSO guide from other PR, nothing to see here

* Added cloneDeep to be safe

* removed snake case

---------

Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: daedalus <44623501+ComfortablyCoding@users.noreply.github.com>
2024-03-04 11:57:51 -05:00
José Varela
86b42a9e58 Api / Services / Fields: Only emitFilter if emitEvents is not set to false (#21670)
* Only `emitFilter` if `emitEvents` is not set to false

* Add changeset

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2024-03-04 11:54:11 -05:00
Brainslug
5477d7d61b Fix URL Redirection in OAuth2/OpenID/SAML (#21238)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2024-03-04 04:43:48 +00:00
Pascal Jufer
068591def0 Patch Happy Monday 🐸 (#21667) 2024-03-04 03:47:55 +01:00
Brainslug
77d73398f1 Session Based Authentication (#21239)
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-04 01:59:45 +01:00
Michael Auerswald
251db70074 Clarified SAML warning if indentifier is not present in SAML response (#21552)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-03-02 19:24:39 +01:00
Pascal Jufer
001ec2e8d5 Enable JIT compiler for vue-i18n & disable legacy API (#21649)
* Enable JIT compiler for vue-i18n & shake off legacy API

* Add changeset

* Update comment about unsafe-eval
2024-03-01 11:39:12 +01:00
Pascal Jufer
79c2701a74 Drop uuid dependency in favor of Node.js built-in (#21625) 2024-02-29 05:07:20 +01:00
Riley Park
721c833b36 (#21573) Be more relaxed with UUID validation (#21613)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-02-29 03:34:13 +00:00
Pascal Jufer
5188153ea9 Fix storage initialization (#21590) 2024-02-27 09:13:00 +01:00
Pascal Jufer
7f4d431971 Fix permission merge (#21542) 2024-02-24 00:34:40 +01:00
Pascal Jufer
cef0406386 Fix issue where data from CSV imports can be corrupted (#21535)
* Fix corrupt CSV imports

* Do not destroy streams on success

* Add changeset
2024-02-23 11:32:22 -05:00