Robin Appelman
8ed7aeb395
test: adjust tests to unsorted folder listing
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-20 17:56:12 +00:00
Stephan Orbaugh
495b705c01
Merge pull request #60566 from nextcloud/backport/60546/stable32
...
[stable32] fix: handle NAT64 addresses in isLocalAddress
2026-05-20 16:14:03 +02:00
Anna
42a11c384d
Merge pull request #60594 from nextcloud/backport/60286/stable32
...
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
[stable32] fix(AppStore/Fetcher): catch GenericFileException when reading cache file in Fetcher
2026-05-20 14:18:49 +02:00
Enjeck C.
0054c73d66
feat(occ): make it possible to remove an arbitrary number of users to a group
...
Signed-off-by: Enjeck C. <patrathewhiz@gmail.com>
2026-05-20 09:01:50 +00:00
Arthur Schiwon
df86aef5e6
feat(occ): make it possible to add an arbitrary number of users to a group
...
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-05-20 09:01:50 +00:00
Anna Larch
b06d294056
fix(appstore): address review comments on GenericFileException handling
...
- Attempt delete before logging the warning, so the warning only fires
when we know recovery will succeed
- Log an error (not silently return) when delete itself fails
- Use catch (\Exception) without variable (PHP 8)
- Replace willReturnArgument(1) with explicit willReturn(true) in test
- Add blank lines between logical blocks in test for readability
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 00:51:53 +00:00
Anna Larch
5d9dd80332
fix(appstore): catch GenericFileException when reading cache file in Fetcher
...
When the appstore cache file exists but getContent() throws a
GenericFileException (I/O error or OS-level permission failure), explicitly
delete the file and recreate it before writing fresh data — mirroring the
NotFoundException recovery path. If deletion itself fails, return [] cleanly.
Previously, the unhandled exception caused the entire apps settings page to
crash. The new test covers both the recovery path and deletion failure.
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 00:51:53 +00:00
Robin Appelman
0ec610323e
fix: handle NAT64 addresses in isLocalAddress
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 15:37:53 +00:00
John Molakvoæ (skjnldsv)
4394d4622e
fix(s3): add Content-MD5 header for DeleteObjects to fix AWS SDK v3.339.0+ compatibility
...
AWS SDK PHP v3.339.0+ introduced a breaking change requiring the Content-MD5
header for DeleteObjects operations. This causes 'MissingContentMD5' errors when
using S3-compatible services like MinIO.
Add middleware to automatically calculate and inject the Content-MD5 header on
all DeleteObjects requests. This is applied universally at the S3ConnectionTrait
level, fixing both external storage (AmazonS3) and core ObjectStore (S3) classes.
Fixes: https://github.com/aws/aws-sdk-php/issues/3068
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2026-05-12 09:36:22 +00:00
Marcel Klehr
10c2a9d2e9
fix: Run cs:fix
...
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-05-07 09:26:02 +02:00
Marcel Klehr
4195f4a03d
fix(TaskProcessingWorker): Only store config value every 60s
...
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-05-07 09:26:02 +02:00
Marcel Klehr
1a724c977c
fix: Fix taskprocessing:worker command tests
...
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-05-07 09:26:02 +02:00
Anna Larch
24efb2099d
fix(tests): fix Cypress and PHP 8.4 CI failures
...
- Add Electron to supported browsers regex so Electron-based environments
(including Cypress) are not redirected to the unsupported browser page.
The browserslist-useragent-regexp 4.1.4 upgrade stopped matching Electron
implicitly; this mirrors the existing AscDesktopEditor special-case.
- Fix TextProcessing mock: deleteOlderThan() returns int, not void.
PHP 8.4 strict mock type enforcement causes a TypeError when the
callback is declared void.
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-05-05 20:43:11 +00:00
Christoph Wurst
643a582132
fix(dav): unify content disposition header escaping
...
Signed-off-by: Christoph Wurst <1374172+ChristophWurst@users.noreply.github.com>
2026-04-22 15:37:10 +00:00
Louis
1a18fe53cb
Merge pull request #59774 from nextcloud/backport/59758/stable32
...
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
[stable32] fix: Reduce the mixups between apptokens and session ids
2026-04-21 16:00:40 +02:00
Côme Chilliet
310b488ad9
fix: Reduce the mixups between apptokens and session ids
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-21 13:14:39 +02:00
Côme Chilliet
ba04f37aad
fix: Fix user in Tags class, do not depend upon session
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-21 11:00:56 +02:00
Julien Veyssier
2552b97c4a
fix(upgrade): restore missing apps on upgrade
...
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2026-04-17 11:17:40 +00:00
Joas Schilling
3c54254039
fix(notifications): Require absolute links for support of desktop and mobile clients
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-04-13 15:33:57 +00:00
Joas Schilling
dabdcb4f24
fix(sharing): Don't give a reason when share from disabled user is no longer working
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-04-13 14:11:27 +00:00
Andy Scherzinger
fa9266e584
Merge pull request #59081 from nextcloud/backport/59015/stable32
...
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
[stable32] feat(taskprocessing): add worker command for synchronous task processing
2026-03-20 13:56:45 +01:00
Côme Chilliet
a5e79add44
fix(tests): Adapt Middleware tests to API change
...
Removed a few tests rendered obsolete by the refactoring.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-20 11:00:58 +01:00
Marcel Klehr
c96583bc75
fix: Apply suggestions from code review
...
Co-authored-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-03-19 14:33:31 +00:00
Marcel Klehr
c0db1397cd
chore: Address review comments
...
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-03-19 14:33:31 +00:00
copilot-swe-agent[bot]
691f7f431d
test(taskprocessing): fix broken multi-type assertions and add starvation-prevention test
...
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 14:33:31 +00:00
copilot-swe-agent[bot]
e1208cad4c
fix: Fix Task mock error: use real Task instances; run autoloaderchecker
...
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 14:33:30 +00:00
copilot-swe-agent[bot]
fb8ac6863c
feat(taskprocessing): Add --taskTypes whitelist option to taskprocessing:worker command
...
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 14:33:30 +00:00
copilot-swe-agent[bot]
b81b3c7d10
feat(taskprocessing): Add worker command with tests and registration
...
Co-authored-by: marcelklehr <986878+marcelklehr@users.noreply.github.com>
2026-03-19 14:33:30 +00:00
Maksim Sukharev
96e24b3da0
fix(bg_jobs): store job argument as a text, increase length cap from 4000 to 32000
...
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-03-19 11:38:40 +01:00
Louis
fdd2e624ac
Merge pull request #58659 from nextcloud/backport/58057/stable32
...
[stable32] perf(sharing): Avoid loading all shares from all users when unsharing
2026-03-18 18:22:47 +01:00
Carl Schwan
7f53bfae6c
Merge pull request #58847 from nextcloud/backport/53733/stable32
...
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
[stable32] fix: give target file all permissions on copy
2026-03-12 09:45:05 +01:00
Robin Appelman
40c5f0e51e
fix: make objectstore copy consistent with changed local storage behavior
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-10 18:17:20 +01:00
Robin Appelman
e06679c932
test: add test for updating cached mounts with multiple entries for root id
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-10 16:33:28 +00:00
Anna Larch
447c77e23e
fix: add fallback to raw path info
...
Follow up to https://github.com/nextcloud/server/pull/56843
The raw path info method has no fallback for an empty array parameter
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-03-10 12:52:15 +00:00
Ferdinand Thiessen
cfa95919ee
test(preview): properly test postscript preview provider
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-03 02:19:02 +01:00
Carl Schwan
c3a15af538
perf: Perform share path validation early
...
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-03-02 16:08:46 +01:00
Josh
f81c58c479
test(Storage): avoid falsy directory/filename checks (for now)
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-02 13:36:34 +00:00
Josh
5f23d5b831
test(Storage): expand file / directory name tests
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-02 13:36:34 +00:00
Carl Schwan
3e8f02308a
perf(sharing): Avoid loading all shares from all users when unsharing
...
First check which users have a shares and for which providers and then
only load these shares.
Avoid doing at most 5 SQL queries for each users a share was shared with if
there are no shares.
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-03-02 11:25:52 +00:00
Marcel Müller
008249440a
fix: Use configured loglevel even when log.condition matches is set
...
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2026-02-27 15:02:30 +00:00
Salvatore Martire
122b019f5c
fix(L10N): stop stripping _ from language codes
...
Stripping the underscore breaks support for all languages like de_AT,
de_DE and so on...
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-02-25 15:55:06 +00:00
Robin Appelman
87504e27d0
test: add test for calling filesize on non-existing files
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-02-24 18:08:38 +01:00
Kate
2cbdef033f
Merge pull request #58368 from nextcloud/backport/58134/stable32
2026-02-23 14:11:34 +01:00
Carl Schwan
cbe4a26156
fix(propagator): Improve lock behavior of propagator
...
Fix possible dead locks when running the propagator caused by two
requests updating the same amount rows in transactions.
- Lock rows always in the same deterministic order by sorting the
path_hash first
- On all database outside of sqlite, also do first a SELECT FOR UPDATE
to lock all the rows used in batch UPDATE calls, afterward to decrease
the risk of two requests trying to lock the same rows
Signed-off-by: Carl Schwan <carlschwan@kde.org>
(cherry picked from commit cae742d182 )
2026-02-17 10:39:11 +01:00
Salvatore Martire
b6e18bf28a
fix: add X-User-Id header to logout response before clearing the user session
...
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-02-06 17:18:33 +00:00
Louis
abb135e64d
Merge pull request #57925 from nextcloud/backport/57522/stable32
...
[stable32] Add InstallationCompletedEvent for post-installation actions
2026-02-04 16:55:30 +01:00
Joas Schilling
a89b1b1a4b
test(Updater): Harden flaky test
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-02-04 10:04:34 +00:00
Misha M.-Kupriyanov
47d41c0bab
feat(install): dispatch InstallationCompletedEvent in Setup
...
Integrate event dispatching into Setup class:
- Inject IEventDispatcher dependency
- Dispatch InstallationCompletedEvent after successful installation
- Add Setup tests for event integration
- Update composer autoload for new class
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2026-02-03 09:47:51 +01:00
Misha M.-Kupriyanov
08df93ec9a
feat(install): add InstallationCompletedEvent for post-installation hooks
...
Add InstallationCompletedEvent class in public API (OCP namespace) that
provides installation details: data directory, admin username, and admin
email. Event will be dispatched after successful installation.
Include comprehensive unit tests covering all event scenarios.
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2026-02-03 09:47:51 +01:00
Joas Schilling
6b95ad0aab
test(dispatcher): Add some tests with input 0
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-02-03 08:18:27 +00:00