Releases: cs3org/reva
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
/public
prefix 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 setrecursive
when 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-render
is 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
privatelink
property in the PROPFIND response -privatelink
is 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
spaceHref
function 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.SpaceID
with<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) -
returnsSpaceID
instead ofpath
inDecodeResourceID
- 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
QuotaInfo
struct had fields forAvailableBytes
andAvailableInodes
, 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
getSpace
was 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
spaces
is enabled before returning thefileid
after 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
usedbytes
instead ofusedlogicalbytes
for 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
v2.27.5
Changelog for reva 2.27.5 (2025-02-24)
The following sections list the changes in reva 2.27.5 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5093: Fix OCM create share
- Fix #5077: Deny Users invite themselves to their own federated connection
- Fix #5071: Role conversion
- Enh #5075: Add the ocm notification handler
- Enh #5083: Add the ocm notification ShareChangePermission
- Enh #5063: Add roles
Details
- Bugfix #5093: Fix OCM create share
We fixed the OCM share fails on share creating if the federated instance is not reachable.
- Bugfix #5077: Deny Users invite themselves to their own federated connection
Deny Users invite themselves to their own federated connection
- Bugfix #5071: Role conversion
Fix role from resource permission conversion
- Enhancement #5075: Add the ocm notification handler
Added the ocm notification handler that allows receiving a notification from a remote party
about changes to a previously known entity.
- Enhancement #5083: Add the ocm notification ShareChangePermission
Added the ocm notification ShareChangePermission that allows to synchronize the
permissions of a share between the federated instances.
- Enhancement #5063: Add roles
Add EditorListGrantsWithVersions and FileEditorListGrantsWithVersions roles.
v2.27.4
Changelog for reva 2.27.4 (2025-02-03)
The following sections list the changes in reva 2.27.4 relevant to
reva users. The changes are ordered by importance.
Summary
Details
- Bugfix #5061: OCM Wildcards
Fix using ocm wildcards. Do not overwrite cached provider with actual value
- Bugfix #5055: Fix view&download permission issue
When opening files with view&download permission (aka read), the appprovider would falsely
issue a secureview token. This is fixed now.
v2.27.3
Changelog for reva 2.27.3 (2025-01-27)
The following sections list the changes in reva 2.27.3 relevant to
reva users. The changes are ordered by importance.
Summary
Details
- Bugfix #5042: Fix ocis dependency
Fix the ocm gateway connection pool. Fix ocis dependency in the reva go.mod file. Bump the ocis
version accordingly to the major version.
owncloud/ocis#10846
owncloud/ocis#10878
#5042
- Enhancement #5051: Emit SpaceMembershipExpired event
v2.27.2
Changelog for reva 2.27.2 (2025-01-17)
The following sections list the changes in reva 2.27.2 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5043: Fix SpaceMembershipExpired unmarshal
Details
- Bugfix #5043: Fix SpaceMembershipExpired unmarshal
SpaceMembershipExpired events can now be unmarshalled correctly
v2.27.1
Changelog for reva 2.27.1 (2025-01-09)
The following sections list the changes in reva 2.27.1 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5033: Fix ocm wildcards
- Fix #5031: Allow to accepted invite after it was once deleted
- Fix #5026: Delete Blobs when Space is deleted
- Enh #5025: Allow wildcards in OCM domains
- Enh #5023: Notification feature toggle
- Enh #4990: Allow locking via ocm
- Enh #5032: Add SendEmailsEvent
Details
- Bugfix #5033: Fix ocm wildcards
Ocm wildcards were not working properly. We now overwrite the wildcard values with the actual
domain.
- Bugfix #5031: Allow to accepted invite after it was once deleted
Allowed to accepted invite even after it was once deleted on the invite receiver or invite
creation side.
- Bugfix #5026: Delete Blobs when Space is deleted
Delete all blobs of a space when the space is deleted.
- Enhancement #5025: Allow wildcards in OCM domains
When verifiying domains, allow wildcards in the domain name. This will not work when using
verify-request-hostname
- Enhancement #5023: Notification feature toggle
Adds a feature toggle for the notification settings.
- Enhancement #4990: Allow locking via ocm
Implement locking endpoints so files can be locked and unlocked via ocm.
- Enhancement #5032: Add SendEmailsEvent
Adds SendEmailsEvent that is used to trigger the sending of group emails.