]>
source.dussan.org Git - nextcloud-server.git/log
Christoph Wurst [Wed, 29 Nov 2023 11:17:30 +0000 (12:17 +0100)]
fix(dav): Prioritize timezone from core/login
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Andy Scherzinger [Wed, 29 Nov 2023 09:49:17 +0000 (10:49 +0100)]
Merge pull request #41818 from nextcloud/techdebt/noid/clarify-ooo-return-data
fix(OOO): Make the returned data more explicit
Andy Scherzinger [Wed, 29 Nov 2023 08:29:17 +0000 (09:29 +0100)]
Merge pull request #41803 from nextcloud/register-eml-msg
fix: add mimetype for eml and msg
Joas Schilling [Wed, 29 Nov 2023 08:14:05 +0000 (09:14 +0100)]
fix(OOO): Make the returned data more explicit
Signed-off-by: Joas Schilling <coding@schilljs.com>
Christoph Wurst [Wed, 29 Nov 2023 07:54:25 +0000 (08:54 +0100)]
Merge pull request #41759 from nextcloud/fix/dav/ooo-form-mandatory-message
fix(dav): Make ooo settings a form and the message required
Nextcloud bot [Wed, 29 Nov 2023 00:20:25 +0000 (00:20 +0000)]
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Grigorii K. Shartsev [Tue, 28 Nov 2023 22:35:41 +0000 (03:35 +0500)]
Merge pull request #41619 from nextcloud/fix/files--active-state-on-list-item-click
fix(files): remove focus outline on file list item click and make the link focusable
Grigorii K. Shartsev [Tue, 28 Nov 2023 21:52:17 +0000 (22:52 +0100)]
chore(assets): Recompile assets
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
Grigorii K. Shartsev [Mon, 20 Nov 2023 14:03:15 +0000 (15:03 +0100)]
refactor(files): replace deprecated `is` attr on `<a>` with dynamic component
- Special attribute `is` is deprecated and removed in Vue 3
- It is confusing, that `<a>` element is rendered as `span` sometimes
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
Grigorii K. Shartsev [Mon, 20 Nov 2023 10:54:39 +0000 (11:54 +0100)]
fix(files): make file list item link focusable
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
Grigorii K. Shartsev [Mon, 20 Nov 2023 10:54:10 +0000 (11:54 +0100)]
fix(files): remove focus outline on file list item click
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
Pytal [Tue, 28 Nov 2023 20:29:32 +0000 (12:29 -0800)]
Merge pull request #41809 from nextcloud/fix/hidden-password-confirmation
fix: Hidden password confirmation dialog with new global search
Christopher Ng [Tue, 28 Nov 2023 18:34:43 +0000 (10:34 -0800)]
chore: compile assets
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Christopher Ng [Tue, 28 Nov 2023 18:34:43 +0000 (10:34 -0800)]
fix: Hidden password confirmation dialog
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Christopher Ng [Tue, 28 Nov 2023 18:34:43 +0000 (10:34 -0800)]
fix(settings): Duplicate update user manager calls
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Richard Steinmetz [Tue, 28 Nov 2023 18:40:49 +0000 (19:40 +0100)]
Merge pull request #41778 from nextcloud/fix/dav/schedule-ooo-jobs
fix(dav): don't schedule out-of-office jobs for dates in the past
Andy Scherzinger [Tue, 28 Nov 2023 16:55:12 +0000 (17:55 +0100)]
Merge pull request #41753 from nextcloud/Valdnet-patch-1
Spelling correction
Daniel Kesselberg [Tue, 28 Nov 2023 16:12:21 +0000 (17:12 +0100)]
fix: add mimetype for eml and msg
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Côme Chilliet [Tue, 28 Nov 2023 15:05:48 +0000 (16:05 +0100)]
Merge pull request #41468 from nextcloud/feat/migrate-database-pending-bigint-conversions
Migrate database pending bigint conversions
Andy Scherzinger [Tue, 28 Nov 2023 14:48:46 +0000 (15:48 +0100)]
Update test for changed string - openInFilesAction.spec.ts
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Valdnet [Sun, 26 Nov 2023 10:32:03 +0000 (11:32 +0100)]
Change to capital letter
Signed-off-by: Valdnet <47037905+Valdnet@users.noreply.github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Valdnet [Sun, 26 Nov 2023 10:29:50 +0000 (11:29 +0100)]
Correct a typo
Signed-off-by: Valdnet <47037905+Valdnet@users.noreply.github.com>
Richard Steinmetz [Mon, 27 Nov 2023 14:49:08 +0000 (15:49 +0100)]
fix(dav): don't schedule out-of-office jobs for dates in the past
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
Joas Schilling [Tue, 28 Nov 2023 13:09:56 +0000 (14:09 +0100)]
Merge pull request #41766 from nextcloud/bugfix/noid/remove-Could-not-find-resource-main.js
fix(files_external): Fix "Could not find resource main.js to load"
Côme Chilliet [Thu, 16 Nov 2023 10:55:01 +0000 (11:55 +0100)]
Migrate away from deprecated doctrine/dbal getName function
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Côme Chilliet [Tue, 14 Nov 2023 15:57:32 +0000 (16:57 +0100)]
Migrate database pending bigint conversions check to new API
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Côme Chilliet [Tue, 28 Nov 2023 13:06:19 +0000 (14:06 +0100)]
Merge pull request #41460 from nextcloud/feat/migrate-database-missing-checks
Migrate database missing checks
Louis [Tue, 28 Nov 2023 12:43:50 +0000 (13:43 +0100)]
Merge pull request #40939 from nextcloud/pulsejet/sidebar-tags
sidebar: allow turning off tags view by default
Git'Fellow [Tue, 28 Nov 2023 10:36:59 +0000 (11:36 +0100)]
Merge pull request #41272 from nextcloud/fixOccScans
fix: reduce memory consumption of scans
Anna [Tue, 28 Nov 2023 10:34:56 +0000 (11:34 +0100)]
Merge pull request #41714 from nextcloud/enh/add-ooo-and-remove-user-status
Anna Larch [Fri, 24 Nov 2023 00:49:30 +0000 (01:49 +0100)]
enh(userstatus): add OOO automation and remove calendar automation
Signed-off-by: Anna Larch <anna@nextcloud.com>
Arthur Schiwon [Tue, 28 Nov 2023 09:25:18 +0000 (10:25 +0100)]
Merge pull request #41779 from nextcloud/bugfix/noid/use-destinct-exception-so-apps-dont-parse-messages
fix(API): Use a distinct exception so apps can react to it and custom…
Joas Schilling [Mon, 27 Nov 2023 16:59:14 +0000 (17:59 +0100)]
fix(API): Use a distinct exception so apps can react to it and customize the return
Signed-off-by: Joas Schilling <coding@schilljs.com>
Ferdinand Thiessen [Tue, 28 Nov 2023 01:53:11 +0000 (02:53 +0100)]
Merge pull request #41777 from nextcloud/fix/comments-use-ncdatetime
enh(comments): Move from Moment.js to `NcDateTime`
Pytal [Tue, 28 Nov 2023 01:22:39 +0000 (17:22 -0800)]
Merge pull request #41782 from nextcloud/fix/load-files-list
fix(files): Empty files list when uid contains special chars
Nextcloud bot [Tue, 28 Nov 2023 00:26:21 +0000 (00:26 +0000)]
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Christopher Ng [Mon, 27 Nov 2023 19:12:00 +0000 (11:12 -0800)]
chore: compile assets
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Christopher Ng [Mon, 27 Nov 2023 19:12:00 +0000 (11:12 -0800)]
fix(files): Empty files list when uid contains special chars
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Eduardo Morales [Mon, 27 Nov 2023 19:15:50 +0000 (13:15 -0600)]
Merge pull request #41709 from nextcloud/fix/files-copy-move-action
fix(files): Reverse logic to prevent copy to itself
Varun Patil [Tue, 17 Oct 2023 04:04:53 +0000 (21:04 -0700)]
sidebar: allow turning off tags view by default
With #37065, there is no way to hide the tags from the sidebar
by default when they are not relevant or redundant (e.g. the tab
may already show the file's tags). This can be annyoing especially
when the file has many tags. This patch adds an option to hide
the tags from the sidebar by default (the user can still open
the tags tab manually).
This also reduces one request when opening the sidebar when the
tags are turned off, since all tags don't need to be fetched
anymore.
Signed-off-by: Varun Patil <varunpatil@ucla.edu>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Ferdinand Thiessen [Mon, 27 Nov 2023 18:16:03 +0000 (19:16 +0100)]
Merge pull request #41749 from nextcloud/checkUserOwner
fix(files_versions): Check for user and owner before call getUserFolder
Ferdinand Thiessen [Thu, 23 Nov 2023 20:37:51 +0000 (21:37 +0100)]
chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Mon, 27 Nov 2023 17:27:28 +0000 (18:27 +0100)]
enh(files): Add cypress tests for copy and move
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Thu, 23 Nov 2023 20:34:36 +0000 (21:34 +0100)]
fix(files): Correct condition for checking copy/move into same directory
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Mon, 27 Nov 2023 18:06:24 +0000 (19:06 +0100)]
Merge pull request #41693 from nextcloud/fix/files-drag-and-drop
fix(files): Allow to drag and drop new files also on empty directories
Christoph Wurst [Mon, 27 Nov 2023 08:42:23 +0000 (09:42 +0100)]
fix(dav): Make ooo settings a form and the message required
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Ferdinand Thiessen [Fri, 24 Nov 2023 01:08:06 +0000 (02:08 +0100)]
chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Thu, 23 Nov 2023 19:42:33 +0000 (20:42 +0100)]
fix(config): Adjust typescript config to allow `.ts` imports and Typescript in Vue files
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Thu, 23 Nov 2023 13:58:43 +0000 (14:58 +0100)]
fix(files): Show error message if drag-and-drop upload fails
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Thu, 23 Nov 2023 13:34:57 +0000 (14:34 +0100)]
fix(files): Allow to drag and drop new files also on empty directories
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Mon, 27 Nov 2023 16:31:29 +0000 (17:31 +0100)]
Merge pull request #41710 from nextcloud/fix/files-table-header
fix(files): Adjust table header to look like on previous versions
Ferdinand Thiessen [Mon, 27 Nov 2023 16:08:54 +0000 (17:08 +0100)]
chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Thu, 23 Nov 2023 23:18:47 +0000 (00:18 +0100)]
fix(files): Adjust table header to look like on previous versions
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Côme Chilliet [Thu, 23 Nov 2023 09:29:10 +0000 (10:29 +0100)]
Missing things in database should be warning, not info
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Côme Chilliet [Tue, 14 Nov 2023 16:05:38 +0000 (17:05 +0100)]
fix(tests) Fix CheckSetupControllerTest
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Côme Chilliet [Tue, 14 Nov 2023 15:19:16 +0000 (16:19 +0100)]
Switch from deprecated hasPrimaryKey to getPrimaryKey function
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Côme Chilliet [Tue, 14 Nov 2023 15:07:37 +0000 (16:07 +0100)]
Migrate missing primary key database check to new API
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Côme Chilliet [Tue, 14 Nov 2023 14:51:26 +0000 (15:51 +0100)]
Migrate missing index database check to new API
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Côme Chilliet [Tue, 14 Nov 2023 14:14:14 +0000 (15:14 +0100)]
Migrate missing column database check to new API
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Git'Fellow [Sat, 25 Nov 2023 22:19:07 +0000 (23:19 +0100)]
fix(files_versions): Explicitly check for user or owner before call getUserFolder
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix typo
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Optimize DI
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Switch to DI
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
userSession does not contain null
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Restore phpdoc annots
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Ferdinand Thiessen [Mon, 27 Nov 2023 14:15:47 +0000 (15:15 +0100)]
chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Mon, 27 Nov 2023 14:15:31 +0000 (15:15 +0100)]
fix(comments): Move from Moment.js to `NcDateTime`
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Joas Schilling [Mon, 27 Nov 2023 11:55:32 +0000 (12:55 +0100)]
Merge pull request #41764 from nextcloud/nickvergessen-patch-1
Update list of PHP versions
Joas Schilling [Mon, 27 Nov 2023 11:35:15 +0000 (12:35 +0100)]
fix(files_external): Fix "Could not find resource main.js to load"
Signed-off-by: Joas Schilling <coding@schilljs.com>
Joas Schilling [Mon, 27 Nov 2023 10:52:42 +0000 (11:52 +0100)]
Update list of PHP versions
Signed-off-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Benjamin Gaussorgues [Mon, 27 Nov 2023 09:49:14 +0000 (10:49 +0100)]
Merge pull request #41738 from nextcloud/feat/hide-dav-search-provider-if-no-app
Joas Schilling [Mon, 27 Nov 2023 09:40:50 +0000 (10:40 +0100)]
Merge pull request #41578 from nextcloud/enh/noid/dispatcher-test-argument-range
Enable AppFramework dispatcher to enforce integer ranges
Benjamin Gaussorgues [Fri, 24 Nov 2023 16:00:50 +0000 (17:00 +0100)]
feat(dav): hide search providers if their respective app is not activated
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
Joas Schilling [Mon, 27 Nov 2023 05:39:57 +0000 (06:39 +0100)]
Merge pull request #41640 from nextcloud/bugfix/noid/fix-memory-limit-setup-check
fix(setupcheck): Fix memory limit setup check
Nextcloud bot [Mon, 27 Nov 2023 00:22:59 +0000 (00:22 +0000)]
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Nextcloud bot [Sun, 26 Nov 2023 00:23:38 +0000 (00:23 +0000)]
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Nextcloud bot [Sat, 25 Nov 2023 00:25:54 +0000 (00:25 +0000)]
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Andy Scherzinger [Fri, 24 Nov 2023 17:51:19 +0000 (18:51 +0100)]
Merge pull request #41685 from nextcloud/artonge/fix/download_permissions
Ensure share has download permissions in F2V
Louis [Thu, 23 Nov 2023 11:40:03 +0000 (12:40 +0100)]
Ensure share has download permissions in F2V
Signed-off-by: Louis <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Maxence Lange [Fri, 24 Nov 2023 17:07:16 +0000 (16:07 -0100)]
Merge pull request #41705 from nextcloud/fix/noid/test-dav-v2-confirm-content
confirm content on dav-v2 test
Louis [Thu, 23 Nov 2023 11:29:17 +0000 (12:29 +0100)]
Ensure share has download permissions in F2V
Signed-off-by: Louis <louis@chmn.me>
Maxence Lange [Fri, 24 Nov 2023 09:35:01 +0000 (08:35 -0100)]
confirm content on dav-v2 test
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Andy Scherzinger [Fri, 24 Nov 2023 12:05:14 +0000 (13:05 +0100)]
Merge pull request #41719 from nextcloud/bugfix/41711/fix-actionbutton-labels
Fix action button labels
Julien Veyssier [Fri, 24 Nov 2023 11:50:10 +0000 (12:50 +0100)]
Merge pull request #41632 from nextcloud/fix/relative-url-x-requested-with
Fix adding x-requested-with header for relative URLs in some cases
Arthur Schiwon [Mon, 20 Nov 2023 13:42:39 +0000 (14:42 +0100)]
docs(openapi): update definitions
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Arthur Schiwon [Fri, 17 Nov 2023 13:06:42 +0000 (14:06 +0100)]
enh(noid): reasonabley limit amount of possible dashboard widget items
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Arthur Schiwon [Fri, 17 Nov 2023 13:04:09 +0000 (14:04 +0100)]
enh(dispatcher): enforce psalm ranges in the http dispatcher
- allows devs to provide int ranges for API arguments
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Julien Veyssier [Fri, 24 Nov 2023 09:18:57 +0000 (10:18 +0100)]
compile assets
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
Julien Veyssier [Tue, 21 Nov 2023 09:55:37 +0000 (10:55 +0100)]
fix adding x-requested-with header for relative URLs when the base NC URL is empty
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
Ferdinand Thiessen [Fri, 24 Nov 2023 10:31:18 +0000 (11:31 +0100)]
Merge pull request #41712 from nextcloud/fix/make-cypress-work-again
fix(cypress): Adjust cypress tests that relied on version to be 28
Christoph Wurst [Fri, 24 Nov 2023 10:05:20 +0000 (11:05 +0100)]
Merge pull request #41722 from nextcloud/fix/dav/date-diffing-push-notifications
fix(dav): Avoid date diffing if PHP is buggy
Marco Ambrosini [Fri, 24 Nov 2023 05:40:15 +0000 (14:40 +0900)]
Fix action button labels
Signed-off-by: Marco Ambrosini <marcoambrosini@icloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Christoph Wurst [Fri, 24 Nov 2023 08:45:56 +0000 (09:45 +0100)]
fix(dav): Avoid date diffing if PHP is buggy
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Christoph Wurst [Fri, 24 Nov 2023 06:20:00 +0000 (07:20 +0100)]
Merge pull request #41440 from nextcloud/feat/dav/out-of-office-job
feat(dav): dispatch out-of-office started and ended events
Ferdinand Thiessen [Fri, 24 Nov 2023 00:49:55 +0000 (01:49 +0100)]
Merge pull request #41683 from nextcloud/fix/41677-ab_navigation_stops_on_2_elements_inside
Remove unneeded links and add `focus-visible` state on a link
Ferdinand Thiessen [Fri, 24 Nov 2023 00:48:02 +0000 (01:48 +0100)]
Merge pull request #41707 from nextcloud/fix/missing-icons-on-filepicker
fix(files): Use SVG as FilePicker buttons to bring back icons
Nextcloud bot [Fri, 24 Nov 2023 00:27:09 +0000 (00:27 +0000)]
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Ferdinand Thiessen [Thu, 23 Nov 2023 23:57:55 +0000 (00:57 +0100)]
fix(cypress): Adjust cypress tests that relied on version to be 28
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
julia.kirschenheuter [Thu, 23 Nov 2023 11:18:37 +0000 (12:18 +0100)]
Remove unneeded links and add `focus-visible` state on a link
Signed-off-by: julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
Ferdinand Thiessen [Thu, 23 Nov 2023 20:23:12 +0000 (21:23 +0100)]
chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Thu, 23 Nov 2023 20:22:45 +0000 (21:22 +0100)]
fix(files): Use SVG as FilePicker icons instead of Vue components
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Ferdinand Thiessen [Thu, 23 Nov 2023 20:27:41 +0000 (21:27 +0100)]
Merge pull request #41687 from nextcloud/fix/unified-search-view
fix(core): Subscribe to navigation changes on mounted for Unified search
Arthur Schiwon [Thu, 23 Nov 2023 19:38:53 +0000 (20:38 +0100)]
Merge pull request #41652 from nextcloud/global-search-focus-input
Focus global search input on open
fenn-cs [Tue, 21 Nov 2023 21:07:53 +0000 (22:07 +0100)]
Focus global search input on open
For better accesibility, the search input in the global search
modal should be focused when the search modal is opened.
Resolves: https://github.com/nextcloud/server/issues/41651
Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Richard Steinmetz [Mon, 13 Nov 2023 16:36:24 +0000 (17:36 +0100)]
feat(dav): dispatch out-of-office started and ended events
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>