Releases: cs3org/reva
v3.3.2
Changelog for reva 3.3.1 (2025-10-21)
The following sections list the changes in reva 3.3.1 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5376: Deny access shares should not be returned in SharedWithMe call
- Fix #5375: Fix parsing of OCM Address in case of more than one "@" present
Details
-
Bugfix #5376: Deny access shares should not be returned in SharedWithMe call
- SharedWithMe no longer returns deny access shares
-
Bugfix #5375: Fix parsing of OCM Address in case of more than one "@" present
I've fixed the behavior for parsing a long-standing annoyance for users who had OCM Address
like "mahdi-baghbani@[email protected]".
v3.3.1
Changelog for reva 3.3.1 (2025-10-21)
The following sections list the changes in reva 3.3.1 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5376: Deny access shares should not be returned in SharedWithMe call
- Fix #5375: Fix parsing of OCM Address in case of more than one "@" present
Details
-
Bugfix #5376: Deny access shares should not be returned in SharedWithMe call
- SharedWithMe no longer returns deny access shares
-
Bugfix #5375: Fix parsing of OCM Address in case of more than one "@" present
I've fixed the behavior for parsing a long-standing annoyance for users who had OCM Address
like "mahdi-baghbani@[email protected]".
v3.3.0
What's Changed
- Remove trash and versions from OCS role by @jessegeens in #5364
- spaces: skip spaces not available by @labkode in #5365
- Fix OCM legacy access by @glpatcern in #5338
- Proper support of Range requests by @jessegeens in #5367
- fix: bring back support for 'Deny access' by @glpatcern in #5366
- [Build-deps]: Bump github.com/ceph/go-ceph from 0.35.0 to 0.36.0 by @dependabot[bot] in #5371
Full Changelog: v3.2.2...v3.3.0
v3.2.1
What's Changed
- Fix nilpointers seen in production by @jessegeens in #5348
- OCM: Bugfix when searching for federated users by @rawe0 in #5350
- Rewrite handling of listing spaces with an ID filter by @jessegeens in #5349
- OCM: Rollback share creation if remote request fails by @rawe0 in #5351
- remove filepath.Join for constructing URLs by @jessegeens in #5361
Full Changelog: v3.2.0...v3.2.1
v3.2.0
What's Changed
- eos: fixed use of "app" tag by @glpatcern in #5130
- Make COPY work in public links in spaces by @jessegeens in #5284
- No home creation for machine auth by @jessegeens in #5288
- Fix nilpointers in spaces shares by @jessegeens in #5290
- Better logging in GraphAPI by @jessegeens in #5289
- add support for public spaces to spacesregistry by @jessegeens in #5283
- Implement
patchMeto allow users to update language preferences by @jessegeens in #5292 - add support for filtering users on type by @jessegeens in #5291
- feat: new rules for public links in graphAPI by @rodcoffani in #5287
- Make preferences work for LW accounts by @jessegeens in #5293
- Ignore errors on decorating projects by @jessegeens in #5294
- OCM: Fixes to enable OCM sharing in the LibreGraph implementation by @rawe0 in #5286
- cephmount: new hybrid driver to connect to CephFS clusters with go 1.25 by @labkode in #5273
- Specifically use go 1.25.1 by @glpatcern in #5302
- routing: skip missing routes by @labkode in #5314
- Remove codacy coverage check by @jessegeens in #5315
- use GORM to manage preferences database table by @jessegeens in #5317
- OCM: List OCM shares in LibreGraph implementation by @rawe0 in #5316
- Modify SetQuota to consider New Project Level Quotas by @pmedinar01 in #5319
- dynamic router: do not fail if a mount configuration is missing by @glpatcern in #5318
- Migrate share sql driver from cernbox/reva-plugins to cs3org/reva by @jessegeens in #5322
- fix bug where share sql drivers didn't register properly by @jessegeens in #5324
- Show shares to project admins by @jessegeens in #5301
- OCM: Update, Delete and Show OCM Shares in SharedWith View by @rawe0 in #5320
- check status of ListReceivedOCMShares before reading its values by @jessegeens in #5326
- handle OCM disabled in getPermissionsByCs3Reference by @jessegeens in #5328
- Implement endpoint for hiding shares by @jessegeens in #5329
- Make projects manager public, so that it can be used in cernboxcop by @jessegeens in #5332
- Add support for thumbnails in Public spaces by @glpatcern in #5331
- add user filter to OCS listSharesWithOthers by @jessegeens in #5333
- sharedByMe works with deleted accounts by @jessegeens in #5336
- Show public links to project admins by @jessegeens in #5334
- Fix versions and lightweight accounts for EOS 5.3.22 by @jessegeens in #5335
- Fix permission check for MOVE for LW accs by @jessegeens in #5337
- NotifyUploads on dropzones in libregraph by @jessegeens in #5339
- Support requests to /app/new on space root without container ID by @jessegeens in #5340
- Support requests to /app/new on space root without container ID by @jessegeens in #5341
- Fix "ListMyOfficeFiles" feature in spaces by @jessegeens in #5342
- Fix /drives/{space-id} call for home by @jessegeens in #5344
- Fix 502 on /shared{By,With}Me for LW accs when OCM is enabled by @jessegeens in #5345
- Ensure links cannot expire in the past by @jessegeens in #5346
- temp fix to make eosatlas and eosmedia work by @jessegeens in #5347
Full Changelog: v3.1.0...v3.2.0
v3.1.0
Changelog for reva 3.1.0 (2025-08-26)
The following sections list the changes in reva 3.1.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5218: Check EOS errorcode on CreateHome
- Fix #5236: Approvider failed to create files
- Fix #5264: Make COPY requests work again
- Fix #5237: Mountpoints response
- Fix #5232: Public link downloadURL
- Fix #5252: Remove fileid from link virtual folder
- Fix #5251: Share roles
- Fix #5270: Filter available share roles based on file type
- Fix #5242: Paths in shared by me
- Fix #5265: Add version directory to propfind response
- Fix #5261: Sharing with guest accounts in spaces now works
- Fix #5277: Bug in GetStorageSpace
- Fix #5244: Wopi: fixed access token TTL
- Fix #5266: Remove deprecated dependency go-render
- Fix #5255: Make public links work in spaces
- Enh #5276: Clean up unused dependencies
- Enh #5274: Use stime instead of mtime for directories
- Enh #5185: Refactor docs and tutorials
- Enh #5253: Use TLS for EOS gRPC connections
- Enh #5275: Extend project db schema
- Enh #5225: Add create permission for drives (storage space)
- Enh #5233: Add trace ID to responses
- Enh #5215: Add private link to propfind response
- Enh #5272: Added web URL support for shares
- Enh #5280: Make COPY for folders also work on spaces
- Enh #5222: Cephfs - inode to path reverse resolution
- Enh #5235: Allow multi-user share in OCS
- Enh #5278: Add support for new EOS project quota nodes
- Enh #5279: Remove dead code
- Enh #5260: Support for updating space
- Enh #5254: Allow from and to for trashbin in headers
Details
-
Bugfix #5218: Check EOS errorcode on CreateHome
When checking whether a user already has a home, we did not specifically check whether the error
returned was NOT_FOUND, leading us to try to create a home when it may already exist (which
creates new backup jobs, etc.). Now, we only run CreateHome when EOS reports NOT_FOUND -
Bugfix #5236: Approvider failed to create files
In #4864, a new header was introduced for sending
content lengths to the datagateway. This header was missing in the appprovider, causing it to
fail when creating new files. -
Bugfix #5264: Make COPY requests work again
COPY requests were broken, because during the upload-part of the copy, no Content-Length
header was set. -
Bugfix #5237: Mountpoints response
Ensures web shows the shares (shared with me) properly and is able to navigate into them.
-
Bugfix #5232: Public link downloadURL
Removes
/publicprefix from resource path when building the download URL. -
Bugfix #5252: Remove fileid from link virtual folder
The front-end expects to not have a file ID on the root of a public link when it is a virtual folder
around a single file share, for it to automatically open in the default app. The file id of this
virtual folder has now been removed.Additionally, this also fixes the
OC-Checksum: Invalid:header on downloads of public link
shared files -
Bugfix #5251: Share roles
- share type returned as 'edit' - new id for uploader role (before: same as manager) - role labels
replaced by unifiedrole id - added file-editor and spaces-related roles to definitions
- share type returned as 'edit' - new id for uploader role (before: same as manager) - role labels
-
Bugfix #5270: Filter available share roles based on file type
-
Bugfix #5242: Paths in shared by me
Paths in "Shared by me" were broken: the first path of the path was missing. This is now fixed.
-
Bugfix #5265: Add version directory to propfind response
PROPFINDs to /v return a list of all versions of a resource. This list should start
with a reference to the version directory itself, which in turn is filtered out by the
front-end. This entry was missing after a refactor of the versions to make them
spaces-compatible. This change now fixes this. -
Bugfix #5261: Sharing with guest accounts in spaces now works
We now fetch the users from the GW and use this info to create the share, instead of passing this
info directly. Additionally, we don't setrecursivewhen setting an attribute on a file. -
Bugfix #5277: Bug in GetStorageSpace
-
Bugfix #5244: Wopi: fixed access token TTL
-
Bugfix #5266: Remove deprecated dependency go-render
The package
go-renderis deprecated and no longer available on Github. It has therefore been
removed from Reva. -
Bugfix #5255: Make public links work in spaces
Opening public links in spaces is currently broken. This is fixed by: * not needing a space ID for
public links * supporting a GET directly on a public link -
Enhancement #5276: Clean up unused dependencies
-
Enhancement #5274: Use stime instead of mtime for directories
-
Enhancement #5185: Refactor docs and tutorials
With this PR we move all example configurations out to a dedicated repository,
https://github.com/cs3org/reva-configs, and the tutorials to the Wiki. We also remove all
obsoleted content, and keep the auto-generated doc on a dedicated folder.This is to help the community further develop the documentation and configuration on separate
repositories. -
Enhancement #5253: Use TLS for EOS gRPC connections
By default, we now use TLS for EOS gRPC connections. Falling back to non-TLS connections is only
allowed when allow_insecure is set to true. -
Enhancement #5275: Extend project db schema
We added a number of fields useful to 2nd and 3rd level support to the database schema of projects
-
Enhancement #5225: Add create permission for drives (storage space)
Used by the WebUI to present the "Create space" options.
-
Enhancement #5233: Add trace ID to responses
- REVA trace ID added to responses to help with debugging and tracing requests.
-
Enhancement #5215: Add private link to propfind response
- new
privatelinkproperty in the PROPFIND response -privatelinkis NOT a "permanent
link", as it's a path based link to the resource
- new
-
Enhancement #5272: Added web URL support for shares
-
Enhancement #5280: Make COPY for folders also work on spaces
-
Enhancement #5222: Cephfs - inode to path reverse resolution
This enhancement introduces a way to do inode to path reverse resolution. This implementation
first queries the ceph monitor to find the active ceph MDS (metadata server), and then queries
the MDS to find the path from an inode using the dump inode command. -
Enhancement #5235: Allow multi-user share in OCS
Sending multiple POST requests for multiple users leads to parallel calls to EOS, which
suffers from a critical race condition when setting ACLs. So, now the reva OCS endpoint
supports sending multiple comma-seperated users. -
Enhancement #5278: Add support for new EOS project quota nodes
For EOS projects, quota nodes used to be set under the service account of the project on the path
/eos/projectThis has been changed to using GID=99 and having the path of the project be the quota node
This change introduces support for the new system
-
Enhancement #5279: Remove dead code
Removed the unused SpacesHandler and related methods from the DAV layer
-
Enhancement #5260: Support for updating space
This PR adds support for updating spaces to libregraph, specifically the description and
thumbnail of a space. Additionally, the projects catalogue now directly implements the
methods of the spaces registry. -
Enhancement #5254: Allow from and to for trashbin in headers
Currently, from and to values for trashbin listing are passed as query parameters. With the new
DAV library on the frontend, it is easier to send these as headers. Reva now accepts both, with
query parameters having priority.
v3.0.1
Changelog for reva 3.0.1 (2025-07-04)
The following sections list the changes in reva 3.0.1 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5213: Home creation
- Fix #5190: List file versions
- Fix #5189: Shares parent reference
- Fix #5204: Restore trashbin
- Fix #5219: Reva v3
- Fix #5198: Let sharees list versions
- Fix #5216: Download / restore versions in spaces
- Enh #5220: Clean up obosolete OCIS tests
- Enh #4864: Add HTTP header to disable versioning on EOS
- Enh #5201: EOS gRPC cleanup
- Enh #4883: Use newfind command in EOS
- Enh #5211: Add error code to DAV responses
- Enh #5210: Libregraph permission support
- Enh #5205: Ignore unknown routes
- Enh #5197: Pprof improvements
- Enh #5217: Spaces improvements
Details
-
Bugfix #5213: Home creation
-
Bugfix #5190: List file versions
- moved versions-related functions to utils package - new
spaceHreffunction for listing
file versions - adapts code from #2855 for restoring and downloading file versions - add parent
info to propfind response - add space info to parent reference
- moved versions-related functions to utils package - new
-
Bugfix #5189: Shares parent reference
- change: replace
md.Id.SpaceIDwith<storage-id>?<space-id>- fix: parentReference -
add space info to id - removes double encoding of driveId - new function to return relative path
inside a space root - refactor space utils: - reorder functions (Encode > Decode > Parse) -
returnsSpaceIDinstead ofpathinDecodeResourceID- new comments
- change: replace
-
Bugfix #5204: Restore trashbin
-
Bugfix #5219: Reva v3
Made reva module v3, to align with the github release
-
Bugfix #5198: Let sharees list versions
-
Bugfix #5216: Download / restore versions in spaces
- Some extra logging * Fixed a bug in IsVersionFolder * Fixed a bug in handling GET requests on the
VersionsHandler
- Some extra logging * Fixed a bug in IsVersionFolder * Fixed a bug in handling GET requests on the
-
Enhancement #5220: Clean up obosolete OCIS tests
-
Enhancement #4864: Add HTTP header to disable versioning on EOS
#4864
This
enhancement
introduces
a
new
header,
%60X-Disable-Versioning%60,
on
PUT
requests.
EOS
will
not
version
this
file
save
whenever
this
header
is
set
with
a
truthy
value.
See
also: -
Enhancement #5201: EOS gRPC cleanup
Remove reliance on binary client for some operations, split up EOS gRPC driver into several
files -
Enhancement #4883: Use newfind command in EOS
The EOS binary storage driver was still using EOS's oldfind command, which is deprecated. We
now moved to the new find command, for which an extra flag (--skip-version-dirs) is needed. -
Enhancement #5211: Add error code to DAV responses
-
Enhancement #5210: Libregraph permission support
Extension of the libregraph API to fix the following issues: * Creating links / shares now gets a
proper response * Support for updating links / shares * Support for deleting links / shares *
Removal of unsupported roles from /roleDefinitions endpoint -
Enhancement #5205: Ignore unknown routes
Currently, the gateway crashes with a fatal error if it encounters any unknown routes in the
routing table. Instead, we log the error and ignore the routes, which should make upgrades in
the routing table easier. -
Enhancement #5197: Pprof improvements
-
Enhancement #5217: Spaces improvements
Extended libregraph API, fixed restoring / downloading revisions in spaces
v3.0.0
Changelog for reva 3.0.0 (2025-06-03)
The following sections list the changes in reva 3.0.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5082: Wrong quota total reported
- Fix #5120: Allow folders to be un-favorited
- Fix #5123: Use binary client for Attrs
- Fix #5119: Stop sending non-UTF8 strings over gRPC
- Fix #5124: Apps: fixed UserAgent matching
- Fix #5122: Use the correct eos app header
- Fix #5143: Eosgrpc: fixed panic with ACLs handling
- Fix #5156: Handlenew failed to handle spaces id
- Fix #5150: GetSpace with spaceID from URL
- Fix #5153: Ocdav/put response compatible with spaces
- Fix #5133: Fix broken handling of range requests
- Fix #5149: ListMyOfficeFiles
- Fix #5148: ListMyOfficeFiles
- Fix #5064: Impersonate owner on ListRevisions
- Fix #5166: Check for spaces in listshares
- Fix #5084: Use logicalbytes instead of bytes
- Fix #5044: Return an error when EOS List errors
- Fix #5072: Impersonate owner on Revisions
- Fix #5151: Spaces + apps broken
- Fix #5142: Renamed mock APIs
- Fix #5152: Revisions in spaces
- Chg #5155: ListMyOfficeFiles only lists projects, not home
- Chg #5105: Move publicshare sql driver
- Enh #5113: Log simplified user agent in apps
- Enh #5107: Add file extension in the returning app URL log message
- Enh #5085: Extend app /notify endpoint to allow reporting errors
- Enh #5110: Log acl payload on AddACL on EOS over gRPC
- Enh #5186: Clean up EOS driver
- Enh #5132: Add expiration dates reinforcement
- Enh #5158: Add expire date to capabilities
- Enh #5080: Log viewmode in the returning app URL message
- Enh #5160: Upgrade to go1.24
- Enh #4940: Refactoring of /home
- Enh #5174: Upgrade jwt library
- Enh #5134: Libregraph API expansion
- Enh #5127: ListMyOfficeFiles
- Enh #5129: Add makefile option for local plugins
- Enh #5076: Implement OCM 1.2
- Enh #5029: Pseudo-transactionalize sharing
- Enh #5109: Extra logging in publicshares
- Enh #5167: Improved logging of rhttp router
- Enh #4404: Add support for Spaces
Details
-
Bugfix #5082: Wrong quota total reported
The EOS
QuotaInfostruct had fields forAvailableBytesandAvailableInodes, but these
were used to mean the total. This is fixed now. -
Bugfix #5120: Allow folders to be un-favorited
Currently, removing a folder from your favorites is broken, if you are the only one who has
favorited it. This is because the UnsetAttr call to EOS over gRPC is failing. As a temporary
workaround, we now always set it to empty. -
Bugfix #5123: Use binary client for Attrs
EOS < 5.3 has a couple of bugs related to attributes: * Attributes can only be removed as root or
the owner, but over gRPC we cannot become root * The recursive property is ignored on set
attributesFor these two issues, we circumvent them by calling the binary client until we have deployed EOS
5.3 -
Bugfix #5119: Stop sending non-UTF8 strings over gRPC
EOS supports having non-UTF8 attributes, which get returned in a Stat. This is problematic for
us, as we pass these attributes in the ArbitraryMetadata, which gets sent over gRPC. However,
the protobuf language specification states:A string must always contain UTF-8 encoded or 7-bit ASCII text, and cannot be longer than 2^32.
An example of such an attribute is:
User.$KERNEL.PURGE.SEC.FILEHASH="S��ϫ]���z��#1}��uU�v��8�L0R�9j�j��e?�2K�T<sJ�*�l���Dǭ��_[�>η�...��w�w[��Yg"
We fix this by stripping non-UTF8 metadata entries before sending the ResourceInfo over gRPC
-
Bugfix #5124: Apps: fixed UserAgent matching
-
Bugfix #5122: Use the correct eos app header
-
Bugfix #5143: Eosgrpc: fixed panic with ACLs handling
Fixes a panic that happens when listing a folder where files have no SysACLs, parent == nil and
versionFolder has ACLs. -
Bugfix #5156: Handlenew failed to handle spaces id
HandleNew, which creates new office files etc., tried to parse the parent container ref via
spaces, and had no fallback for non-spaces. This is now fixed. -
Bugfix #5150: GetSpace with spaceID from URL
getSpacewas getting the first element of path as the ID. This fix adds a new function
GetIdFromPath, which uses the last element of the path as the ID. -
Bugfix #5153: Ocdav/put response compatible with spaces
Checks if
spacesis enabled before returning thefileidafter a PUT request. -
Bugfix #5133: Fix broken handling of range requests
Currently, the video preview in public links is broken, because the browser sends a "Range:
bytes=0-" request. Since EOS over gRPC returns a ReadCloser on the file, which is not seekable,
Reva currently returns a 416 RequestedRangeNotSatisfiable response, breaking the video
preview.This PR modifies this behaviour to ignore the Range request in such cases.
Additionally, some errors where removed. For example, when the request does not contain
bytes=, Reva currently returns an error. However, RFC 7233 states:An origin server MUST ignore a Range header field that contains a range unit it does not
understandThus, we now ignore these requests instead of returning a 416.
-
Bugfix #5149: ListMyOfficeFiles
Regex was simplified, and a cache was created to keep version folder fileinfo, to make sure we
don't need a stat for every result -
Bugfix #5148: ListMyOfficeFiles
There was a bug in the regex for excel files: "(.*?)(.xls|.XLS|)[x|X]?$" contains an extra "|"
-
Bugfix #5064: Impersonate owner on ListRevisions
ListRevisions is currently broken for projects, because this happens on behalf of the user,
instead of the owner of the file. This behaviour is changed to do the call on behalf of the owner
(if we are in a non-home space). -
Bugfix #5166: Check for spaces in listshares
Opening files in their app from the "Shared with me" view was broken, because we returned spaces
ids even on old clients. -
Bugfix #5084: Use logicalbytes instead of bytes
EOS gRPC used
usedbytesinstead ofusedlogicalbytesfor calculating quota, resulting in
a wrong view -
Bugfix #5044: Return an error when EOS List errors
If we get an error while reading items, we now return the error to the user and break off the List
operation We do not want to return a partial list, because then a sync client may delete local
files that are missing on the server -
Bugfix #5072: Impersonate owner on Revisions
The current implementation of Download / Restore Revisions is not consistent with
ListRevisions, where we impersonate the owner in projects. We now also impersonate in the case
of Download and Restore. -
Bugfix #5151: Spaces + apps broken
There were still some places where Reva assumed that we are running spaces; while not verifying
this. This caused non-spaces WebUIs to break. This is fixed now. -
Bugfix #5142: Renamed mock APIs
The once called "mock" space APIs have been renamed as they provide static content to the web
frontend -
Bugfix #5152: Revisions in spaces
The PR that merged spaces compatibility broke listing revisions. This is now fixed.
-
Change #5155: ListMyOfficeFiles only lists projects, not home
ListMyOfficeFiles now shows only one project or the user's home, not both at the same time
-
Change #5105: Move publicshare sql driver
The publicshare sql driver has been moved to reva-plugins, to be consistent with the usershare
sql driver. -
Enhancement #5113: Log simplified user agent in apps
-
Enhancement #5107: Add file extension in the returning app URL log message
-
Enhancement #5085: Extend app /notify endpoint to allow reporting errors
-
Enhancement #5110: Log acl payload on AddACL on EOS over gRPC
-
Enhancement #5186: Clean up EOS driver
- removed unused eos drivers (home, grpc, grpchome) * removed dependency on wrapper
-
Enhancement #5132: Add expiration dates reinforcement
Public links of folders with RW permissions now have a configurable expiration date.
-
Enhancement #5158: Add expire date to capabilities
-
Enhancement #5080: Log viewmode in the returning app URL message
-
Enhancement #5160: Upgrade to go1.24
Upgrade to go1.24
-
Enhancement #4940: Refactoring of /home
-
Enhancement #5174: Upgrade jwt library
Update the golang-jwt library to v5
-
Enhancement #5134: Libregraph API expa...
v2.27.7
Changelog for reva 2.27.7 (2025-02-28)
The following sections list the changes in reva 2.27.7 relevant to
reva users. The changes are ordered by importance.
Summary
Details
- Bugfix #5100: Fix the OCM role editor
Fix the OCM role editor permission set. The redundant permissions have been removed.
- Enhancement #5101: Fix ocm auth manager
OCM auth manager had the Gatewayselector caching issue
v2.27.6
Changelog for reva 2.27.6 (2025-02-25)
The following sections list the changes in reva 2.27.6 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5096: Fix update grants for the OCM share
Details
- Bugfix #5096: Fix update grants for the OCM share
Fix update grants for the OCM share