tree-clean-utils: `TreeActions.cleanTreeModel` and `TreeActions.cleanItemModel` have been created. They simply fix the structure of their respective models.
/api/tree: /api/tree now always returns a cleaned tree.
store-config-debug: Previously, all store issues were reduced down to `Could not load configuration for store`. Now, along with that message, it provides more detailed messages for improperly configured credentials and more.
misc: Reworded a few things as well.
/debug: Added a /debug page that's only accessible if a fatal error in configuration has occurred.
settings: The settings page now includes a debugging section with similar content to the debug page. This still needs styling but is otherwise OK.
detected-s3-creds: Previously it was using a logical OR to check whether the `STORE_ACCESS_KEY` and `STORE_SECRET_KEY` were required (i.e. either the credentials are not detected OR the credentials were not already configured), but now uses a logical AND instead.
editor: I forked Outline's rich-markdown-editor and made a Notea version for it. Now more of the editor-related issues can be fixed.
prosemirror-model: Upgraded prosemirror-model to 1.16.1. I don't know why 1.17+ doesn't work (suspecting something with instanceof not working) so this is a hack.
catch-nullability: For some reason, some functions that should return promises return null/undefined sometimes. This commit is purely so that that doesn't happen.
auth-undefined: "Authentication undefined" is thrown by the `loadConfig()` function when there's no auth section. Any usage of `config()` must only be executed at runtime.
config/compatibility.yml: Updated the example to reflect how the config actually works.
move-to-server: It feels nicer to have it inside the `server` field.
server: The `server` field will just contain things related to the server. I dunno how to explain it, but it's for that.
useSecureCookies: `server.useSecureCookies` is the equivalent of `COOKIE_SECURE`.
config/compatibility.yml: Add documentation for the new `server` field.
proxyAttachments: `proxyAttachments` is the equivalent of `DIRECT_RESPONSE_ATTACHMENT`.
[...file].ts: Replaced direct usage of `getEnv` with new config system.
getEnvRaw: `getEnvRaw` is essentially the same as `getEnv`, but much more safe as it doesn't automatically convert types - parsing is left to the consuming code.
parseBool: `parseBool` is a much more accepting function for parsing booleans. `true`, `1`, `yes`, and `on` are treated as `true`, and conversely, `false`, `0`, `no`, and `off` are treated as `false`.
credentials: S3 credentials can in some cases be detected now, and the workaround for signing URLs should use those detected credentials.
style: Some style stuff from Prettier.
change(auth): libs/server/auth.ts is a utility for separating authentication verification from the other files slightly better (and also not just blatantly comparing the PASSWORD environment variable).