The "Shared by" column in Shared with me could not be sorted. It now sorts
A to Z (Z to A on a second click) by all sharers' names in alphabetical
order, the same rule as "Shared with", so items shared by several people
stay in a stable place while the avatars keep their current order. Sorting
by "Shared with" also no longer reorders that column's avatars.
Signed-off-by: Gaurav Soni <sonigaurav119@gmail.com>
Remove the deprecated owncloudsql driver configuration from the storage-users,
auth-basic, users, groups and sharing services and from the migrate command.
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
The packages are now published from owncloud/ocis, but their repository
and homepage fields still referenced owncloud/web. npm trusted publishing
requires repository.url to exactly match the publishing repository, and
the first publish attempt (tsconfig 0.0.7) failed with a 404.
Also disable setup-node package manager caching in the release workflow,
as recommended for release builds.
Signed-off-by: Lukas Hirt <info@hirt.cz>
The 'unstructured collection of testable space interactions' test runs about 80 UI steps across two spaces and takes ~150s of its 180s budget, so slow CI runners made it time out. Mark it with test.slow(), as done for the other long journeys.
Signed-off-by: Lukas Hirt <info@hirt.cz>
* feat: final removal of any docs related content
* docs: fixes from codereview
* chore: remove dead protoc-gen-doc references, drop stale buf.gen.yaml warning
The buf.gen.yaml warning comment is incorrect: the bare plugin paths are
intentional, resolved at build time by the symlink protoc-deps creates via
`bingo get -l` before buf generate ever runs.
Removing the doc plugin block left protoc-gen-doc dead: nothing generates
with it anymore, but protoc-deps still installed/symlinked it and its
.bingo lock files were still committed.
See: https://github.com/owncloud/ocis/pull/13165#issuecomment-6218074157
---------
Co-authored-by: Michal Klos <michal.klos@kiteworks.com>
fix(idm): sync bind config when resetting a service user password
Resetting an IDM service user password with `ocis idm resetpassword
--user-type service` only changed the entry in the IDM directory. Services
such as auth-basic, users and groups still bound to LDAP as the reva service
user using the old bind_password from their configuration, so after a restart
those binds failed and regular admin login started returning 401 Unauthorized.
The command now rewrites the matching bind_password and service_user_passwords
keys in ocis.yaml when it is present, and always prints the environment
variables that must carry the new password for env-var and distributed
deployments it cannot rewrite.
Fixes: https://github.com/owncloud/ocis/issues/12569
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(collaboration): retry rename and upload while file is processing
RenameFile and PutFile failed with a 500 when the storage answered with CODE_TOO_EARLY because the file was still in postprocessing, e.g. right after PutRelativeFile. This made the wopi-builtin validator flaky. Share the retry-with-backoff logic that DeleteFile already had and apply it to Move and InitiateFileUpload as well. The retries are now bounded.
Signed-off-by: Lukas Hirt <info@hirt.cz>
* fix(collaboration): return context error when retry is cancelled
Return ctx.Err() from retryWhileTooEarly when the context is cancelled, document the intentional no-op after the wait, and add a test for it.
Signed-off-by: Lukas Hirt <info@hirt.cz>
---------
Signed-off-by: Lukas Hirt <info@hirt.cz>
Scrolling inside an app such as OnlyOffice could make the whole page bounce
with it, exposing the blank page background behind the app frame. Set
overscroll-behavior-y: none on the root element while AppWrapper is mounted
and restore the previous value on unmount. The logic lives in a new
useDisableRootOverscroll composable, which is covered by unit tests.
Signed-off-by: Lukas Hirt <info@hirt.cz>
* fix(web): [OCISDEV-1511] refresh files stuck in processing after upload or copy
A postprocessing-finished event that arrives while a folder reload or a
fetch after copy is still in flight is dropped, because the resource is
not in the store yet. The response then adds the resource as processing
and nothing clears it until a page reload.
Remember finished items for a short time and refetch them when they show
up in the store as processing.
* chore: [OCISDEV-1511] add changelog
ci(release): remove the disabled docker jobs from the release pipeline (#13128)
Tagging v9.0.0-rc.1 produced a startup_failure: the workflow was rejected
before any job ran. owncloud pins Actions to an org allowlist
(owncloud/admin:actions-allowlist.yml, allowed_actions: selected with
sha_pinning_required), and three pins in this file are not on it:
docker/setup-buildx-action @f87e5991 v4.4.1 (allowlist has v4.0.0)
docker/login-action @dbcb8138 v4.6.0 (allowlist has v4.1.0)
docker/build-push-action @c3c9e263 v7.4.0 (allowlist has v7.0.0)
Allowlist validation happens at parse time, so it does not care that all
three only appear in jobs already marked `if: false`.
Rather than pin them back, drop the jobs. Building, scanning and publishing
the production image moved to owncloud-docker/ocis, which is why these were
disabled in the first place; the image Trivy scan now runs there on every PR.
That leaves nothing to maintain here and removes all three offending pins.
Removes docker-build, docker-scan (dead too: it needs docker-build),
docker-manifest and docker-readme. Nothing outside that subgraph depended on
them, so the `docker_repos` and `is_production` outputs, the
PRODUCTION_RELEASE_TAGS / DOCKER_REPO_ROLLING / DOCKER_REPO_PRODUCTION env
vars and the REPOS computation go with them. is_prerelease stays, as
create-github-release still reads it.
The filesystem scan in security-scan-trivy is untouched.
(cherry picked from commit aab12d018e)
Signed-off-by: Julian Koberg <julian.koberg@kiteworks.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Save the MFA status after the user is resolved so signed-URL downloads
inherit it, and check its age on read. Build the signing-key URL with
the URL API so it works with the vault base URL.
* fix: [OCISDEV-1476] fix AuthApp requests failing with a custom PROXY_USER_OIDC_CLAIM
* fix: [OCISDEV-1476] map ErrAccountNotFound to 401 in verifyUser
AccountResolver.verifyUser only mapped ErrAccountDisabled to 401 before
falling through to a generic 500. The identity backend excludes disabled
accounts from by-username lookups and returns ErrAccountNotFound instead,
so a disabled user authenticating via AppAuth or basic auth got a 500
instead of a 401, caught by the acceptance test suite.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* fix: [OCISDEV-1523] fix the LDAP master-ID filter for an empty base filter
EnhanceFilterWithMasterID replaced an empty LDAP filter with a master-ID-only
filter. This action restricted an unrestricted search to master-ID users
only. The bug broke the cross-instance user search in multi-instance
deployments. The function now keeps an empty filter unchanged.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* fix: [OCISDEV-1523] require an explicit LDAP user filter with a master ID
EnhanceFilterWithMasterID in ocis-pkg/ldap/filter.go now keeps an empty
LDAP filter unchanged instead of restricting it to master-ID users only.
The auth-basic, users, groups, and graph services reuse this function to
compute their default LDAP user filter at startup.
An unset filter now means these services resolve or authenticate every
user in the shared LDAP directory, not only master-ID users. This action
is a behavior change for a deployment that sets
OCIS_MULTI_INSTANCE_MASTER_ID without an explicit OCIS_LDAP_USER_FILTER.
Each service now rejects startup when OCIS_MULTI_INSTANCE_MASTER_ID is
set and its own user filter is empty. This action keeps a multi-instance
deployment scoped to its own users by default.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* refactor: [OCISDEV-1523] simplify EnhanceFilterWithMasterID guard clauses
The function collapses three early-return guards into one condition.
This action removes a duplicated rationale comment between filter.go
and filter_test.go.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* docs: [OCISDEV-1523] point the changelog entry at the master backport PR
The changelog entry pointed at PR 13096, the stable-8.2 backport. This
commit points the entry at the master-branch PR number instead.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Requests on unprotected routes can carry a reva token without a resolved
user: reva's internal downloads to the data gateway (/data) are sent with
the caller's token. create_home logged "no user in context" at error level
for each of them, so every download added an error line. Log at debug with
the path instead; the request is passed on unchanged, as before.
Fixes#13101
Claude-Session: https://claude.ai/code/session_01WpoeSoKYEdgQcWjEzTVKpT
Signed-off-by: Paul Faure <paul@faure.ca>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>