3D Viewer - Releases

← App details

Nextcloud 32

3D Viewer 2.1.0
Release Details
UpdatedDec. 6, 2025, 10:21 a.m.
Changelog

Added

  • File Browser Default View Setting: Added user preference for default file browser view mode (Grid or List)
  • New setting in Personal Settings → File Browser → Default View
  • FileBrowser component now loads and respects the default view from user settings
  • Setting takes precedence over localStorage, ensuring consistent default behavior
  • Manual view changes are still saved to localStorage for session persistence
  • Format Sync Test Suite: Created comprehensive unit tests (tests/unit/Service/FormatSyncTest.php) to ensure format definitions stay synchronized across:
  • Backend PHP constants (lib/Constants/SupportedFormats.php)
  • Frontend configuration (src/config/viewer-config.js)
  • Nextcloud MIME registration (appinfo/mimetypemapping.json)
  • File Browser List View: Added ability to toggle between grid and list views in file browser

Changed

  • Format Definitions Centralized: Consolidated all 3D model format definitions into lib/Constants/SupportedFormats.php as single source of truth
  • EXT_MIME_MAP for extension to MIME type mappings
  • CONTENT_TYPE_MAP for file streaming content types
  • All repair steps and services now reference centralized constants
  • Eliminates format definition divergence between components
  • File Browser Grid Padding: Updated file grid padding to consistent 20px on all sides for better visual spacing

Documentation

  • Corrected repository URLs and upstream fork instructions in CONTRIBUTING.md (replaced placeholders with maz1987in/3Dviewer-Nextcloud).
  • Updated TECHNICAL.md with new controllers (SettingsController, SlicerController), components (PersonalSettings.vue, SlicerModal.vue), and detailed Personal Settings + File Browser implementation sections.
  • Added comprehensive "Adding a New Format" guide in TECHNICAL.md with step-by-step instructions and code examples
  • Expanded IMPLEMENTATION.md: added Slicer Integration & Personal Settings System sections; reorganized and deduplicated legacy "Code Audit and Cleanup" content; refreshed Table of Contents.
  • Updated README.md (docs version) advanced features list to include Slicer Integration and Personal Settings.
  • Added troubleshooting sections for Slicer Integration and Personal Settings in TROUBLESHOOTING.md.
  • Expanded test coverage notes in TESTING.md to include new controllers (Settings/Slicer) and components (PersonalSettings/SlicerModal).
  • Normalized wording and removed outdated dual-mode duplication in implementation documentation.
  • Documented dual-mode viewer architecture in TECHNICAL.md with viewer lifecycle diagram (standalone vs modal modes).

Fixed

  • Settings page image/logo path resolution: replaced hardcoded asset URL with imagePath() helper in PersonalSettings.vue to ensure correct loading under all deployment paths.
  • VRML preprocessing duplication: Removed duplicate preprocessing code in preprocessVrmlText() that was applying BOM removal, line ending normalization, and null byte removal twice, causing inconsistent preprocessing behavior.
  • Flexible texture matching loop control: Fixed nested loop control flow in texture matching logic (multiFileHelpers.js) by adding foundMatch flag to properly exit outer loop when match is found in inner loop, preventing valid texture matches from being skipped.
  • Premature texture issue check: Moved checkForTextureIssues() setTimeout call in ViewerComponent.vue to execute after model successfully loads and is added to scene, ensuring accurate texture loading status assessment.
  • Debug logging cleanup: Removed console.log statements from FileBrowser.vue component (viewMode watcher and setViewMode method) to improve production code quality.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureatLgIGKAv/DO42HgoDbqVaos4kWPFuPmF5l4PHyM5S5ivOlmqnC5xu1+d5uX/h+0rUmL+pG6wKezHo7WT0PVKSBciYZzlb5D+6sJisB5x/jMVqFaQRmnEEPKfoz2DsDucmXtH6Ppv3oXjyKd5wDjyFMwtoG1hU43QBeA4ngYTMTCXqdITK5sT4OM4IwiYhUi7zZRh6/YoRxgojXIqo/RasM3sGIUIrQs075RKqXcdGcGUwJgQPAQnGsMEW9D0LODp6bYurgBZRgnmgBrpTE3D7Ktt1G+ppQTSW4tHpuq3mFJdhFlkbhbWJw9QW28xJmDnqUGfhzXTSMqoJLnbio0n7iT5bhiyxBmhi5patzHifmDwndpRPoZNbw7vxr2zzqCc+1pMt/CoXHn1PTthmYtQMg9tvyjS7jbCdYtDYLtluzITRHP8GzRXIMmBrCRzXLymk0b3IvwyB9G83+QwzHyWSTLsKV314CSasumGhFDSxnz0E2DhVVZV7yaG89Dj9HHwmxkQVeh4iI9DCd5ynu6q/8Ljyp4nJ1p//+3WCo3NksaM0ubqkXiVFnSTnSjsoDw8mbP8TU/iESpYJ11llVA9ftZSGnnczY2zFKKK17C5m/pjE9sskLlo2bfhBzRLvYOV8ejRyaXPK1B6ejCfk2VwWntq7UKFh/+/1R5usmQkRg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 2.0.0
Release Details
UpdatedDec. 2, 2025, 2:53 a.m.
Changelog

Added

  • Personal Settings: Added personal settings page for user-specific preferences
  • SettingsController and PersonalSettings view for managing user preferences
  • Settings routes and configuration updates
  • Enhanced File Loaders: Significantly improved loader capabilities
  • Enhanced FBX loader with additional features and better support
  • Improved VRML loader with expanded capabilities
  • Updated DAE loader for better compatibility
  • Enhanced multi-file loading helpers for improved dependency resolution

Changed

  • Viewer Enhancements: Enhanced ThreeViewer component with improved controls and features
  • Camera Improvements: Updated camera composable with additional functionality
  • Circular Controller: Enhanced circular controller with better user experience
  • Theme and Performance: Updated theme and performance composables
  • Major Version Bump: Version 2.0.0 introduces significant improvements and new features

Technical

  • Updated GitHub workflows with improved condition syntax
  • Updated Dependabot timezone to Asia/Muscat
  • Added change detection to prevent unnecessary PRs in workflows
  • Updated stylelint to 16.26.1
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureJrtVI0UiQsSqL82PvCmO+FLp06iE6caUY8nD1+dKlVr5YjeTvZjLUtd0sAbmwQzlR2iC4IuRJllv7hr5cWk8oWuJtnLuE4uzcXu3bu8ndzO/Zyf4ph65Fn3GyML8Zdm6TqECBFCzk+2NG0pVxt4TM7qML5p437Q6IrF0+uOh3Vj55CTf160KAjEN7v2Sa8CT4Qf/JPKtnfyAgnKkNRXMQCf7xXe3RqtgtiVPnNq6nKfYzERoihIHhZ4LqLewUfY7jvxKUpAIxF89K+yTk1PmsJgKPBN88FF3ReKwcfJcfIhMXuH7CJEHCg++Hbd0oxzvl3uv0o8k5USdkojH0vG5IQaBF8AAEGY0aKCsScmffSN7WvmpPngsHs56V/olPNPVG1QNepRvSvBljr9D6idShiRlaW7uOBl9SVwLernLBjZ30bfqRtdrm2T7oO6gozY0zRc3jxt+ajAuaPLp8pAKC/Bv8nt3Og7R3r/mpk7qXWEgC/u78v/LqjhtICx1CQDSROq8vuces8k4iEN1kJabrhxLFPDPmZucoXWSzUStP+ISyPksq+pk5KAtnKuVRMTN8rhYkMlyK1790OOF53Q1bvlHnTc3LmzTLi6b/mVPBtz+KgkHHoU8j4TYwSlnbmSx6gDqzrQa8q+cRXlK1NNmF211NX0J8B9nRkng+xHg5ts=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.8
Release Details
UpdatedNov. 28, 2025, 6:24 a.m.
Changelog

Changed

  • Dependencies: Updated development and runtime dependencies
  • three: ^0.181.1 → ^0.181.2 (patch update)
  • stylelint: ^16.25.0 → ^16.26.0 (dev)
  • vite: ^7.2.2 → ^7.2.4 (dev)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureMKCHrKGV1G4CZgG/gyhGvg34zK0migxfZ/FS9ZZEylzffGxQxoQbW+wubOR3BAjgWRx5smOBIdKVeLLuPOV00JnPgrII3lRaltLVO72nNrYtVh5DruKC5ZoMM4BuJsdEOFP8euy/GDCmlhQYNTusS/T+meggfylcrAjZAWR+SZZfb4x7QlBJTdmCuWpHNBJO081IpeLfn5HXohFAWm6sHHm6mun4ar6znAlwsZ/pe6Lo8ZjzLBuDN9mLEujrw6AgjTq2DTSUrHrJ9/WQF3zBiYjRLMNurJLnrwCXuUmPkKGWrPM3ybFADqfgb3QmqzPsPiGUL87k/1yVewEqE2olFpVRZ9hxa11ANingG+zMZwY1bCbzIcrRCq4Uoae7zgwZV/CF2wJQk+cRMbQl7Y7AoAy6PPECLMFtU93VgHqcPtFQzAxSPEXRNW+GpkVFHWvBZ7iuL6Ys8gMjl9i9imuNYcIAkuLlKLmu8t5pQpOLKvNpiQkeIf5aWXHm5Fvq7+zmeKIsuMVNvPoqQOSlC1AkwnLi1EAf/2VrqbAmDoC/o3Y6h1mg6vskUNFRPhz2h37TEb65h1bm9kFjNx/6TNNF0xM96GSAt7v+I1naBODhvGqDqyJ653663yuE+CxdKd1kZ4ous3urqXRwAmKHVdOvXYZTb+N/Feu7PHqrdcwlHHQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.7
Release Details
UpdatedNov. 27, 2025, 5:42 a.m.
Changelog

Added

  • AnycubicSlicer Support: Added integration for AnycubicSlicer with custom icon and URL scheme. (#52)
  • Folder Exclusion: Added support for .no3d marker file to exclude specific folders from 3D file scanning.
  • Hidden Folder Exclusion: Automatically exclude hidden folders (starting with .) from the file index.
  • Temp File Cleanup: Implemented background job to automatically clean up .3dviewer_temp files older than 24 hours.

Fixed

  • Layout Issue: Fixed white empty space when hiding the navigation sidebar by ensuring correct flexbox behavior and explicit slot usage.
  • Viewer Resizing: Fixed 3D canvas visual resizing issue by syncing internal resolution with CSS dimensions (width: 100%).
  • Slicer Icons: Fixed missing slicer icons by using the correct imagePath helper for asset URLs.
  • "By Folder" Navigation: improved folder indexing logic to correctly build hierarchy and handle edge cases.
  • Server Error: Resolved persistent preg_match error in PreviewManager by disabling unused app preview provider registration.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureLfmZ7uqqVk6tDgQQuwcGuzQml5OZWmFvpfNYW9Nd+3gVtIRUCBKsgtB8D6CMf1ymq2JxllnMvhATHE3YVZGmCsL5CRrj6al9+zdVnP8An2BUBP/DsqDTTwLM64mwKFIqYYkjtwVfttaa/aPJn2cdH7umzjOEHsYzbRx7eiP1lq2ERy4KYs7aA26hfleg9kKbr1jKTf0/vPCHvmbKg+o3RS+QfP/lRuoPjk1UYog52IAHd9bpAtAgmB2yLSfghjPSvMhZkyWt38CKMiKyO2R+VdB6wc/lWWVWq1JfJDw9oZlhaMpBZhXVDqR7uoMYdtR2pTNhB6d+kaTQtclvLSO5RREUDMwdocOl7iVMwrXCmKmUIyDqMa/VF3FFtK31fKlSYuvIhGDi1He0NNqlv2jiMsb2EPhrYLBHTyrmY0Px3i+ZmbYos1sFXLi7CliafZY/nZwxqPSc8xsZI42MFO9ZWA7yBKYE6UHphNnbxTbx5H33NrwHdRhOh0g+wpLJebbjyi1momlshADpfec+gAImcCnyaXhIX0Vpt73R1DmadH0xbi37iCEg73s9h6cul1RGeRhOzr+c8nhuFOUq4wodj9VLbTwwqm+bjd1jvshyo0++A0Nhjfj79phnnIJl0xsKU9QaN1eFlB6vPQRMyFswy6bWW4IW/yI2KL7693JFhRE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.6
Release Details
UpdatedNov. 20, 2025, 12:48 p.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
  • Folder Path Length: Removed the 512-character limit by hashing folder paths for indexing
  • Restored folder_path to TEXT and added a folder_path_hash column with a new migration
  • Existing rows are backfilled automatically so deep folder structures continue to work
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signature4F3B+MMtZoJiTGIBdBSaJDW9PVnv2o38ob0m+f5cIJmMM6jpgqYETLsQaW1zRCdQ8ozE8v5LfkehmhMlXy8folvlapuRcDGh9N7PPIRzTM/8b9ymOMQ1vkBPERw8k5grkUwFNamMPw+K4rFGHLMflN+vR/S6m0jmAKls/2L4kg2UdhaTdtaw/ozZAM4a09dJ038kyBS6jbh6g/M233Ue/R6aXSCMVgrA5zw38djqE9O8zmUg8xOJlOzdMRCRdhKWZOHoocLV9TBTasdU99YG7o+VIgAXeTY4X0rKxtOdfqdX+c+YNEt4syMmig/1p3e3yO1q0CmQPg6rgxtrdVOW1KK6Bbsvd8DkNwyQ0SgREq8bD+SIlF3QfqTDAFKCDgjTCn9N7HBnZIVa+NtseVrVfVeEdWdVNGMnfu9QhSeMqrE5dJMzKJLiPy4ftrmzM+aff+3aoQU69wWVffIBw1RsC3+352E90jiYw8CnH0ul8I6ffA+NVD4v8+Jo2MruxzwzTsq7/RfQMvIhsCTrhyauECtmwAQPEx9CX4h+7nryjxefgDwPQlFyszt6F53LSTWEeFO49SAlV9dH5P6tsjsMozdUts7HtG+UU+T7gHD65rY/nPL8ICF6C5YHGuuxwDFQGAkKtBNN/9VWBZr8h1X9jq1o57hwIqGBnxNdAs9YqdA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.5
Release Details
UpdatedNov. 20, 2025, 10:08 a.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturefF9sWdsS9s2UfdNuMWzSK76VLnucCn+KchXB9eFwbDsdXACnQYvhUVvS+xoMBYIfaXQEYUjfIl9oc0/sghPaIfdPvHwhCSze3XUPHkeF8yHb7eXQfHPr8N6KQZdmFM50brxxpHt5yxI40xZU+mMyW3eTP982e+aLenLEr2taQYNoaTHf35NbVknGLAE1xautWR1JQzYyVkCcc4T9/hxMp7LaGBrUPwdDALyuAp6WTHtZk+XeOxxxwRiNb7q7SpXWGuwdbX7MDvEzfBUmhw8dbORK3kqxgfXFAe7uGVdW+5sKtkdn+fxuN4gHKmBwW8N4X7YW1XaAL0KkYFoHsrdAcHunsSn/KfuqhTLHRpxOblgFPEcCwwqWcPVdGASFkD96rYylV9yzoJV2zS/pDqMVG38TQjHOs6ukBbJ5KHzpGJpgOZXDzLn24or5wVubjXkCyOsfS0by89VmrrxrERJZPNl6XTgeCZaBTPsypeWAlezfqVEjVVmdkoKuL+I3m/gMURucZV3Do+wHmxoEAT/2bTRVtIZzBsjrwuljZk4cok0oQ8reFBlngACWmXWskJOiEmshDUpnd2IykjhaU6LPEBDprd0fSM3+RE6Sx1+iJuPdXQ+CUATytcbKc8kiEjcPapzQ7xt3uR2fukG3eLrkFKoKHM7jJtWWMcWmN0yppuQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.4
Release Details
UpdatedNov. 20, 2025, 2:09 a.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureYu4MvwQG1iiUU+ZnS3qdmTsCZ0NYAx89VzPzGTNqkdgQ/LolnwTZNDpkHEOoGQOM7Q95wtrJ1iHj2KQNxHsg/nw26/L0nqQtE8+HN92EVkjKhj4Chve7AB+A8dFlj0nXdSpgtH/PbwN+90lQTCGnmd6rRc46+OqEfEoFzjBhqtrpzXuURKsZG4GV644vSvAyzZFBDncgI7tlGhUhCDj/5UShHQy9ClymB6Yb5K7smP0BSDEWYOxsUOj2/cy7hAIlCyofINC8p6UzA6Po6NiyQefX2zds56a8TZhvvuaeiO3setCQzKXdYp3WqlnVVSpRA7UZfGeqdvkDqtQuTIs4Zo9w6GWX9M+N2Z15rQ59t/cNX0OYhCs+Fw2UdJMAPYW+me911YHsaMmANkaw7sUZ0ncqxbc0NZ8NULhJakF4DHizsCSLZbVrOhpfcaDEpsy6q88bg6o4modcj+gTIytUCI/RLjTlKWYAZcRFJfmPngQiuUmBeZntR2y1a0ROFsmcRAaSys5UFHF1KuqaNocqcAo+CbN5vRqMQXnmGSg54kEHvQ6xjDki/rs/0/5sxIX5TrGhGCyubdpN5Avv1y+eZfMdxVrZu0wxOubN3zgF47b/O5wql0Mv2tpFH88gy5XMGRTyaB1fIeFQXV874btSvkBwJPJhKdTZV0pyA9C+wUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.3
Release Details
UpdatedNov. 19, 2025, 5:36 p.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureYmgaFcAnfaw/gFhMAFJupT22RE/RWydQkyTNQrbQNyHQGq406C58CN9hKEIJ5kaSzibif3goqa31T/si8GlYBnejJmQzYsQpr5Wua0dSrkUtCv0fRFv5GNWJvazyREN7XKWp+Ir/Q51J7trkGs5RCuZRnH1DhHTPyieLyZLTFsSWTSPuDRHEnpqr91B0y+epvQGujYSYG931+5tc6QaX1rfZ9kmT1qNph4SdaLeMa4hbiSFc7fuuSSNqvE8q1QPrBJEz5TMixrr1U8iMA38HBWVsufDfd+lg18bVWg3zQG1yFNZn/RYCuPck6DPiDo2uJ/9AJzOTQpJEFjDfc2zG77oE7EufwDtoaJzbhXhiseW7u0Ty6nVywrYTnEbfuIYhHeo6lbxY8KtoPLZSDSiSbH73oigsGW7o7xA+RDjtVZoWRguPZF9VfUjJ1v5WQpHD0jdZflYJ3byMygWF1z7GaT8wE9gbzwvWUyMGE6XCpzwpNxx3yOlq0mp5aUNFAjJYAO8BSgaFBxSBVnXTv22JEnhaUPAWL3HaMh3EJLVJla/TOG7cd7N9eS6JT3maO8Z7QUu32B/ah48w/uxk9qzmBX+t1onXwUA/6CuY8Gfhcg20AK5JuUiqhIZD1eW7HiC0pNJJqZbzLbXBl049JBFUqZbKLdf+ttISPjCmlRTnxdg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.2
Release Details
UpdatedNov. 19, 2025, 5:32 p.m.
Changelog

Added

  • Database-Backed File Indexing: New tv_file_index database table for fast folder, type, date, and favorites navigation
  • Automatic indexing via filesystem event listeners (NodeCreated, NodeWritten, NodeDeleted)
  • Manual reindexing via php occ threedviewer:index-files [userId] command or /apps/threedviewer/api/files/index endpoint
  • Migration automatically creates the index table on upgrade
  • Smart File Browser: Complete file navigation system with multiple view modes
  • Viewer mode: Opens 3D viewer by default on app load
  • Folders mode: Hierarchical folder navigation with recursive folder structure
  • Type mode: Browse files grouped by extension (GLB, GLTF, OBJ, etc.)
  • Date mode: Browse files organized by year and month
  • Favorites mode: View all favorited 3D files using Nextcloud system tags
  • Breadcrumb navigation for easy navigation back through folder/type/date hierarchies
  • Consistent card-based UI for folders, types, dates, and files
  • Per-User Configuration: Remembers user preferences via ConfigController
  • Saves preferred sort mode (viewer/folders/type/date/favorites)
  • Remembers last opened file ID for session persistence
  • Mobile experience: automatically hides the circular 3D controller when the viewer detects a small/mobile viewport, preventing overlap with the canvas controls.

Changed

  • Viewer opens by default on app load; the file browser now appears only when a user explicitly selects a navigation mode.
  • GET /apps/threedviewer/api/files/list now serves hierarchical payloads from the database index (folders, types, dates, favorites) instead of scanning filesystem
  • Supports includeDependencies=1 parameter to return all files including textures and nested subfolders for multi-file model loading
  • Dramatically reduces filesystem scans and improves performance
  • Navigation data is loaded lazily per sort mode and cached so switching between viewer and browser modes no longer blocks on loading every file upfront.
  • File browser UI refinements:
  • File cards now share the same compact layout as folder cards (consistent padding, thumbnail sizing, fonts, and grid spacing).
  • Type view heading and breadcrumbs no longer show a leading dot (e.g. GLB instead of .GLB).
  • Breadcrumb component now handles clicks directly via NcBreadcrumb to improve reliability.
  • Remembered folder/type state is cleared when returning to the root via breadcrumbs to ensure a fresh reload.

Fixed

  • Newly uploaded, edited, or deleted 3D files (and favorites) appear instantly in every navigation mode because the indexing listener reacts to filesystem events instead of relying on manual rescans.
  • Root breadcrumb ("Home") navigation restores the folder list correctly, even after drilling into nested folders.
  • Multi-file dependency loading:
  • Backend listFiles now supports includeDependencies=1 to return every file (including textures) and nested subfolders.
  • The dependency crawler recursively searches texture subdirectories so 3DS/FBX models with textured assets load successfully.
  • Texture search now uses the updated backend response structure to avoid missing files and 404 fetches.

Technical

  • Created lib/Db/FileIndex.php and lib/Db/FileIndexMapper.php for database operations
  • Created lib/Service/FileIndexService.php for indexing logic
  • Created lib/Listener/FileIndexListener.php for automatic index updates
  • Created lib/Command/IndexFiles.php for manual reindexing command
  • Created lib/Controller/ConfigController.php for user preference storage
  • Created lib/Migration/Version010902Date20251116061241.php for database schema migration
  • Created src/components/FileNavigation.vue and src/components/FileBrowser.vue for new navigation UI
  • Updated lib/Controller/FileController.php with new listFiles() and indexFiles() endpoints
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signature5KdirqBqYm1NTouEBce9EtmTO6/UJwHsg40DC/oCvhIuYOF8eLVWy5O5Vwx25hFvq7bHrr9SQQ9cdJS1G+fY8aQ7bSeqCR1dAdUlsoBhrYWQnKAEnoG8vIIxfk0gA+HgcRGLJPtph9TYLdeAqdhD7/VVUg8l9ZdIVJHsTQn8JijVkTeMpk5612wUyoMn7HaA8IJJrOnU6dmkfv95FcZbVLzR6QRDc2fqlM3aYbZl9KOVYzEU6e736rsQAOVn0IqrHmQyJNVIdiFnycbtRiJnJgRJj05KblfVIOC0qZwzl7sqIHdAswvYwDmdCoLK/rblTc8R7INoUFpmGFBzPITfVwBNrJh9jsxxuWnl0X/vAAtVACVGHR1utLtd4dMFSjwOVxD3f53eazH9/Hho18BBh3GOLNJEWAGNal3u8Ng+inilqQu4Nmhds9AYUoq6T38oU9NABr7mDce1TsO0AYQqfez3HBodgbbBOoXKSGLMoDCk9T71NR2Oc2XC8Urz08F9Q/0Dcoy06kdvm9neAOH+yHqjcPXfI98JCdqao6Li05VQaLOUxIyYbVpngGu3LWthpaH7rlxhD5DlOwknjimFfGifjZ0/yScHSbfRqtgxy8q8jfHJ71wMKOAzQ6xCgqfuWWROUqWNmo4ypsE23Ioj1n/yEA60bComBBgSdSjCwpA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.1
Release Details
UpdatedNov. 15, 2025, 9:35 a.m.
Changelog

Added

  • Preview Provider Implementation: Implemented Nextcloud IPreviewProvider interface for 3D model previews
  • Admins can enable/disable via enabledPreviewProviders config in config/config.php
  • Integrates with Nextcloud's native preview system
  • When enabled, provider is registered and ready for future preview rendering implementation
  • When disabled, Nextcloud automatically uses custom filetype SVG icons

Changed

  • Updated dependencies:
  • three: ^0.181.0 → ^0.181.1 (patch update)
  • @nextcloud/router: ^3.0.1 → ^3.1.0 (minor update)
  • vite: ^7.1.12 → ^7.2.2 (patch update)
  • @nextcloud/browserslist-config: ^3.1.1 → ^3.1.2 (patch update)
  • Improved duplicate registration prevention:
  • Added guards to prevent duplicate file action registration
  • Added guards to prevent duplicate viewer handler registration
  • Enhanced error handling with try-catch blocks

Removed

  • ThumbnailController: Removed custom thumbnail controller endpoint
  • Replaced by proper Nextcloud IPreviewProvider implementation
  • No longer needed as Nextcloud handles previews natively
  • Thumbnail Placeholder: Removed dependency on thumbnail-placeholder.png
  • Nextcloud automatically uses custom filetype icons when previews are disabled
  • Custom icons already registered via mimetypemapping.json
  • CSS Thumbnail Overrides: Removed CSS rules that forced app.svg background on thumbnails
  • Allows Nextcloud's preview system to work properly
  • Custom filetype icons display correctly when previews are unavailable

Fixed

  • Duplicate Registration Warnings: Fixed console warnings about duplicate settings/registrations
  • Added registration guards using window/globalThis flags
  • Improved handler registration checks
  • Better error handling for duplicate registrations

Technical

  • Created lib/Preview/ModelPreviewProvider.php implementing IPreviewProvider
  • Registered preview provider in Application.php bootstrap
  • Removed THUMBNAIL endpoint from constants and API documentation
  • Updated openapi.json with preview provider documentation
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureyK5Dmfw2bZsjqJMtY0eaIkST1jQZ4XKcPtlHp4f7GNHWV1A5PrKjkxKHO32JML49YXEI7D8PouQvnHXDq55pRDm/PBmXV3cB5wvx3ZkMVMGRQBqHNR2iBfSsl6w9I0SaGSgNSt/aa1kmZRCq20GPv8hLMHSJdcR2VpU5mA/BLp6vP51LBp9wDwzCEsU82zX6VVBXkd5YIHY+6HMRsNQNXFfRsWERTq5yjmTYfyK4Zq1rvZShPX3KG8WDWl6g3C1lJhyr/7FWLoM7Lsq6k1pirdAYUtQO7ooB0UDiTpvEgmCj/OLhL/8dvaD29dyzUxnokjj8IlpiDEcPfeLN34nqXHfMbmPZh9+aqBqsZr0GaqSD6dXGoplkBc+F/SHfWdevkZDHk8p/W0flcjIThr+K5/8YhwdDZd3G2JIRmhDdJXFfoTn2f+zYkHTV3enXsRAG95FVU3WE6zZwi8w4MOUiXIpxqb/DAISRSId3k24iPFlbguOQwPvcpMGNIruPRkoE7ihCgiU+dvcQ6ieYtwvtAHgNy+N284BdcsK7/0g5tCkzDad8Fdt4pMImPkO+cWBy3c19Uce5+pBx36Nts6q5so6O96s0Dcnf4NQPsnRFHNKduWxafeoBHCwn2NoH2aIRw0JQcwyCLvL2j8vLcN6PhAQwJ2I6P/4yHX5aEWEwaP8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.0
Release Details
UpdatedNov. 10, 2025, 6:57 a.m.
Changelog

Added

  • 🖨️ Slicer Integration: Send 3D models directly to slicer applications for 3D printing
  • Support for PrusaSlicer, UltiMaker Cura, BambuStudio, OrcaSlicer, Simplify3D, and Eufy Studio
  • One-click export with URL scheme integration
  • Automatic STL conversion and temporary share link creation
  • Professional slicer logos with brand-matched colors
  • Last used slicer appears first for quick access
  • Smart detection of uninstalled slicers with user-friendly error messages
  • Auto-download fallback when slicer app is not registered
  • Temporary file cleanup after 2 minutes
  • Share links expire after 24 hours for security
  • SlicerController API: Backend controller for handling slicer exports
  • POST /api/slicer/temp - Upload STL and create temporary share link
  • GET /api/slicer/temp/{fileId} - Download temporary file
  • DELETE /api/slicer/temp/{fileId} - Delete temporary file and share
  • Automatic cleanup of old temporary files
  • Proper filename sanitization for paths and special characters
  • CORS headers for slicer application compatibility

Changed

  • Updated app version to 1.9.0
  • Enhanced toolbar with "Send to Slicer" button
  • Added slicer integration to slide-out tools panel
  • Improved error handling with toast notifications
  • Updated translations for all supported languages

Technical

  • Created appinfo/routes.php for route registration
  • Added @NoCSRFRequired annotations for API endpoints
  • Implemented Nextcloud native share system for temporary URLs
  • Fixed filename handling for files with paths and special characters
  • Added proper authentication and cleanup mechanisms
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signaturebdu+2mjB9NyEPJbbogKcFBovDi99alBx7ixiNLiVWRmMw63yphLItjrEkmMxHL5KeEmkQj05gqf17mPXlngrWI3pkhn1gLHtbCiPwOqloKdQ+bf0US34nClshbCzP0drRsNWSxhEWbd0a0vc1Zy31vk9I2PVHugbpbo4BCy20Ks6t0aCkv6o+g8x+v+B348txV1p1F5hyM+2BBUqxEB8fNiRJ/p6bd1eMf6lWfeqBrWG6n3zB11BsKKYAa941deyJ8vLlEpI8D7Kyz7TVHuHzx9hlxbZyOCYEnD52EmpYDl/VaKnj+9EzxaFDqkQPOIHPbMtfe9tc0nZOrqEASXrUC/iPMpp1JNAyRa0Egx+DkdRE/p6wFMBxipGqfgb7MJ6gV4I7t7ML1scquVtcc8aZt3oNhdMd6gPZ7/uxOYQ8Bm6YX6fiuwxtqe5yb2uwiw9oKjQhs3miEXEAiaiab3S4HLC6Ke9QYowEzASoAD1tHf+kf4I6+IszL5V6XOVzXRhKU8t/Vdl/JSZh3LEOma2KCPBoxIwove9PpHARcEIz6Tk4eu4UvMdTjhyIBKCvEnq8Bs5fzaq+jqSuE+8h3Y+qP0Q2fSqcNHpLtBEAfrkSu883dCM7dg0miDxSGumfqn+oJ80bVDGm8mQ3WdP7AvJiygdj5i2pFqyeiPE+MGDDUE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.8.0
Release Details
UpdatedNov. 6, 2025, 2:21 a.m.
Changelog

Added

  • Screenshot Feature: Capture high-quality screenshots of 3D models directly from the viewer
  • PNG and JPEG format support with configurable quality
  • Automatic filename generation with timestamp
  • Accessible from toolbar and tools panel
  • Download screenshots directly to local device
  • Fixed WebGL renderer configuration to enable screenshot capture (preserveDrawingBuffer: true)
  • Billboard Text Labels: Annotation and measurement text now always faces the camera
  • Text remains readable from any viewing angle
  • No more reversed/mirrored text when viewing from behind
  • Smooth rotation as camera moves around the model
  • Improved user experience for annotations and measurements

Changed

  • Updated app version to 1.8.0
  • Enhanced info.xml with new feature descriptions
  • Updated English translations for screenshot and billboard features
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signaturebvx0cRDWADLGiuJ0jIg9f+81Add0o7SM3Dkq8foP/AnLfM2fSL1/ds6JsckXbP8xdOMoPyAxnN9XFi6qckR+cTiBSkkbpbQeg32ZDShLwwVRH8dubBAHkIk7qSBVjw4gV2BdKuMjWZZ5cRPlcFNUtdVP776NXH6Vv5FxK4UoudEN3VA8qDZC9+8fC46n7NhnobbviHIzeNqPA0V3Wo50UuuptyDdip0o/bbBiaw1vszWuV4QoHFMHAjFan2v3kKb5ptIHYukVOLMj8rY1dKeTACQYjEwi+YXOV+4eJMiMrHXx06eMYxiOsTdNHsCWTy9PW+4QTHM9dI/GNygSKC/V4Z9lxlPt7jncHOAT5P+tEFrWQYImvBtWsXPXoP6UPAIpP82NPWhp0lBZdjR3Fvx4yi0PM7V4/lRTztUkTrobnlVNpIxSe6SH0jWmVlyAFAW0XSiWrWbM+Q0gNEERVNudpCw7y41xv2Q45ZgPIMhGzjn7CbY8gVacSrXcsnglD8pcFAnI7hh+KfepgSSeJg1ZV7IF5UM9Qr9Cu7VDtq8Lc5bw3tqXNDf4U7T5UgnAjbA/GFXY2fz6yT5TVXWoNxER4d3Bocb73r5wWYlag6z2CKOxTOWenRUnrG0iFPi95MxaykgJMVTAilRLoHOOGZie9DHpOUwcvXWAokeDaXGBSQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.13
Release Details
UpdatedNov. 5, 2025, 4:44 p.m.
Changelog

Fixed

  • CSP Conflicts: Removed global CSP listener that was breaking other Nextcloud apps (Memories, etc.)
  • File Icons: Fixed custom file type icons not displaying by copying them to correct location
  • App Compatibility: CSP modifications now only apply to 3D viewer routes, allowing other apps to function normally

Changed

  • CSP headers now scoped to specific 3D viewer routes instead of globally
  • Added automatic icon copying during build process (scripts/copy-icons.mjs)
  • Removed lib/Listener/CspListener.php (no longer needed)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureqfnNbykFms5wS6aOa/TKBYua37o3OqBNqe9LY0dU86/MrGrqbv+v9inkFm63UQyR19ux9ACVlqG6J5rCDpLLTYAe1IkFGZMKfJzNnna8uiA734PltS8gNSv8ol0zMsRs6tvanPlDxVedCmzp31VsErPKOShjvTRbhf9ZmgJjZccX3UODdfIzZxJLqHd3vBrYqoksFXDZnzUqEkb5OK7RwfxAs71IGoVjXHOf9HuOVuefc1mhElbIygGnPYJ3ewlU72SD6gB9/kYgmZEb9xklvcTz6IjTbfKdZ7fLb640/71wCIa5mYleBkaxsoAzfGo2QjC6GHNkAQX7gAXeZp1GYBixwIF4JvawV2s1pKnIDZE3hkLqhx+e4OOYvawhlVoUdILsXSC2oiG4Q5qF/tSz6fh/2gFY+/2fxJMSwwbPXTkUPA5eXKCTpRIbWdIK61XEMKenSlWFF0giXWcOMkxXH4/T1NFlV7/g57MPogu+DD41Y2LNkdZQVaVYWEyvTw3t0pVvgohGNPRSNKV8qR8yzSM5yVe0Ck6SWOk+74SWwBoItjp66LwNQ60JK2Od2+NOSE3+2eG1SkIKL4+q0Uo4NGQgyxblPWIXJZTl14XcaxyXCJr/K913khhw+b+DumTz6TTGg6jMR8oXRFawccmEHL/DN55Y3HfRAwVj/cNIx7I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.12
Release Details
UpdatedNov. 4, 2025, 4:14 p.m.
Changelog

Fixed

  • Viewer Integration: Fixed files() method not storing files list, causing "No files provided, skipping update" error
  • File Loading: Fixed TypeError: Cannot read properties of undefined (reading 'filename') when opening 3D files
  • Static Assets: Fixed 500 error when loading app-color.svg due to route conflicts
  • Route Structure: Changed viewer route from /{fileId} to /f/{fileId} to prevent conflicts with static assets
  • Axes Positioning: Axes helper now positioned at bottom center of models, aligned with grid
  • Axes Scaling: Made axes size dynamic (25% of model's largest dimension, minimum 5 units)
  • Logo Loading: Fixed app logo path in demo scene to use generateUrl() for correct URL resolution

Changed

  • Enhanced files() method in ViewerComponent with fallback logic to create synthetic file from props
  • Simplified PageController by removing unnecessary is_numeric() checks
  • Updated URL structure for better RESTful design: /apps/threedviewer/f/{fileId}
  • Axes now recreate on model load to ensure proper sizing and positioning
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturetHcAULDv6Z6JlPEmMcFbBFAPFTScfSULZoxHuFuCtCO965w5/TPzwTm9AAbrvWQlTzOza8VK9le5cP96O8XKoLPU/rUTY0YPL+11rga9rU5c9nNcCiRTKwaha9wnos5/fDxZOhefb9aFojmpf7HsrSmHL+JMrLwaVvp846k4ShSPNbV7cVTqsrwz1C4Vy4JRzGMuSfcAMjxLBC02obtPqVYX4T5s7/QCithiTGI1VmmtMxZM0sG3fkIRf9ouPQ44hpHX7beIm4vBGthPwjhlNpR+aXq9rQd4annpZKtZGfGRX/RDXlFXUWBE/07A+/CBzP9DX9pegUvzvrelj67ADuiRDfxsL3vKN1VGU1rqHi1ZrwE24BzfeGnWgUb+wEBOcM8x8BEc0thH2zbfKAwqjY1h/iH8IjoIkbPPm3mKwQ2b5w2v2aaRRr3qbK3cOLhyzWJBpQFZaahomr9x+/hN5aU9fhr9hMjgPboRadI7rO+V6QtQDobhKlz+6Rdb1mo+Bzk9btyCJ7flqqos07yo/O01o4G/0L0hdw20vYh3WlbeGRWC6W/OBzQmRwT4MWFoHV2mQOYO4Nie4SkFCzs2lT3NWW7I/uCrCPMZDJrLhSk1KiKzctZXjTUalB4DuPHSpq99WjCcf2oPLo6rQ7DJd/sIRSh3tSj8WIlxcWCrSWk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.11
Release Details
UpdatedNov. 4, 2025, 10:58 a.m.
Changelog

Fixed

  • Viewer Integration: Fixed files() method not storing files list, causing "No files provided, skipping update" error
  • File Loading: Fixed TypeError: Cannot read properties of undefined (reading 'filename') when opening 3D files
  • Static Assets: Fixed 500 error when loading app-color.svg due to route conflicts
  • Route Structure: Changed viewer route from /{fileId} to /f/{fileId} to prevent conflicts with static assets

Changed

  • Enhanced files() method in ViewerComponent with fallback logic to create synthetic file from props
  • Simplified PageController by removing unnecessary is_numeric() checks
  • Updated URL structure for better RESTful design: /apps/threedviewer/f/{fileId}
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturehK5rTudkrE4neZOI/n/jv+qjY/VfKVkRkouiBK5jBARxwK9e0W8U07ajlvP2+U8q8qwNzjGY77RproUnQIkOlALx3c6V9ufsMaHcpuAR2GAvK84WgqqEM37VSPQrGhLLuZzz4nU5nYmNOsTg+maV0O5XEND29zOdafsJHxpY8mQofXCA0vyLYNLYQtLEAPRBtl3uDQgSSjPGB6kN87VUcqebvVrVim8aa8l7BpDoMiW5j60T7toenQiisu6S4aKMRHCxx7I1cHK/mkGjLzl+/AHpfwWpKCr13StVLzqqlVPc5+SL/yI14XW2JtJARHShE0zBqkARG0yqsFXVTGvLzvAahLuCfIdlied8HFK/NQVmqgLlRAc30xWGq2vcQvpnr9L7GwCkImnM5YeoTqVOJHawhc3wU8FQ56g/imCYgMqwSOegC1BVegdX/XvCMCxhQXEj4OxUxETQ/T1+BWqBBLLbZQQiyyRXw6o/bzpBWJYtDH/XIzFKxJdC7WKfIM6lPmPb7CCc6sJGfEi/Lyv3rTfCjyQj7ioMlB+5sLV5/d+tth6eeY9O6jZsz92/V5byhrtIdYvu4j7IZR2m8+/IpkjmTMnuv18wyU6+unVo8V2hKNLhoWYHJqEQ9Ylx/Rj6tKb4TwsrciMPV+2T38lJK5cS0GZittMNUVAKSUPBSnQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.10
Release Details
UpdatedNov. 4, 2025, 9:48 a.m.
Changelog

Fixed

  • Dark Theme Support: Fixed slide-out toolbar panel not responding to theme changes
  • Theme Switching: Implemented reactive theme binding using Vue computed properties
  • CSS Integration: Converted base styles to use Nextcloud CSS variables for better theme integration
  • UI Consistency: Toolbar panel now properly switches between Light, Dark, and Auto themes

Changed

  • Improved maintainability by using Nextcloud's standard color system throughout the toolbar
  • Enhanced theme responsiveness with component-level class binding
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureT38bK6V5aDGCGlNZJEV3QCmwYaO21RK3QtifSTQ3O311NOPA+O7ryIjncKIdr/rdN/9ZjeFLqwcxRk2traF5MkhvjRCr3NT5oV5cuMQgmw2Js7MAOLrSXOUkn6b7LpQKesEmzQPqygl2fuqN5qrxILxeWU5xWq3nyoV+G2TzByeLOT9CX8+EH1rzMnJNb/35aFS0kj/fU4V0FHFM3h8KxNDWYVjlJ/tPtq5IFBvICRm6HLCkQ2fEPPXkxP2Z1lpBam6ZGuSbcmo2lb5yQ7Zq3n6rd7FIzkU6r0/xvYF5gY08bwIdtULEpJOEQwp/n9KBR2itV4twQG2QAZFEIMF+EIg4lRzu0vdX8GVDFbirW8YqCX8PXyd+UAm1FfZ4vf8VHQXF7weZgAnvm3crR01GNStlBHl37Zke3z8CHmiYj3ffi4WMwGBT4Gb8f6fxlCOHH/mOlCyA3rtVlI5cHqJGHbdiwgHYX6e+0p5JRWOlecK/HTcVd0Aa5KX57BTcRQXEhGaQqHIbRhWTWwDMesbAyJMtCT72O2eRUqJCnSI+SRSxl/Hh4lHUEnOPx9D2P/03xDEDpO3xoR7tQGN927un6811AS+v+kABFDJQcayHiFTpR28U+WzF1vqS2fktc90NaWwiJuO1/hnQ/H8J6icAF4oxmvArZI2uO1X3CPZMwN8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.9
Release Details
UpdatedNov. 4, 2025, 8:39 a.m.
Changelog

Added

  • 3D Camera Controller: New circular controller interface for intuitive 3D model navigation
  • Camera Control Methods: Advanced camera manipulation including rotation, zoom, and directional nudging
  • View Snapping: Animated camera transitions to predefined views (Front, Back, Left, Right, Top, Bottom)
  • Controller Persistence: Save and restore controller position and visibility preferences
  • Smooth Animations: Eased camera transitions with customizable duration and easing functions
  • Face Labels: Orientation markers (TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT) on model faces
  • Export Functionality: Export models to GLB, STL, and OBJ formats
  • Camera Projection Toggle: Switch between perspective and orthographic views
  • Progressive Texture Loading: Background texture loading for improved performance
  • Dependency Caching: IndexedDB caching system for faster multi-file model loading
  • Model Statistics Panel: Detailed information about loaded models
  • Help Panel: Comprehensive in-app documentation and controls guide
  • Theme Customization: Enhanced theme switching with RTL support
  • Performance Overlay: Visual performance stats display with real-time monitoring
  • KTX2 Texture Support: GPU texture compression for better performance
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureT4jr3f8pu++HPy93L1HdiayTsqKV8PwgIw7jkye4TkqYM7wBuBsK6qv/TXwuZElOm9hzBEVH/MnuFoRl2QXPxurhZLvu918h0rDnTIjfRNMC2gIVFI8JLneLq8ya+m9lKGNLXEodRAhQ3pGn97cuSFzff+iGhQOFkojIvbWM4HbSQFq6pfF3/ZYjUCt5BhRIHdPkk+mzwjpVaniq98gh4XS3AMYqs4p2n7vysSGjAO8hZrDdGUJGxBlz1amgeUpdiGOpTwI4FyT2vbxcmHcMVwZTQyXoYZ/Ux70JZp98nz1H1kKqIoDxzZSRmetrm23Pzn+k440rHQUSjuIa/p6I6w8nGG25M0kjB46lacCtbUlR6Rrrj6SNwFITde5Rr87HP2R/ILqI5MCC73SebBxcdY/IXw7xHjUiBJTlrOmPi1ppktirZnOsmSR2Sa/yE81zrYWJ2HidTbxEGpJDZBIiwOaBCYh6nwQ51PG1z4mxgJE4G+7lMZ/bpu5UaJihys2WcoBhPxrGNeoLoEN+D1JiaOU1C974Wwncz1/BobA08FSx+rzXCnRNSQWbBapz3J6MYT5TwChku40FeqGR2KJm+v2pYgm8K/Eepieubi61tD9St1exw3AjBiJ2/dKOezNb8ZHFcoWn2bxCZc4rzuBUO0tJSrjmbW5dcysusajrvMs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32

Nextcloud 31

3D Viewer 2.1.0
Release Details
UpdatedDec. 6, 2025, 10:21 a.m.
Changelog

Added

  • File Browser Default View Setting: Added user preference for default file browser view mode (Grid or List)
  • New setting in Personal Settings → File Browser → Default View
  • FileBrowser component now loads and respects the default view from user settings
  • Setting takes precedence over localStorage, ensuring consistent default behavior
  • Manual view changes are still saved to localStorage for session persistence
  • Format Sync Test Suite: Created comprehensive unit tests (tests/unit/Service/FormatSyncTest.php) to ensure format definitions stay synchronized across:
  • Backend PHP constants (lib/Constants/SupportedFormats.php)
  • Frontend configuration (src/config/viewer-config.js)
  • Nextcloud MIME registration (appinfo/mimetypemapping.json)
  • File Browser List View: Added ability to toggle between grid and list views in file browser

Changed

  • Format Definitions Centralized: Consolidated all 3D model format definitions into lib/Constants/SupportedFormats.php as single source of truth
  • EXT_MIME_MAP for extension to MIME type mappings
  • CONTENT_TYPE_MAP for file streaming content types
  • All repair steps and services now reference centralized constants
  • Eliminates format definition divergence between components
  • File Browser Grid Padding: Updated file grid padding to consistent 20px on all sides for better visual spacing

Documentation

  • Corrected repository URLs and upstream fork instructions in CONTRIBUTING.md (replaced placeholders with maz1987in/3Dviewer-Nextcloud).
  • Updated TECHNICAL.md with new controllers (SettingsController, SlicerController), components (PersonalSettings.vue, SlicerModal.vue), and detailed Personal Settings + File Browser implementation sections.
  • Added comprehensive "Adding a New Format" guide in TECHNICAL.md with step-by-step instructions and code examples
  • Expanded IMPLEMENTATION.md: added Slicer Integration & Personal Settings System sections; reorganized and deduplicated legacy "Code Audit and Cleanup" content; refreshed Table of Contents.
  • Updated README.md (docs version) advanced features list to include Slicer Integration and Personal Settings.
  • Added troubleshooting sections for Slicer Integration and Personal Settings in TROUBLESHOOTING.md.
  • Expanded test coverage notes in TESTING.md to include new controllers (Settings/Slicer) and components (PersonalSettings/SlicerModal).
  • Normalized wording and removed outdated dual-mode duplication in implementation documentation.
  • Documented dual-mode viewer architecture in TECHNICAL.md with viewer lifecycle diagram (standalone vs modal modes).

Fixed

  • Settings page image/logo path resolution: replaced hardcoded asset URL with imagePath() helper in PersonalSettings.vue to ensure correct loading under all deployment paths.
  • VRML preprocessing duplication: Removed duplicate preprocessing code in preprocessVrmlText() that was applying BOM removal, line ending normalization, and null byte removal twice, causing inconsistent preprocessing behavior.
  • Flexible texture matching loop control: Fixed nested loop control flow in texture matching logic (multiFileHelpers.js) by adding foundMatch flag to properly exit outer loop when match is found in inner loop, preventing valid texture matches from being skipped.
  • Premature texture issue check: Moved checkForTextureIssues() setTimeout call in ViewerComponent.vue to execute after model successfully loads and is added to scene, ensuring accurate texture loading status assessment.
  • Debug logging cleanup: Removed console.log statements from FileBrowser.vue component (viewMode watcher and setViewMode method) to improve production code quality.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureatLgIGKAv/DO42HgoDbqVaos4kWPFuPmF5l4PHyM5S5ivOlmqnC5xu1+d5uX/h+0rUmL+pG6wKezHo7WT0PVKSBciYZzlb5D+6sJisB5x/jMVqFaQRmnEEPKfoz2DsDucmXtH6Ppv3oXjyKd5wDjyFMwtoG1hU43QBeA4ngYTMTCXqdITK5sT4OM4IwiYhUi7zZRh6/YoRxgojXIqo/RasM3sGIUIrQs075RKqXcdGcGUwJgQPAQnGsMEW9D0LODp6bYurgBZRgnmgBrpTE3D7Ktt1G+ppQTSW4tHpuq3mFJdhFlkbhbWJw9QW28xJmDnqUGfhzXTSMqoJLnbio0n7iT5bhiyxBmhi5patzHifmDwndpRPoZNbw7vxr2zzqCc+1pMt/CoXHn1PTthmYtQMg9tvyjS7jbCdYtDYLtluzITRHP8GzRXIMmBrCRzXLymk0b3IvwyB9G83+QwzHyWSTLsKV314CSasumGhFDSxnz0E2DhVVZV7yaG89Dj9HHwmxkQVeh4iI9DCd5ynu6q/8Ljyp4nJ1p//+3WCo3NksaM0ubqkXiVFnSTnSjsoDw8mbP8TU/iESpYJ11llVA9ftZSGnnczY2zFKKK17C5m/pjE9sskLlo2bfhBzRLvYOV8ejRyaXPK1B6ejCfk2VwWntq7UKFh/+/1R5usmQkRg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 2.0.0
Release Details
UpdatedDec. 2, 2025, 2:53 a.m.
Changelog

Added

  • Personal Settings: Added personal settings page for user-specific preferences
  • SettingsController and PersonalSettings view for managing user preferences
  • Settings routes and configuration updates
  • Enhanced File Loaders: Significantly improved loader capabilities
  • Enhanced FBX loader with additional features and better support
  • Improved VRML loader with expanded capabilities
  • Updated DAE loader for better compatibility
  • Enhanced multi-file loading helpers for improved dependency resolution

Changed

  • Viewer Enhancements: Enhanced ThreeViewer component with improved controls and features
  • Camera Improvements: Updated camera composable with additional functionality
  • Circular Controller: Enhanced circular controller with better user experience
  • Theme and Performance: Updated theme and performance composables
  • Major Version Bump: Version 2.0.0 introduces significant improvements and new features

Technical

  • Updated GitHub workflows with improved condition syntax
  • Updated Dependabot timezone to Asia/Muscat
  • Added change detection to prevent unnecessary PRs in workflows
  • Updated stylelint to 16.26.1
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureJrtVI0UiQsSqL82PvCmO+FLp06iE6caUY8nD1+dKlVr5YjeTvZjLUtd0sAbmwQzlR2iC4IuRJllv7hr5cWk8oWuJtnLuE4uzcXu3bu8ndzO/Zyf4ph65Fn3GyML8Zdm6TqECBFCzk+2NG0pVxt4TM7qML5p437Q6IrF0+uOh3Vj55CTf160KAjEN7v2Sa8CT4Qf/JPKtnfyAgnKkNRXMQCf7xXe3RqtgtiVPnNq6nKfYzERoihIHhZ4LqLewUfY7jvxKUpAIxF89K+yTk1PmsJgKPBN88FF3ReKwcfJcfIhMXuH7CJEHCg++Hbd0oxzvl3uv0o8k5USdkojH0vG5IQaBF8AAEGY0aKCsScmffSN7WvmpPngsHs56V/olPNPVG1QNepRvSvBljr9D6idShiRlaW7uOBl9SVwLernLBjZ30bfqRtdrm2T7oO6gozY0zRc3jxt+ajAuaPLp8pAKC/Bv8nt3Og7R3r/mpk7qXWEgC/u78v/LqjhtICx1CQDSROq8vuces8k4iEN1kJabrhxLFPDPmZucoXWSzUStP+ISyPksq+pk5KAtnKuVRMTN8rhYkMlyK1790OOF53Q1bvlHnTc3LmzTLi6b/mVPBtz+KgkHHoU8j4TYwSlnbmSx6gDqzrQa8q+cRXlK1NNmF211NX0J8B9nRkng+xHg5ts=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.8
Release Details
UpdatedNov. 28, 2025, 6:24 a.m.
Changelog

Changed

  • Dependencies: Updated development and runtime dependencies
  • three: ^0.181.1 → ^0.181.2 (patch update)
  • stylelint: ^16.25.0 → ^16.26.0 (dev)
  • vite: ^7.2.2 → ^7.2.4 (dev)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureMKCHrKGV1G4CZgG/gyhGvg34zK0migxfZ/FS9ZZEylzffGxQxoQbW+wubOR3BAjgWRx5smOBIdKVeLLuPOV00JnPgrII3lRaltLVO72nNrYtVh5DruKC5ZoMM4BuJsdEOFP8euy/GDCmlhQYNTusS/T+meggfylcrAjZAWR+SZZfb4x7QlBJTdmCuWpHNBJO081IpeLfn5HXohFAWm6sHHm6mun4ar6znAlwsZ/pe6Lo8ZjzLBuDN9mLEujrw6AgjTq2DTSUrHrJ9/WQF3zBiYjRLMNurJLnrwCXuUmPkKGWrPM3ybFADqfgb3QmqzPsPiGUL87k/1yVewEqE2olFpVRZ9hxa11ANingG+zMZwY1bCbzIcrRCq4Uoae7zgwZV/CF2wJQk+cRMbQl7Y7AoAy6PPECLMFtU93VgHqcPtFQzAxSPEXRNW+GpkVFHWvBZ7iuL6Ys8gMjl9i9imuNYcIAkuLlKLmu8t5pQpOLKvNpiQkeIf5aWXHm5Fvq7+zmeKIsuMVNvPoqQOSlC1AkwnLi1EAf/2VrqbAmDoC/o3Y6h1mg6vskUNFRPhz2h37TEb65h1bm9kFjNx/6TNNF0xM96GSAt7v+I1naBODhvGqDqyJ653663yuE+CxdKd1kZ4ous3urqXRwAmKHVdOvXYZTb+N/Feu7PHqrdcwlHHQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.7
Release Details
UpdatedNov. 27, 2025, 5:42 a.m.
Changelog

Added

  • AnycubicSlicer Support: Added integration for AnycubicSlicer with custom icon and URL scheme. (#52)
  • Folder Exclusion: Added support for .no3d marker file to exclude specific folders from 3D file scanning.
  • Hidden Folder Exclusion: Automatically exclude hidden folders (starting with .) from the file index.
  • Temp File Cleanup: Implemented background job to automatically clean up .3dviewer_temp files older than 24 hours.

Fixed

  • Layout Issue: Fixed white empty space when hiding the navigation sidebar by ensuring correct flexbox behavior and explicit slot usage.
  • Viewer Resizing: Fixed 3D canvas visual resizing issue by syncing internal resolution with CSS dimensions (width: 100%).
  • Slicer Icons: Fixed missing slicer icons by using the correct imagePath helper for asset URLs.
  • "By Folder" Navigation: improved folder indexing logic to correctly build hierarchy and handle edge cases.
  • Server Error: Resolved persistent preg_match error in PreviewManager by disabling unused app preview provider registration.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureLfmZ7uqqVk6tDgQQuwcGuzQml5OZWmFvpfNYW9Nd+3gVtIRUCBKsgtB8D6CMf1ymq2JxllnMvhATHE3YVZGmCsL5CRrj6al9+zdVnP8An2BUBP/DsqDTTwLM64mwKFIqYYkjtwVfttaa/aPJn2cdH7umzjOEHsYzbRx7eiP1lq2ERy4KYs7aA26hfleg9kKbr1jKTf0/vPCHvmbKg+o3RS+QfP/lRuoPjk1UYog52IAHd9bpAtAgmB2yLSfghjPSvMhZkyWt38CKMiKyO2R+VdB6wc/lWWVWq1JfJDw9oZlhaMpBZhXVDqR7uoMYdtR2pTNhB6d+kaTQtclvLSO5RREUDMwdocOl7iVMwrXCmKmUIyDqMa/VF3FFtK31fKlSYuvIhGDi1He0NNqlv2jiMsb2EPhrYLBHTyrmY0Px3i+ZmbYos1sFXLi7CliafZY/nZwxqPSc8xsZI42MFO9ZWA7yBKYE6UHphNnbxTbx5H33NrwHdRhOh0g+wpLJebbjyi1momlshADpfec+gAImcCnyaXhIX0Vpt73R1DmadH0xbi37iCEg73s9h6cul1RGeRhOzr+c8nhuFOUq4wodj9VLbTwwqm+bjd1jvshyo0++A0Nhjfj79phnnIJl0xsKU9QaN1eFlB6vPQRMyFswy6bWW4IW/yI2KL7693JFhRE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.6
Release Details
UpdatedNov. 20, 2025, 12:48 p.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
  • Folder Path Length: Removed the 512-character limit by hashing folder paths for indexing
  • Restored folder_path to TEXT and added a folder_path_hash column with a new migration
  • Existing rows are backfilled automatically so deep folder structures continue to work
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signature4F3B+MMtZoJiTGIBdBSaJDW9PVnv2o38ob0m+f5cIJmMM6jpgqYETLsQaW1zRCdQ8ozE8v5LfkehmhMlXy8folvlapuRcDGh9N7PPIRzTM/8b9ymOMQ1vkBPERw8k5grkUwFNamMPw+K4rFGHLMflN+vR/S6m0jmAKls/2L4kg2UdhaTdtaw/ozZAM4a09dJ038kyBS6jbh6g/M233Ue/R6aXSCMVgrA5zw38djqE9O8zmUg8xOJlOzdMRCRdhKWZOHoocLV9TBTasdU99YG7o+VIgAXeTY4X0rKxtOdfqdX+c+YNEt4syMmig/1p3e3yO1q0CmQPg6rgxtrdVOW1KK6Bbsvd8DkNwyQ0SgREq8bD+SIlF3QfqTDAFKCDgjTCn9N7HBnZIVa+NtseVrVfVeEdWdVNGMnfu9QhSeMqrE5dJMzKJLiPy4ftrmzM+aff+3aoQU69wWVffIBw1RsC3+352E90jiYw8CnH0ul8I6ffA+NVD4v8+Jo2MruxzwzTsq7/RfQMvIhsCTrhyauECtmwAQPEx9CX4h+7nryjxefgDwPQlFyszt6F53LSTWEeFO49SAlV9dH5P6tsjsMozdUts7HtG+UU+T7gHD65rY/nPL8ICF6C5YHGuuxwDFQGAkKtBNN/9VWBZr8h1X9jq1o57hwIqGBnxNdAs9YqdA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.5
Release Details
UpdatedNov. 20, 2025, 10:08 a.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturefF9sWdsS9s2UfdNuMWzSK76VLnucCn+KchXB9eFwbDsdXACnQYvhUVvS+xoMBYIfaXQEYUjfIl9oc0/sghPaIfdPvHwhCSze3XUPHkeF8yHb7eXQfHPr8N6KQZdmFM50brxxpHt5yxI40xZU+mMyW3eTP982e+aLenLEr2taQYNoaTHf35NbVknGLAE1xautWR1JQzYyVkCcc4T9/hxMp7LaGBrUPwdDALyuAp6WTHtZk+XeOxxxwRiNb7q7SpXWGuwdbX7MDvEzfBUmhw8dbORK3kqxgfXFAe7uGVdW+5sKtkdn+fxuN4gHKmBwW8N4X7YW1XaAL0KkYFoHsrdAcHunsSn/KfuqhTLHRpxOblgFPEcCwwqWcPVdGASFkD96rYylV9yzoJV2zS/pDqMVG38TQjHOs6ukBbJ5KHzpGJpgOZXDzLn24or5wVubjXkCyOsfS0by89VmrrxrERJZPNl6XTgeCZaBTPsypeWAlezfqVEjVVmdkoKuL+I3m/gMURucZV3Do+wHmxoEAT/2bTRVtIZzBsjrwuljZk4cok0oQ8reFBlngACWmXWskJOiEmshDUpnd2IykjhaU6LPEBDprd0fSM3+RE6Sx1+iJuPdXQ+CUATytcbKc8kiEjcPapzQ7xt3uR2fukG3eLrkFKoKHM7jJtWWMcWmN0yppuQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.4
Release Details
UpdatedNov. 20, 2025, 2:09 a.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureYu4MvwQG1iiUU+ZnS3qdmTsCZ0NYAx89VzPzGTNqkdgQ/LolnwTZNDpkHEOoGQOM7Q95wtrJ1iHj2KQNxHsg/nw26/L0nqQtE8+HN92EVkjKhj4Chve7AB+A8dFlj0nXdSpgtH/PbwN+90lQTCGnmd6rRc46+OqEfEoFzjBhqtrpzXuURKsZG4GV644vSvAyzZFBDncgI7tlGhUhCDj/5UShHQy9ClymB6Yb5K7smP0BSDEWYOxsUOj2/cy7hAIlCyofINC8p6UzA6Po6NiyQefX2zds56a8TZhvvuaeiO3setCQzKXdYp3WqlnVVSpRA7UZfGeqdvkDqtQuTIs4Zo9w6GWX9M+N2Z15rQ59t/cNX0OYhCs+Fw2UdJMAPYW+me911YHsaMmANkaw7sUZ0ncqxbc0NZ8NULhJakF4DHizsCSLZbVrOhpfcaDEpsy6q88bg6o4modcj+gTIytUCI/RLjTlKWYAZcRFJfmPngQiuUmBeZntR2y1a0ROFsmcRAaSys5UFHF1KuqaNocqcAo+CbN5vRqMQXnmGSg54kEHvQ6xjDki/rs/0/5sxIX5TrGhGCyubdpN5Avv1y+eZfMdxVrZu0wxOubN3zgF47b/O5wql0Mv2tpFH88gy5XMGRTyaB1fIeFQXV874btSvkBwJPJhKdTZV0pyA9C+wUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.3
Release Details
UpdatedNov. 19, 2025, 5:36 p.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureYmgaFcAnfaw/gFhMAFJupT22RE/RWydQkyTNQrbQNyHQGq406C58CN9hKEIJ5kaSzibif3goqa31T/si8GlYBnejJmQzYsQpr5Wua0dSrkUtCv0fRFv5GNWJvazyREN7XKWp+Ir/Q51J7trkGs5RCuZRnH1DhHTPyieLyZLTFsSWTSPuDRHEnpqr91B0y+epvQGujYSYG931+5tc6QaX1rfZ9kmT1qNph4SdaLeMa4hbiSFc7fuuSSNqvE8q1QPrBJEz5TMixrr1U8iMA38HBWVsufDfd+lg18bVWg3zQG1yFNZn/RYCuPck6DPiDo2uJ/9AJzOTQpJEFjDfc2zG77oE7EufwDtoaJzbhXhiseW7u0Ty6nVywrYTnEbfuIYhHeo6lbxY8KtoPLZSDSiSbH73oigsGW7o7xA+RDjtVZoWRguPZF9VfUjJ1v5WQpHD0jdZflYJ3byMygWF1z7GaT8wE9gbzwvWUyMGE6XCpzwpNxx3yOlq0mp5aUNFAjJYAO8BSgaFBxSBVnXTv22JEnhaUPAWL3HaMh3EJLVJla/TOG7cd7N9eS6JT3maO8Z7QUu32B/ah48w/uxk9qzmBX+t1onXwUA/6CuY8Gfhcg20AK5JuUiqhIZD1eW7HiC0pNJJqZbzLbXBl049JBFUqZbKLdf+ttISPjCmlRTnxdg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.2
Release Details
UpdatedNov. 19, 2025, 5:32 p.m.
Changelog

Added

  • Database-Backed File Indexing: New tv_file_index database table for fast folder, type, date, and favorites navigation
  • Automatic indexing via filesystem event listeners (NodeCreated, NodeWritten, NodeDeleted)
  • Manual reindexing via php occ threedviewer:index-files [userId] command or /apps/threedviewer/api/files/index endpoint
  • Migration automatically creates the index table on upgrade
  • Smart File Browser: Complete file navigation system with multiple view modes
  • Viewer mode: Opens 3D viewer by default on app load
  • Folders mode: Hierarchical folder navigation with recursive folder structure
  • Type mode: Browse files grouped by extension (GLB, GLTF, OBJ, etc.)
  • Date mode: Browse files organized by year and month
  • Favorites mode: View all favorited 3D files using Nextcloud system tags
  • Breadcrumb navigation for easy navigation back through folder/type/date hierarchies
  • Consistent card-based UI for folders, types, dates, and files
  • Per-User Configuration: Remembers user preferences via ConfigController
  • Saves preferred sort mode (viewer/folders/type/date/favorites)
  • Remembers last opened file ID for session persistence
  • Mobile experience: automatically hides the circular 3D controller when the viewer detects a small/mobile viewport, preventing overlap with the canvas controls.

Changed

  • Viewer opens by default on app load; the file browser now appears only when a user explicitly selects a navigation mode.
  • GET /apps/threedviewer/api/files/list now serves hierarchical payloads from the database index (folders, types, dates, favorites) instead of scanning filesystem
  • Supports includeDependencies=1 parameter to return all files including textures and nested subfolders for multi-file model loading
  • Dramatically reduces filesystem scans and improves performance
  • Navigation data is loaded lazily per sort mode and cached so switching between viewer and browser modes no longer blocks on loading every file upfront.
  • File browser UI refinements:
  • File cards now share the same compact layout as folder cards (consistent padding, thumbnail sizing, fonts, and grid spacing).
  • Type view heading and breadcrumbs no longer show a leading dot (e.g. GLB instead of .GLB).
  • Breadcrumb component now handles clicks directly via NcBreadcrumb to improve reliability.
  • Remembered folder/type state is cleared when returning to the root via breadcrumbs to ensure a fresh reload.

Fixed

  • Newly uploaded, edited, or deleted 3D files (and favorites) appear instantly in every navigation mode because the indexing listener reacts to filesystem events instead of relying on manual rescans.
  • Root breadcrumb ("Home") navigation restores the folder list correctly, even after drilling into nested folders.
  • Multi-file dependency loading:
  • Backend listFiles now supports includeDependencies=1 to return every file (including textures) and nested subfolders.
  • The dependency crawler recursively searches texture subdirectories so 3DS/FBX models with textured assets load successfully.
  • Texture search now uses the updated backend response structure to avoid missing files and 404 fetches.

Technical

  • Created lib/Db/FileIndex.php and lib/Db/FileIndexMapper.php for database operations
  • Created lib/Service/FileIndexService.php for indexing logic
  • Created lib/Listener/FileIndexListener.php for automatic index updates
  • Created lib/Command/IndexFiles.php for manual reindexing command
  • Created lib/Controller/ConfigController.php for user preference storage
  • Created lib/Migration/Version010902Date20251116061241.php for database schema migration
  • Created src/components/FileNavigation.vue and src/components/FileBrowser.vue for new navigation UI
  • Updated lib/Controller/FileController.php with new listFiles() and indexFiles() endpoints
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signature5KdirqBqYm1NTouEBce9EtmTO6/UJwHsg40DC/oCvhIuYOF8eLVWy5O5Vwx25hFvq7bHrr9SQQ9cdJS1G+fY8aQ7bSeqCR1dAdUlsoBhrYWQnKAEnoG8vIIxfk0gA+HgcRGLJPtph9TYLdeAqdhD7/VVUg8l9ZdIVJHsTQn8JijVkTeMpk5612wUyoMn7HaA8IJJrOnU6dmkfv95FcZbVLzR6QRDc2fqlM3aYbZl9KOVYzEU6e736rsQAOVn0IqrHmQyJNVIdiFnycbtRiJnJgRJj05KblfVIOC0qZwzl7sqIHdAswvYwDmdCoLK/rblTc8R7INoUFpmGFBzPITfVwBNrJh9jsxxuWnl0X/vAAtVACVGHR1utLtd4dMFSjwOVxD3f53eazH9/Hho18BBh3GOLNJEWAGNal3u8Ng+inilqQu4Nmhds9AYUoq6T38oU9NABr7mDce1TsO0AYQqfez3HBodgbbBOoXKSGLMoDCk9T71NR2Oc2XC8Urz08F9Q/0Dcoy06kdvm9neAOH+yHqjcPXfI98JCdqao6Li05VQaLOUxIyYbVpngGu3LWthpaH7rlxhD5DlOwknjimFfGifjZ0/yScHSbfRqtgxy8q8jfHJ71wMKOAzQ6xCgqfuWWROUqWNmo4ypsE23Ioj1n/yEA60bComBBgSdSjCwpA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.1
Release Details
UpdatedNov. 15, 2025, 9:35 a.m.
Changelog

Added

  • Preview Provider Implementation: Implemented Nextcloud IPreviewProvider interface for 3D model previews
  • Admins can enable/disable via enabledPreviewProviders config in config/config.php
  • Integrates with Nextcloud's native preview system
  • When enabled, provider is registered and ready for future preview rendering implementation
  • When disabled, Nextcloud automatically uses custom filetype SVG icons

Changed

  • Updated dependencies:
  • three: ^0.181.0 → ^0.181.1 (patch update)
  • @nextcloud/router: ^3.0.1 → ^3.1.0 (minor update)
  • vite: ^7.1.12 → ^7.2.2 (patch update)
  • @nextcloud/browserslist-config: ^3.1.1 → ^3.1.2 (patch update)
  • Improved duplicate registration prevention:
  • Added guards to prevent duplicate file action registration
  • Added guards to prevent duplicate viewer handler registration
  • Enhanced error handling with try-catch blocks

Removed

  • ThumbnailController: Removed custom thumbnail controller endpoint
  • Replaced by proper Nextcloud IPreviewProvider implementation
  • No longer needed as Nextcloud handles previews natively
  • Thumbnail Placeholder: Removed dependency on thumbnail-placeholder.png
  • Nextcloud automatically uses custom filetype icons when previews are disabled
  • Custom icons already registered via mimetypemapping.json
  • CSS Thumbnail Overrides: Removed CSS rules that forced app.svg background on thumbnails
  • Allows Nextcloud's preview system to work properly
  • Custom filetype icons display correctly when previews are unavailable

Fixed

  • Duplicate Registration Warnings: Fixed console warnings about duplicate settings/registrations
  • Added registration guards using window/globalThis flags
  • Improved handler registration checks
  • Better error handling for duplicate registrations

Technical

  • Created lib/Preview/ModelPreviewProvider.php implementing IPreviewProvider
  • Registered preview provider in Application.php bootstrap
  • Removed THUMBNAIL endpoint from constants and API documentation
  • Updated openapi.json with preview provider documentation
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureyK5Dmfw2bZsjqJMtY0eaIkST1jQZ4XKcPtlHp4f7GNHWV1A5PrKjkxKHO32JML49YXEI7D8PouQvnHXDq55pRDm/PBmXV3cB5wvx3ZkMVMGRQBqHNR2iBfSsl6w9I0SaGSgNSt/aa1kmZRCq20GPv8hLMHSJdcR2VpU5mA/BLp6vP51LBp9wDwzCEsU82zX6VVBXkd5YIHY+6HMRsNQNXFfRsWERTq5yjmTYfyK4Zq1rvZShPX3KG8WDWl6g3C1lJhyr/7FWLoM7Lsq6k1pirdAYUtQO7ooB0UDiTpvEgmCj/OLhL/8dvaD29dyzUxnokjj8IlpiDEcPfeLN34nqXHfMbmPZh9+aqBqsZr0GaqSD6dXGoplkBc+F/SHfWdevkZDHk8p/W0flcjIThr+K5/8YhwdDZd3G2JIRmhDdJXFfoTn2f+zYkHTV3enXsRAG95FVU3WE6zZwi8w4MOUiXIpxqb/DAISRSId3k24iPFlbguOQwPvcpMGNIruPRkoE7ihCgiU+dvcQ6ieYtwvtAHgNy+N284BdcsK7/0g5tCkzDad8Fdt4pMImPkO+cWBy3c19Uce5+pBx36Nts6q5so6O96s0Dcnf4NQPsnRFHNKduWxafeoBHCwn2NoH2aIRw0JQcwyCLvL2j8vLcN6PhAQwJ2I6P/4yHX5aEWEwaP8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.0
Release Details
UpdatedNov. 10, 2025, 6:57 a.m.
Changelog

Added

  • 🖨️ Slicer Integration: Send 3D models directly to slicer applications for 3D printing
  • Support for PrusaSlicer, UltiMaker Cura, BambuStudio, OrcaSlicer, Simplify3D, and Eufy Studio
  • One-click export with URL scheme integration
  • Automatic STL conversion and temporary share link creation
  • Professional slicer logos with brand-matched colors
  • Last used slicer appears first for quick access
  • Smart detection of uninstalled slicers with user-friendly error messages
  • Auto-download fallback when slicer app is not registered
  • Temporary file cleanup after 2 minutes
  • Share links expire after 24 hours for security
  • SlicerController API: Backend controller for handling slicer exports
  • POST /api/slicer/temp - Upload STL and create temporary share link
  • GET /api/slicer/temp/{fileId} - Download temporary file
  • DELETE /api/slicer/temp/{fileId} - Delete temporary file and share
  • Automatic cleanup of old temporary files
  • Proper filename sanitization for paths and special characters
  • CORS headers for slicer application compatibility

Changed

  • Updated app version to 1.9.0
  • Enhanced toolbar with "Send to Slicer" button
  • Added slicer integration to slide-out tools panel
  • Improved error handling with toast notifications
  • Updated translations for all supported languages

Technical

  • Created appinfo/routes.php for route registration
  • Added @NoCSRFRequired annotations for API endpoints
  • Implemented Nextcloud native share system for temporary URLs
  • Fixed filename handling for files with paths and special characters
  • Added proper authentication and cleanup mechanisms
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signaturebdu+2mjB9NyEPJbbogKcFBovDi99alBx7ixiNLiVWRmMw63yphLItjrEkmMxHL5KeEmkQj05gqf17mPXlngrWI3pkhn1gLHtbCiPwOqloKdQ+bf0US34nClshbCzP0drRsNWSxhEWbd0a0vc1Zy31vk9I2PVHugbpbo4BCy20Ks6t0aCkv6o+g8x+v+B348txV1p1F5hyM+2BBUqxEB8fNiRJ/p6bd1eMf6lWfeqBrWG6n3zB11BsKKYAa941deyJ8vLlEpI8D7Kyz7TVHuHzx9hlxbZyOCYEnD52EmpYDl/VaKnj+9EzxaFDqkQPOIHPbMtfe9tc0nZOrqEASXrUC/iPMpp1JNAyRa0Egx+DkdRE/p6wFMBxipGqfgb7MJ6gV4I7t7ML1scquVtcc8aZt3oNhdMd6gPZ7/uxOYQ8Bm6YX6fiuwxtqe5yb2uwiw9oKjQhs3miEXEAiaiab3S4HLC6Ke9QYowEzASoAD1tHf+kf4I6+IszL5V6XOVzXRhKU8t/Vdl/JSZh3LEOma2KCPBoxIwove9PpHARcEIz6Tk4eu4UvMdTjhyIBKCvEnq8Bs5fzaq+jqSuE+8h3Y+qP0Q2fSqcNHpLtBEAfrkSu883dCM7dg0miDxSGumfqn+oJ80bVDGm8mQ3WdP7AvJiygdj5i2pFqyeiPE+MGDDUE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.8.0
Release Details
UpdatedNov. 6, 2025, 2:21 a.m.
Changelog

Added

  • Screenshot Feature: Capture high-quality screenshots of 3D models directly from the viewer
  • PNG and JPEG format support with configurable quality
  • Automatic filename generation with timestamp
  • Accessible from toolbar and tools panel
  • Download screenshots directly to local device
  • Fixed WebGL renderer configuration to enable screenshot capture (preserveDrawingBuffer: true)
  • Billboard Text Labels: Annotation and measurement text now always faces the camera
  • Text remains readable from any viewing angle
  • No more reversed/mirrored text when viewing from behind
  • Smooth rotation as camera moves around the model
  • Improved user experience for annotations and measurements

Changed

  • Updated app version to 1.8.0
  • Enhanced info.xml with new feature descriptions
  • Updated English translations for screenshot and billboard features
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signaturebvx0cRDWADLGiuJ0jIg9f+81Add0o7SM3Dkq8foP/AnLfM2fSL1/ds6JsckXbP8xdOMoPyAxnN9XFi6qckR+cTiBSkkbpbQeg32ZDShLwwVRH8dubBAHkIk7qSBVjw4gV2BdKuMjWZZ5cRPlcFNUtdVP776NXH6Vv5FxK4UoudEN3VA8qDZC9+8fC46n7NhnobbviHIzeNqPA0V3Wo50UuuptyDdip0o/bbBiaw1vszWuV4QoHFMHAjFan2v3kKb5ptIHYukVOLMj8rY1dKeTACQYjEwi+YXOV+4eJMiMrHXx06eMYxiOsTdNHsCWTy9PW+4QTHM9dI/GNygSKC/V4Z9lxlPt7jncHOAT5P+tEFrWQYImvBtWsXPXoP6UPAIpP82NPWhp0lBZdjR3Fvx4yi0PM7V4/lRTztUkTrobnlVNpIxSe6SH0jWmVlyAFAW0XSiWrWbM+Q0gNEERVNudpCw7y41xv2Q45ZgPIMhGzjn7CbY8gVacSrXcsnglD8pcFAnI7hh+KfepgSSeJg1ZV7IF5UM9Qr9Cu7VDtq8Lc5bw3tqXNDf4U7T5UgnAjbA/GFXY2fz6yT5TVXWoNxER4d3Bocb73r5wWYlag6z2CKOxTOWenRUnrG0iFPi95MxaykgJMVTAilRLoHOOGZie9DHpOUwcvXWAokeDaXGBSQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.13
Release Details
UpdatedNov. 5, 2025, 4:44 p.m.
Changelog

Fixed

  • CSP Conflicts: Removed global CSP listener that was breaking other Nextcloud apps (Memories, etc.)
  • File Icons: Fixed custom file type icons not displaying by copying them to correct location
  • App Compatibility: CSP modifications now only apply to 3D viewer routes, allowing other apps to function normally

Changed

  • CSP headers now scoped to specific 3D viewer routes instead of globally
  • Added automatic icon copying during build process (scripts/copy-icons.mjs)
  • Removed lib/Listener/CspListener.php (no longer needed)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureqfnNbykFms5wS6aOa/TKBYua37o3OqBNqe9LY0dU86/MrGrqbv+v9inkFm63UQyR19ux9ACVlqG6J5rCDpLLTYAe1IkFGZMKfJzNnna8uiA734PltS8gNSv8ol0zMsRs6tvanPlDxVedCmzp31VsErPKOShjvTRbhf9ZmgJjZccX3UODdfIzZxJLqHd3vBrYqoksFXDZnzUqEkb5OK7RwfxAs71IGoVjXHOf9HuOVuefc1mhElbIygGnPYJ3ewlU72SD6gB9/kYgmZEb9xklvcTz6IjTbfKdZ7fLb640/71wCIa5mYleBkaxsoAzfGo2QjC6GHNkAQX7gAXeZp1GYBixwIF4JvawV2s1pKnIDZE3hkLqhx+e4OOYvawhlVoUdILsXSC2oiG4Q5qF/tSz6fh/2gFY+/2fxJMSwwbPXTkUPA5eXKCTpRIbWdIK61XEMKenSlWFF0giXWcOMkxXH4/T1NFlV7/g57MPogu+DD41Y2LNkdZQVaVYWEyvTw3t0pVvgohGNPRSNKV8qR8yzSM5yVe0Ck6SWOk+74SWwBoItjp66LwNQ60JK2Od2+NOSE3+2eG1SkIKL4+q0Uo4NGQgyxblPWIXJZTl14XcaxyXCJr/K913khhw+b+DumTz6TTGg6jMR8oXRFawccmEHL/DN55Y3HfRAwVj/cNIx7I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.12
Release Details
UpdatedNov. 4, 2025, 4:14 p.m.
Changelog

Fixed

  • Viewer Integration: Fixed files() method not storing files list, causing "No files provided, skipping update" error
  • File Loading: Fixed TypeError: Cannot read properties of undefined (reading 'filename') when opening 3D files
  • Static Assets: Fixed 500 error when loading app-color.svg due to route conflicts
  • Route Structure: Changed viewer route from /{fileId} to /f/{fileId} to prevent conflicts with static assets
  • Axes Positioning: Axes helper now positioned at bottom center of models, aligned with grid
  • Axes Scaling: Made axes size dynamic (25% of model's largest dimension, minimum 5 units)
  • Logo Loading: Fixed app logo path in demo scene to use generateUrl() for correct URL resolution

Changed

  • Enhanced files() method in ViewerComponent with fallback logic to create synthetic file from props
  • Simplified PageController by removing unnecessary is_numeric() checks
  • Updated URL structure for better RESTful design: /apps/threedviewer/f/{fileId}
  • Axes now recreate on model load to ensure proper sizing and positioning
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturetHcAULDv6Z6JlPEmMcFbBFAPFTScfSULZoxHuFuCtCO965w5/TPzwTm9AAbrvWQlTzOza8VK9le5cP96O8XKoLPU/rUTY0YPL+11rga9rU5c9nNcCiRTKwaha9wnos5/fDxZOhefb9aFojmpf7HsrSmHL+JMrLwaVvp846k4ShSPNbV7cVTqsrwz1C4Vy4JRzGMuSfcAMjxLBC02obtPqVYX4T5s7/QCithiTGI1VmmtMxZM0sG3fkIRf9ouPQ44hpHX7beIm4vBGthPwjhlNpR+aXq9rQd4annpZKtZGfGRX/RDXlFXUWBE/07A+/CBzP9DX9pegUvzvrelj67ADuiRDfxsL3vKN1VGU1rqHi1ZrwE24BzfeGnWgUb+wEBOcM8x8BEc0thH2zbfKAwqjY1h/iH8IjoIkbPPm3mKwQ2b5w2v2aaRRr3qbK3cOLhyzWJBpQFZaahomr9x+/hN5aU9fhr9hMjgPboRadI7rO+V6QtQDobhKlz+6Rdb1mo+Bzk9btyCJ7flqqos07yo/O01o4G/0L0hdw20vYh3WlbeGRWC6W/OBzQmRwT4MWFoHV2mQOYO4Nie4SkFCzs2lT3NWW7I/uCrCPMZDJrLhSk1KiKzctZXjTUalB4DuPHSpq99WjCcf2oPLo6rQ7DJd/sIRSh3tSj8WIlxcWCrSWk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.11
Release Details
UpdatedNov. 4, 2025, 10:58 a.m.
Changelog

Fixed

  • Viewer Integration: Fixed files() method not storing files list, causing "No files provided, skipping update" error
  • File Loading: Fixed TypeError: Cannot read properties of undefined (reading 'filename') when opening 3D files
  • Static Assets: Fixed 500 error when loading app-color.svg due to route conflicts
  • Route Structure: Changed viewer route from /{fileId} to /f/{fileId} to prevent conflicts with static assets

Changed

  • Enhanced files() method in ViewerComponent with fallback logic to create synthetic file from props
  • Simplified PageController by removing unnecessary is_numeric() checks
  • Updated URL structure for better RESTful design: /apps/threedviewer/f/{fileId}
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturehK5rTudkrE4neZOI/n/jv+qjY/VfKVkRkouiBK5jBARxwK9e0W8U07ajlvP2+U8q8qwNzjGY77RproUnQIkOlALx3c6V9ufsMaHcpuAR2GAvK84WgqqEM37VSPQrGhLLuZzz4nU5nYmNOsTg+maV0O5XEND29zOdafsJHxpY8mQofXCA0vyLYNLYQtLEAPRBtl3uDQgSSjPGB6kN87VUcqebvVrVim8aa8l7BpDoMiW5j60T7toenQiisu6S4aKMRHCxx7I1cHK/mkGjLzl+/AHpfwWpKCr13StVLzqqlVPc5+SL/yI14XW2JtJARHShE0zBqkARG0yqsFXVTGvLzvAahLuCfIdlied8HFK/NQVmqgLlRAc30xWGq2vcQvpnr9L7GwCkImnM5YeoTqVOJHawhc3wU8FQ56g/imCYgMqwSOegC1BVegdX/XvCMCxhQXEj4OxUxETQ/T1+BWqBBLLbZQQiyyRXw6o/bzpBWJYtDH/XIzFKxJdC7WKfIM6lPmPb7CCc6sJGfEi/Lyv3rTfCjyQj7ioMlB+5sLV5/d+tth6eeY9O6jZsz92/V5byhrtIdYvu4j7IZR2m8+/IpkjmTMnuv18wyU6+unVo8V2hKNLhoWYHJqEQ9Ylx/Rj6tKb4TwsrciMPV+2T38lJK5cS0GZittMNUVAKSUPBSnQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.10
Release Details
UpdatedNov. 4, 2025, 9:48 a.m.
Changelog

Fixed

  • Dark Theme Support: Fixed slide-out toolbar panel not responding to theme changes
  • Theme Switching: Implemented reactive theme binding using Vue computed properties
  • CSS Integration: Converted base styles to use Nextcloud CSS variables for better theme integration
  • UI Consistency: Toolbar panel now properly switches between Light, Dark, and Auto themes

Changed

  • Improved maintainability by using Nextcloud's standard color system throughout the toolbar
  • Enhanced theme responsiveness with component-level class binding
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureT38bK6V5aDGCGlNZJEV3QCmwYaO21RK3QtifSTQ3O311NOPA+O7ryIjncKIdr/rdN/9ZjeFLqwcxRk2traF5MkhvjRCr3NT5oV5cuMQgmw2Js7MAOLrSXOUkn6b7LpQKesEmzQPqygl2fuqN5qrxILxeWU5xWq3nyoV+G2TzByeLOT9CX8+EH1rzMnJNb/35aFS0kj/fU4V0FHFM3h8KxNDWYVjlJ/tPtq5IFBvICRm6HLCkQ2fEPPXkxP2Z1lpBam6ZGuSbcmo2lb5yQ7Zq3n6rd7FIzkU6r0/xvYF5gY08bwIdtULEpJOEQwp/n9KBR2itV4twQG2QAZFEIMF+EIg4lRzu0vdX8GVDFbirW8YqCX8PXyd+UAm1FfZ4vf8VHQXF7weZgAnvm3crR01GNStlBHl37Zke3z8CHmiYj3ffi4WMwGBT4Gb8f6fxlCOHH/mOlCyA3rtVlI5cHqJGHbdiwgHYX6e+0p5JRWOlecK/HTcVd0Aa5KX57BTcRQXEhGaQqHIbRhWTWwDMesbAyJMtCT72O2eRUqJCnSI+SRSxl/Hh4lHUEnOPx9D2P/03xDEDpO3xoR7tQGN927un6811AS+v+kABFDJQcayHiFTpR28U+WzF1vqS2fktc90NaWwiJuO1/hnQ/H8J6icAF4oxmvArZI2uO1X3CPZMwN8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.9
Release Details
UpdatedNov. 4, 2025, 8:39 a.m.
Changelog

Added

  • 3D Camera Controller: New circular controller interface for intuitive 3D model navigation
  • Camera Control Methods: Advanced camera manipulation including rotation, zoom, and directional nudging
  • View Snapping: Animated camera transitions to predefined views (Front, Back, Left, Right, Top, Bottom)
  • Controller Persistence: Save and restore controller position and visibility preferences
  • Smooth Animations: Eased camera transitions with customizable duration and easing functions
  • Face Labels: Orientation markers (TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT) on model faces
  • Export Functionality: Export models to GLB, STL, and OBJ formats
  • Camera Projection Toggle: Switch between perspective and orthographic views
  • Progressive Texture Loading: Background texture loading for improved performance
  • Dependency Caching: IndexedDB caching system for faster multi-file model loading
  • Model Statistics Panel: Detailed information about loaded models
  • Help Panel: Comprehensive in-app documentation and controls guide
  • Theme Customization: Enhanced theme switching with RTL support
  • Performance Overlay: Visual performance stats display with real-time monitoring
  • KTX2 Texture Support: GPU texture compression for better performance
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureT4jr3f8pu++HPy93L1HdiayTsqKV8PwgIw7jkye4TkqYM7wBuBsK6qv/TXwuZElOm9hzBEVH/MnuFoRl2QXPxurhZLvu918h0rDnTIjfRNMC2gIVFI8JLneLq8ya+m9lKGNLXEodRAhQ3pGn97cuSFzff+iGhQOFkojIvbWM4HbSQFq6pfF3/ZYjUCt5BhRIHdPkk+mzwjpVaniq98gh4XS3AMYqs4p2n7vysSGjAO8hZrDdGUJGxBlz1amgeUpdiGOpTwI4FyT2vbxcmHcMVwZTQyXoYZ/Ux70JZp98nz1H1kKqIoDxzZSRmetrm23Pzn+k440rHQUSjuIa/p6I6w8nGG25M0kjB46lacCtbUlR6Rrrj6SNwFITde5Rr87HP2R/ILqI5MCC73SebBxcdY/IXw7xHjUiBJTlrOmPi1ppktirZnOsmSR2Sa/yE81zrYWJ2HidTbxEGpJDZBIiwOaBCYh6nwQ51PG1z4mxgJE4G+7lMZ/bpu5UaJihys2WcoBhPxrGNeoLoEN+D1JiaOU1C974Wwncz1/BobA08FSx+rzXCnRNSQWbBapz3J6MYT5TwChku40FeqGR2KJm+v2pYgm8K/Eepieubi61tD9St1exw3AjBiJ2/dKOezNb8ZHFcoWn2bxCZc4rzuBUO0tJSrjmbW5dcysusajrvMs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32

Nextcloud 30

3D Viewer 2.1.0
Release Details
UpdatedDec. 6, 2025, 10:21 a.m.
Changelog

Added

  • File Browser Default View Setting: Added user preference for default file browser view mode (Grid or List)
  • New setting in Personal Settings → File Browser → Default View
  • FileBrowser component now loads and respects the default view from user settings
  • Setting takes precedence over localStorage, ensuring consistent default behavior
  • Manual view changes are still saved to localStorage for session persistence
  • Format Sync Test Suite: Created comprehensive unit tests (tests/unit/Service/FormatSyncTest.php) to ensure format definitions stay synchronized across:
  • Backend PHP constants (lib/Constants/SupportedFormats.php)
  • Frontend configuration (src/config/viewer-config.js)
  • Nextcloud MIME registration (appinfo/mimetypemapping.json)
  • File Browser List View: Added ability to toggle between grid and list views in file browser

Changed

  • Format Definitions Centralized: Consolidated all 3D model format definitions into lib/Constants/SupportedFormats.php as single source of truth
  • EXT_MIME_MAP for extension to MIME type mappings
  • CONTENT_TYPE_MAP for file streaming content types
  • All repair steps and services now reference centralized constants
  • Eliminates format definition divergence between components
  • File Browser Grid Padding: Updated file grid padding to consistent 20px on all sides for better visual spacing

Documentation

  • Corrected repository URLs and upstream fork instructions in CONTRIBUTING.md (replaced placeholders with maz1987in/3Dviewer-Nextcloud).
  • Updated TECHNICAL.md with new controllers (SettingsController, SlicerController), components (PersonalSettings.vue, SlicerModal.vue), and detailed Personal Settings + File Browser implementation sections.
  • Added comprehensive "Adding a New Format" guide in TECHNICAL.md with step-by-step instructions and code examples
  • Expanded IMPLEMENTATION.md: added Slicer Integration & Personal Settings System sections; reorganized and deduplicated legacy "Code Audit and Cleanup" content; refreshed Table of Contents.
  • Updated README.md (docs version) advanced features list to include Slicer Integration and Personal Settings.
  • Added troubleshooting sections for Slicer Integration and Personal Settings in TROUBLESHOOTING.md.
  • Expanded test coverage notes in TESTING.md to include new controllers (Settings/Slicer) and components (PersonalSettings/SlicerModal).
  • Normalized wording and removed outdated dual-mode duplication in implementation documentation.
  • Documented dual-mode viewer architecture in TECHNICAL.md with viewer lifecycle diagram (standalone vs modal modes).

Fixed

  • Settings page image/logo path resolution: replaced hardcoded asset URL with imagePath() helper in PersonalSettings.vue to ensure correct loading under all deployment paths.
  • VRML preprocessing duplication: Removed duplicate preprocessing code in preprocessVrmlText() that was applying BOM removal, line ending normalization, and null byte removal twice, causing inconsistent preprocessing behavior.
  • Flexible texture matching loop control: Fixed nested loop control flow in texture matching logic (multiFileHelpers.js) by adding foundMatch flag to properly exit outer loop when match is found in inner loop, preventing valid texture matches from being skipped.
  • Premature texture issue check: Moved checkForTextureIssues() setTimeout call in ViewerComponent.vue to execute after model successfully loads and is added to scene, ensuring accurate texture loading status assessment.
  • Debug logging cleanup: Removed console.log statements from FileBrowser.vue component (viewMode watcher and setViewMode method) to improve production code quality.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureatLgIGKAv/DO42HgoDbqVaos4kWPFuPmF5l4PHyM5S5ivOlmqnC5xu1+d5uX/h+0rUmL+pG6wKezHo7WT0PVKSBciYZzlb5D+6sJisB5x/jMVqFaQRmnEEPKfoz2DsDucmXtH6Ppv3oXjyKd5wDjyFMwtoG1hU43QBeA4ngYTMTCXqdITK5sT4OM4IwiYhUi7zZRh6/YoRxgojXIqo/RasM3sGIUIrQs075RKqXcdGcGUwJgQPAQnGsMEW9D0LODp6bYurgBZRgnmgBrpTE3D7Ktt1G+ppQTSW4tHpuq3mFJdhFlkbhbWJw9QW28xJmDnqUGfhzXTSMqoJLnbio0n7iT5bhiyxBmhi5patzHifmDwndpRPoZNbw7vxr2zzqCc+1pMt/CoXHn1PTthmYtQMg9tvyjS7jbCdYtDYLtluzITRHP8GzRXIMmBrCRzXLymk0b3IvwyB9G83+QwzHyWSTLsKV314CSasumGhFDSxnz0E2DhVVZV7yaG89Dj9HHwmxkQVeh4iI9DCd5ynu6q/8Ljyp4nJ1p//+3WCo3NksaM0ubqkXiVFnSTnSjsoDw8mbP8TU/iESpYJ11llVA9ftZSGnnczY2zFKKK17C5m/pjE9sskLlo2bfhBzRLvYOV8ejRyaXPK1B6ejCfk2VwWntq7UKFh/+/1R5usmQkRg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 2.0.0
Release Details
UpdatedDec. 2, 2025, 2:53 a.m.
Changelog

Added

  • Personal Settings: Added personal settings page for user-specific preferences
  • SettingsController and PersonalSettings view for managing user preferences
  • Settings routes and configuration updates
  • Enhanced File Loaders: Significantly improved loader capabilities
  • Enhanced FBX loader with additional features and better support
  • Improved VRML loader with expanded capabilities
  • Updated DAE loader for better compatibility
  • Enhanced multi-file loading helpers for improved dependency resolution

Changed

  • Viewer Enhancements: Enhanced ThreeViewer component with improved controls and features
  • Camera Improvements: Updated camera composable with additional functionality
  • Circular Controller: Enhanced circular controller with better user experience
  • Theme and Performance: Updated theme and performance composables
  • Major Version Bump: Version 2.0.0 introduces significant improvements and new features

Technical

  • Updated GitHub workflows with improved condition syntax
  • Updated Dependabot timezone to Asia/Muscat
  • Added change detection to prevent unnecessary PRs in workflows
  • Updated stylelint to 16.26.1
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureJrtVI0UiQsSqL82PvCmO+FLp06iE6caUY8nD1+dKlVr5YjeTvZjLUtd0sAbmwQzlR2iC4IuRJllv7hr5cWk8oWuJtnLuE4uzcXu3bu8ndzO/Zyf4ph65Fn3GyML8Zdm6TqECBFCzk+2NG0pVxt4TM7qML5p437Q6IrF0+uOh3Vj55CTf160KAjEN7v2Sa8CT4Qf/JPKtnfyAgnKkNRXMQCf7xXe3RqtgtiVPnNq6nKfYzERoihIHhZ4LqLewUfY7jvxKUpAIxF89K+yTk1PmsJgKPBN88FF3ReKwcfJcfIhMXuH7CJEHCg++Hbd0oxzvl3uv0o8k5USdkojH0vG5IQaBF8AAEGY0aKCsScmffSN7WvmpPngsHs56V/olPNPVG1QNepRvSvBljr9D6idShiRlaW7uOBl9SVwLernLBjZ30bfqRtdrm2T7oO6gozY0zRc3jxt+ajAuaPLp8pAKC/Bv8nt3Og7R3r/mpk7qXWEgC/u78v/LqjhtICx1CQDSROq8vuces8k4iEN1kJabrhxLFPDPmZucoXWSzUStP+ISyPksq+pk5KAtnKuVRMTN8rhYkMlyK1790OOF53Q1bvlHnTc3LmzTLi6b/mVPBtz+KgkHHoU8j4TYwSlnbmSx6gDqzrQa8q+cRXlK1NNmF211NX0J8B9nRkng+xHg5ts=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.8
Release Details
UpdatedNov. 28, 2025, 6:24 a.m.
Changelog

Changed

  • Dependencies: Updated development and runtime dependencies
  • three: ^0.181.1 → ^0.181.2 (patch update)
  • stylelint: ^16.25.0 → ^16.26.0 (dev)
  • vite: ^7.2.2 → ^7.2.4 (dev)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureMKCHrKGV1G4CZgG/gyhGvg34zK0migxfZ/FS9ZZEylzffGxQxoQbW+wubOR3BAjgWRx5smOBIdKVeLLuPOV00JnPgrII3lRaltLVO72nNrYtVh5DruKC5ZoMM4BuJsdEOFP8euy/GDCmlhQYNTusS/T+meggfylcrAjZAWR+SZZfb4x7QlBJTdmCuWpHNBJO081IpeLfn5HXohFAWm6sHHm6mun4ar6znAlwsZ/pe6Lo8ZjzLBuDN9mLEujrw6AgjTq2DTSUrHrJ9/WQF3zBiYjRLMNurJLnrwCXuUmPkKGWrPM3ybFADqfgb3QmqzPsPiGUL87k/1yVewEqE2olFpVRZ9hxa11ANingG+zMZwY1bCbzIcrRCq4Uoae7zgwZV/CF2wJQk+cRMbQl7Y7AoAy6PPECLMFtU93VgHqcPtFQzAxSPEXRNW+GpkVFHWvBZ7iuL6Ys8gMjl9i9imuNYcIAkuLlKLmu8t5pQpOLKvNpiQkeIf5aWXHm5Fvq7+zmeKIsuMVNvPoqQOSlC1AkwnLi1EAf/2VrqbAmDoC/o3Y6h1mg6vskUNFRPhz2h37TEb65h1bm9kFjNx/6TNNF0xM96GSAt7v+I1naBODhvGqDqyJ653663yuE+CxdKd1kZ4ous3urqXRwAmKHVdOvXYZTb+N/Feu7PHqrdcwlHHQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.7
Release Details
UpdatedNov. 27, 2025, 5:42 a.m.
Changelog

Added

  • AnycubicSlicer Support: Added integration for AnycubicSlicer with custom icon and URL scheme. (#52)
  • Folder Exclusion: Added support for .no3d marker file to exclude specific folders from 3D file scanning.
  • Hidden Folder Exclusion: Automatically exclude hidden folders (starting with .) from the file index.
  • Temp File Cleanup: Implemented background job to automatically clean up .3dviewer_temp files older than 24 hours.

Fixed

  • Layout Issue: Fixed white empty space when hiding the navigation sidebar by ensuring correct flexbox behavior and explicit slot usage.
  • Viewer Resizing: Fixed 3D canvas visual resizing issue by syncing internal resolution with CSS dimensions (width: 100%).
  • Slicer Icons: Fixed missing slicer icons by using the correct imagePath helper for asset URLs.
  • "By Folder" Navigation: improved folder indexing logic to correctly build hierarchy and handle edge cases.
  • Server Error: Resolved persistent preg_match error in PreviewManager by disabling unused app preview provider registration.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureLfmZ7uqqVk6tDgQQuwcGuzQml5OZWmFvpfNYW9Nd+3gVtIRUCBKsgtB8D6CMf1ymq2JxllnMvhATHE3YVZGmCsL5CRrj6al9+zdVnP8An2BUBP/DsqDTTwLM64mwKFIqYYkjtwVfttaa/aPJn2cdH7umzjOEHsYzbRx7eiP1lq2ERy4KYs7aA26hfleg9kKbr1jKTf0/vPCHvmbKg+o3RS+QfP/lRuoPjk1UYog52IAHd9bpAtAgmB2yLSfghjPSvMhZkyWt38CKMiKyO2R+VdB6wc/lWWVWq1JfJDw9oZlhaMpBZhXVDqR7uoMYdtR2pTNhB6d+kaTQtclvLSO5RREUDMwdocOl7iVMwrXCmKmUIyDqMa/VF3FFtK31fKlSYuvIhGDi1He0NNqlv2jiMsb2EPhrYLBHTyrmY0Px3i+ZmbYos1sFXLi7CliafZY/nZwxqPSc8xsZI42MFO9ZWA7yBKYE6UHphNnbxTbx5H33NrwHdRhOh0g+wpLJebbjyi1momlshADpfec+gAImcCnyaXhIX0Vpt73R1DmadH0xbi37iCEg73s9h6cul1RGeRhOzr+c8nhuFOUq4wodj9VLbTwwqm+bjd1jvshyo0++A0Nhjfj79phnnIJl0xsKU9QaN1eFlB6vPQRMyFswy6bWW4IW/yI2KL7693JFhRE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.6
Release Details
UpdatedNov. 20, 2025, 12:48 p.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
  • Folder Path Length: Removed the 512-character limit by hashing folder paths for indexing
  • Restored folder_path to TEXT and added a folder_path_hash column with a new migration
  • Existing rows are backfilled automatically so deep folder structures continue to work
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signature4F3B+MMtZoJiTGIBdBSaJDW9PVnv2o38ob0m+f5cIJmMM6jpgqYETLsQaW1zRCdQ8ozE8v5LfkehmhMlXy8folvlapuRcDGh9N7PPIRzTM/8b9ymOMQ1vkBPERw8k5grkUwFNamMPw+K4rFGHLMflN+vR/S6m0jmAKls/2L4kg2UdhaTdtaw/ozZAM4a09dJ038kyBS6jbh6g/M233Ue/R6aXSCMVgrA5zw38djqE9O8zmUg8xOJlOzdMRCRdhKWZOHoocLV9TBTasdU99YG7o+VIgAXeTY4X0rKxtOdfqdX+c+YNEt4syMmig/1p3e3yO1q0CmQPg6rgxtrdVOW1KK6Bbsvd8DkNwyQ0SgREq8bD+SIlF3QfqTDAFKCDgjTCn9N7HBnZIVa+NtseVrVfVeEdWdVNGMnfu9QhSeMqrE5dJMzKJLiPy4ftrmzM+aff+3aoQU69wWVffIBw1RsC3+352E90jiYw8CnH0ul8I6ffA+NVD4v8+Jo2MruxzwzTsq7/RfQMvIhsCTrhyauECtmwAQPEx9CX4h+7nryjxefgDwPQlFyszt6F53LSTWEeFO49SAlV9dH5P6tsjsMozdUts7HtG+UU+T7gHD65rY/nPL8ICF6C5YHGuuxwDFQGAkKtBNN/9VWBZr8h1X9jq1o57hwIqGBnxNdAs9YqdA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.5
Release Details
UpdatedNov. 20, 2025, 10:08 a.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturefF9sWdsS9s2UfdNuMWzSK76VLnucCn+KchXB9eFwbDsdXACnQYvhUVvS+xoMBYIfaXQEYUjfIl9oc0/sghPaIfdPvHwhCSze3XUPHkeF8yHb7eXQfHPr8N6KQZdmFM50brxxpHt5yxI40xZU+mMyW3eTP982e+aLenLEr2taQYNoaTHf35NbVknGLAE1xautWR1JQzYyVkCcc4T9/hxMp7LaGBrUPwdDALyuAp6WTHtZk+XeOxxxwRiNb7q7SpXWGuwdbX7MDvEzfBUmhw8dbORK3kqxgfXFAe7uGVdW+5sKtkdn+fxuN4gHKmBwW8N4X7YW1XaAL0KkYFoHsrdAcHunsSn/KfuqhTLHRpxOblgFPEcCwwqWcPVdGASFkD96rYylV9yzoJV2zS/pDqMVG38TQjHOs6ukBbJ5KHzpGJpgOZXDzLn24or5wVubjXkCyOsfS0by89VmrrxrERJZPNl6XTgeCZaBTPsypeWAlezfqVEjVVmdkoKuL+I3m/gMURucZV3Do+wHmxoEAT/2bTRVtIZzBsjrwuljZk4cok0oQ8reFBlngACWmXWskJOiEmshDUpnd2IykjhaU6LPEBDprd0fSM3+RE6Sx1+iJuPdXQ+CUATytcbKc8kiEjcPapzQ7xt3uR2fukG3eLrkFKoKHM7jJtWWMcWmN0yppuQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.4
Release Details
UpdatedNov. 20, 2025, 2:09 a.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
  • Migration Class Declaration: Fixed missing class declaration in migration file
  • Added class Version010902Date20251116061241 extends SimpleMigrationStep declaration
  • Resolves syntax error: "unexpected token \"public\", expecting end of file"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureYu4MvwQG1iiUU+ZnS3qdmTsCZ0NYAx89VzPzGTNqkdgQ/LolnwTZNDpkHEOoGQOM7Q95wtrJ1iHj2KQNxHsg/nw26/L0nqQtE8+HN92EVkjKhj4Chve7AB+A8dFlj0nXdSpgtH/PbwN+90lQTCGnmd6rRc46+OqEfEoFzjBhqtrpzXuURKsZG4GV644vSvAyzZFBDncgI7tlGhUhCDj/5UShHQy9ClymB6Yb5K7smP0BSDEWYOxsUOj2/cy7hAIlCyofINC8p6UzA6Po6NiyQefX2zds56a8TZhvvuaeiO3setCQzKXdYp3WqlnVVSpRA7UZfGeqdvkDqtQuTIs4Zo9w6GWX9M+N2Z15rQ59t/cNX0OYhCs+Fw2UdJMAPYW+me911YHsaMmANkaw7sUZ0ncqxbc0NZ8NULhJakF4DHizsCSLZbVrOhpfcaDEpsy6q88bg6o4modcj+gTIytUCI/RLjTlKWYAZcRFJfmPngQiuUmBeZntR2y1a0ROFsmcRAaSys5UFHF1KuqaNocqcAo+CbN5vRqMQXnmGSg54kEHvQ6xjDki/rs/0/5sxIX5TrGhGCyubdpN5Avv1y+eZfMdxVrZu0wxOubN3zgF47b/O5wql0Mv2tpFH88gy5XMGRTyaB1fIeFQXV874btSvkBwJPJhKdTZV0pyA9C+wUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.3
Release Details
UpdatedNov. 19, 2025, 5:36 p.m.
Changelog

Fixed

  • Preview Provider Registration: Fixed ArgumentCountError during app service registration
  • registerPreviewProvider() requires 2 arguments (MIME type and provider class)
  • Now registers ModelPreviewProvider for each supported MIME type individually
  • Resolves error: "Too few arguments to function registerPreviewProvider(), 1 passed and exactly 2 expected"
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureYmgaFcAnfaw/gFhMAFJupT22RE/RWydQkyTNQrbQNyHQGq406C58CN9hKEIJ5kaSzibif3goqa31T/si8GlYBnejJmQzYsQpr5Wua0dSrkUtCv0fRFv5GNWJvazyREN7XKWp+Ir/Q51J7trkGs5RCuZRnH1DhHTPyieLyZLTFsSWTSPuDRHEnpqr91B0y+epvQGujYSYG931+5tc6QaX1rfZ9kmT1qNph4SdaLeMa4hbiSFc7fuuSSNqvE8q1QPrBJEz5TMixrr1U8iMA38HBWVsufDfd+lg18bVWg3zQG1yFNZn/RYCuPck6DPiDo2uJ/9AJzOTQpJEFjDfc2zG77oE7EufwDtoaJzbhXhiseW7u0Ty6nVywrYTnEbfuIYhHeo6lbxY8KtoPLZSDSiSbH73oigsGW7o7xA+RDjtVZoWRguPZF9VfUjJ1v5WQpHD0jdZflYJ3byMygWF1z7GaT8wE9gbzwvWUyMGE6XCpzwpNxx3yOlq0mp5aUNFAjJYAO8BSgaFBxSBVnXTv22JEnhaUPAWL3HaMh3EJLVJla/TOG7cd7N9eS6JT3maO8Z7QUu32B/ah48w/uxk9qzmBX+t1onXwUA/6CuY8Gfhcg20AK5JuUiqhIZD1eW7HiC0pNJJqZbzLbXBl049JBFUqZbKLdf+ttISPjCmlRTnxdg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.2
Release Details
UpdatedNov. 19, 2025, 5:32 p.m.
Changelog

Added

  • Database-Backed File Indexing: New tv_file_index database table for fast folder, type, date, and favorites navigation
  • Automatic indexing via filesystem event listeners (NodeCreated, NodeWritten, NodeDeleted)
  • Manual reindexing via php occ threedviewer:index-files [userId] command or /apps/threedviewer/api/files/index endpoint
  • Migration automatically creates the index table on upgrade
  • Smart File Browser: Complete file navigation system with multiple view modes
  • Viewer mode: Opens 3D viewer by default on app load
  • Folders mode: Hierarchical folder navigation with recursive folder structure
  • Type mode: Browse files grouped by extension (GLB, GLTF, OBJ, etc.)
  • Date mode: Browse files organized by year and month
  • Favorites mode: View all favorited 3D files using Nextcloud system tags
  • Breadcrumb navigation for easy navigation back through folder/type/date hierarchies
  • Consistent card-based UI for folders, types, dates, and files
  • Per-User Configuration: Remembers user preferences via ConfigController
  • Saves preferred sort mode (viewer/folders/type/date/favorites)
  • Remembers last opened file ID for session persistence
  • Mobile experience: automatically hides the circular 3D controller when the viewer detects a small/mobile viewport, preventing overlap with the canvas controls.

Changed

  • Viewer opens by default on app load; the file browser now appears only when a user explicitly selects a navigation mode.
  • GET /apps/threedviewer/api/files/list now serves hierarchical payloads from the database index (folders, types, dates, favorites) instead of scanning filesystem
  • Supports includeDependencies=1 parameter to return all files including textures and nested subfolders for multi-file model loading
  • Dramatically reduces filesystem scans and improves performance
  • Navigation data is loaded lazily per sort mode and cached so switching between viewer and browser modes no longer blocks on loading every file upfront.
  • File browser UI refinements:
  • File cards now share the same compact layout as folder cards (consistent padding, thumbnail sizing, fonts, and grid spacing).
  • Type view heading and breadcrumbs no longer show a leading dot (e.g. GLB instead of .GLB).
  • Breadcrumb component now handles clicks directly via NcBreadcrumb to improve reliability.
  • Remembered folder/type state is cleared when returning to the root via breadcrumbs to ensure a fresh reload.

Fixed

  • Newly uploaded, edited, or deleted 3D files (and favorites) appear instantly in every navigation mode because the indexing listener reacts to filesystem events instead of relying on manual rescans.
  • Root breadcrumb ("Home") navigation restores the folder list correctly, even after drilling into nested folders.
  • Multi-file dependency loading:
  • Backend listFiles now supports includeDependencies=1 to return every file (including textures) and nested subfolders.
  • The dependency crawler recursively searches texture subdirectories so 3DS/FBX models with textured assets load successfully.
  • Texture search now uses the updated backend response structure to avoid missing files and 404 fetches.

Technical

  • Created lib/Db/FileIndex.php and lib/Db/FileIndexMapper.php for database operations
  • Created lib/Service/FileIndexService.php for indexing logic
  • Created lib/Listener/FileIndexListener.php for automatic index updates
  • Created lib/Command/IndexFiles.php for manual reindexing command
  • Created lib/Controller/ConfigController.php for user preference storage
  • Created lib/Migration/Version010902Date20251116061241.php for database schema migration
  • Created src/components/FileNavigation.vue and src/components/FileBrowser.vue for new navigation UI
  • Updated lib/Controller/FileController.php with new listFiles() and indexFiles() endpoints
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signature5KdirqBqYm1NTouEBce9EtmTO6/UJwHsg40DC/oCvhIuYOF8eLVWy5O5Vwx25hFvq7bHrr9SQQ9cdJS1G+fY8aQ7bSeqCR1dAdUlsoBhrYWQnKAEnoG8vIIxfk0gA+HgcRGLJPtph9TYLdeAqdhD7/VVUg8l9ZdIVJHsTQn8JijVkTeMpk5612wUyoMn7HaA8IJJrOnU6dmkfv95FcZbVLzR6QRDc2fqlM3aYbZl9KOVYzEU6e736rsQAOVn0IqrHmQyJNVIdiFnycbtRiJnJgRJj05KblfVIOC0qZwzl7sqIHdAswvYwDmdCoLK/rblTc8R7INoUFpmGFBzPITfVwBNrJh9jsxxuWnl0X/vAAtVACVGHR1utLtd4dMFSjwOVxD3f53eazH9/Hho18BBh3GOLNJEWAGNal3u8Ng+inilqQu4Nmhds9AYUoq6T38oU9NABr7mDce1TsO0AYQqfez3HBodgbbBOoXKSGLMoDCk9T71NR2Oc2XC8Urz08F9Q/0Dcoy06kdvm9neAOH+yHqjcPXfI98JCdqao6Li05VQaLOUxIyYbVpngGu3LWthpaH7rlxhD5DlOwknjimFfGifjZ0/yScHSbfRqtgxy8q8jfHJ71wMKOAzQ6xCgqfuWWROUqWNmo4ypsE23Ioj1n/yEA60bComBBgSdSjCwpA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.1
Release Details
UpdatedNov. 15, 2025, 9:35 a.m.
Changelog

Added

  • Preview Provider Implementation: Implemented Nextcloud IPreviewProvider interface for 3D model previews
  • Admins can enable/disable via enabledPreviewProviders config in config/config.php
  • Integrates with Nextcloud's native preview system
  • When enabled, provider is registered and ready for future preview rendering implementation
  • When disabled, Nextcloud automatically uses custom filetype SVG icons

Changed

  • Updated dependencies:
  • three: ^0.181.0 → ^0.181.1 (patch update)
  • @nextcloud/router: ^3.0.1 → ^3.1.0 (minor update)
  • vite: ^7.1.12 → ^7.2.2 (patch update)
  • @nextcloud/browserslist-config: ^3.1.1 → ^3.1.2 (patch update)
  • Improved duplicate registration prevention:
  • Added guards to prevent duplicate file action registration
  • Added guards to prevent duplicate viewer handler registration
  • Enhanced error handling with try-catch blocks

Removed

  • ThumbnailController: Removed custom thumbnail controller endpoint
  • Replaced by proper Nextcloud IPreviewProvider implementation
  • No longer needed as Nextcloud handles previews natively
  • Thumbnail Placeholder: Removed dependency on thumbnail-placeholder.png
  • Nextcloud automatically uses custom filetype icons when previews are disabled
  • Custom icons already registered via mimetypemapping.json
  • CSS Thumbnail Overrides: Removed CSS rules that forced app.svg background on thumbnails
  • Allows Nextcloud's preview system to work properly
  • Custom filetype icons display correctly when previews are unavailable

Fixed

  • Duplicate Registration Warnings: Fixed console warnings about duplicate settings/registrations
  • Added registration guards using window/globalThis flags
  • Improved handler registration checks
  • Better error handling for duplicate registrations

Technical

  • Created lib/Preview/ModelPreviewProvider.php implementing IPreviewProvider
  • Registered preview provider in Application.php bootstrap
  • Removed THUMBNAIL endpoint from constants and API documentation
  • Updated openapi.json with preview provider documentation
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureyK5Dmfw2bZsjqJMtY0eaIkST1jQZ4XKcPtlHp4f7GNHWV1A5PrKjkxKHO32JML49YXEI7D8PouQvnHXDq55pRDm/PBmXV3cB5wvx3ZkMVMGRQBqHNR2iBfSsl6w9I0SaGSgNSt/aa1kmZRCq20GPv8hLMHSJdcR2VpU5mA/BLp6vP51LBp9wDwzCEsU82zX6VVBXkd5YIHY+6HMRsNQNXFfRsWERTq5yjmTYfyK4Zq1rvZShPX3KG8WDWl6g3C1lJhyr/7FWLoM7Lsq6k1pirdAYUtQO7ooB0UDiTpvEgmCj/OLhL/8dvaD29dyzUxnokjj8IlpiDEcPfeLN34nqXHfMbmPZh9+aqBqsZr0GaqSD6dXGoplkBc+F/SHfWdevkZDHk8p/W0flcjIThr+K5/8YhwdDZd3G2JIRmhDdJXFfoTn2f+zYkHTV3enXsRAG95FVU3WE6zZwi8w4MOUiXIpxqb/DAISRSId3k24iPFlbguOQwPvcpMGNIruPRkoE7ihCgiU+dvcQ6ieYtwvtAHgNy+N284BdcsK7/0g5tCkzDad8Fdt4pMImPkO+cWBy3c19Uce5+pBx36Nts6q5so6O96s0Dcnf4NQPsnRFHNKduWxafeoBHCwn2NoH2aIRw0JQcwyCLvL2j8vLcN6PhAQwJ2I6P/4yHX5aEWEwaP8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.9.0
Release Details
UpdatedNov. 10, 2025, 6:57 a.m.
Changelog

Added

  • 🖨️ Slicer Integration: Send 3D models directly to slicer applications for 3D printing
  • Support for PrusaSlicer, UltiMaker Cura, BambuStudio, OrcaSlicer, Simplify3D, and Eufy Studio
  • One-click export with URL scheme integration
  • Automatic STL conversion and temporary share link creation
  • Professional slicer logos with brand-matched colors
  • Last used slicer appears first for quick access
  • Smart detection of uninstalled slicers with user-friendly error messages
  • Auto-download fallback when slicer app is not registered
  • Temporary file cleanup after 2 minutes
  • Share links expire after 24 hours for security
  • SlicerController API: Backend controller for handling slicer exports
  • POST /api/slicer/temp - Upload STL and create temporary share link
  • GET /api/slicer/temp/{fileId} - Download temporary file
  • DELETE /api/slicer/temp/{fileId} - Delete temporary file and share
  • Automatic cleanup of old temporary files
  • Proper filename sanitization for paths and special characters
  • CORS headers for slicer application compatibility

Changed

  • Updated app version to 1.9.0
  • Enhanced toolbar with "Send to Slicer" button
  • Added slicer integration to slide-out tools panel
  • Improved error handling with toast notifications
  • Updated translations for all supported languages

Technical

  • Created appinfo/routes.php for route registration
  • Added @NoCSRFRequired annotations for API endpoints
  • Implemented Nextcloud native share system for temporary URLs
  • Fixed filename handling for files with paths and special characters
  • Added proper authentication and cleanup mechanisms
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signaturebdu+2mjB9NyEPJbbogKcFBovDi99alBx7ixiNLiVWRmMw63yphLItjrEkmMxHL5KeEmkQj05gqf17mPXlngrWI3pkhn1gLHtbCiPwOqloKdQ+bf0US34nClshbCzP0drRsNWSxhEWbd0a0vc1Zy31vk9I2PVHugbpbo4BCy20Ks6t0aCkv6o+g8x+v+B348txV1p1F5hyM+2BBUqxEB8fNiRJ/p6bd1eMf6lWfeqBrWG6n3zB11BsKKYAa941deyJ8vLlEpI8D7Kyz7TVHuHzx9hlxbZyOCYEnD52EmpYDl/VaKnj+9EzxaFDqkQPOIHPbMtfe9tc0nZOrqEASXrUC/iPMpp1JNAyRa0Egx+DkdRE/p6wFMBxipGqfgb7MJ6gV4I7t7ML1scquVtcc8aZt3oNhdMd6gPZ7/uxOYQ8Bm6YX6fiuwxtqe5yb2uwiw9oKjQhs3miEXEAiaiab3S4HLC6Ke9QYowEzASoAD1tHf+kf4I6+IszL5V6XOVzXRhKU8t/Vdl/JSZh3LEOma2KCPBoxIwove9PpHARcEIz6Tk4eu4UvMdTjhyIBKCvEnq8Bs5fzaq+jqSuE+8h3Y+qP0Q2fSqcNHpLtBEAfrkSu883dCM7dg0miDxSGumfqn+oJ80bVDGm8mQ3WdP7AvJiygdj5i2pFqyeiPE+MGDDUE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.8.0
Release Details
UpdatedNov. 6, 2025, 2:21 a.m.
Changelog

Added

  • Screenshot Feature: Capture high-quality screenshots of 3D models directly from the viewer
  • PNG and JPEG format support with configurable quality
  • Automatic filename generation with timestamp
  • Accessible from toolbar and tools panel
  • Download screenshots directly to local device
  • Fixed WebGL renderer configuration to enable screenshot capture (preserveDrawingBuffer: true)
  • Billboard Text Labels: Annotation and measurement text now always faces the camera
  • Text remains readable from any viewing angle
  • No more reversed/mirrored text when viewing from behind
  • Smooth rotation as camera moves around the model
  • Improved user experience for annotations and measurements

Changed

  • Updated app version to 1.8.0
  • Enhanced info.xml with new feature descriptions
  • Updated English translations for screenshot and billboard features
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
Signaturebvx0cRDWADLGiuJ0jIg9f+81Add0o7SM3Dkq8foP/AnLfM2fSL1/ds6JsckXbP8xdOMoPyAxnN9XFi6qckR+cTiBSkkbpbQeg32ZDShLwwVRH8dubBAHkIk7qSBVjw4gV2BdKuMjWZZ5cRPlcFNUtdVP776NXH6Vv5FxK4UoudEN3VA8qDZC9+8fC46n7NhnobbviHIzeNqPA0V3Wo50UuuptyDdip0o/bbBiaw1vszWuV4QoHFMHAjFan2v3kKb5ptIHYukVOLMj8rY1dKeTACQYjEwi+YXOV+4eJMiMrHXx06eMYxiOsTdNHsCWTy9PW+4QTHM9dI/GNygSKC/V4Z9lxlPt7jncHOAT5P+tEFrWQYImvBtWsXPXoP6UPAIpP82NPWhp0lBZdjR3Fvx4yi0PM7V4/lRTztUkTrobnlVNpIxSe6SH0jWmVlyAFAW0XSiWrWbM+Q0gNEERVNudpCw7y41xv2Q45ZgPIMhGzjn7CbY8gVacSrXcsnglD8pcFAnI7hh+KfepgSSeJg1ZV7IF5UM9Qr9Cu7VDtq8Lc5bw3tqXNDf4U7T5UgnAjbA/GFXY2fz6yT5TVXWoNxER4d3Bocb73r5wWYlag6z2CKOxTOWenRUnrG0iFPi95MxaykgJMVTAilRLoHOOGZie9DHpOUwcvXWAokeDaXGBSQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.13
Release Details
UpdatedNov. 5, 2025, 4:44 p.m.
Changelog

Fixed

  • CSP Conflicts: Removed global CSP listener that was breaking other Nextcloud apps (Memories, etc.)
  • File Icons: Fixed custom file type icons not displaying by copying them to correct location
  • App Compatibility: CSP modifications now only apply to 3D viewer routes, allowing other apps to function normally

Changed

  • CSP headers now scoped to specific 3D viewer routes instead of globally
  • Added automatic icon copying during build process (scripts/copy-icons.mjs)
  • Removed lib/Listener/CspListener.php (no longer needed)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureqfnNbykFms5wS6aOa/TKBYua37o3OqBNqe9LY0dU86/MrGrqbv+v9inkFm63UQyR19ux9ACVlqG6J5rCDpLLTYAe1IkFGZMKfJzNnna8uiA734PltS8gNSv8ol0zMsRs6tvanPlDxVedCmzp31VsErPKOShjvTRbhf9ZmgJjZccX3UODdfIzZxJLqHd3vBrYqoksFXDZnzUqEkb5OK7RwfxAs71IGoVjXHOf9HuOVuefc1mhElbIygGnPYJ3ewlU72SD6gB9/kYgmZEb9xklvcTz6IjTbfKdZ7fLb640/71wCIa5mYleBkaxsoAzfGo2QjC6GHNkAQX7gAXeZp1GYBixwIF4JvawV2s1pKnIDZE3hkLqhx+e4OOYvawhlVoUdILsXSC2oiG4Q5qF/tSz6fh/2gFY+/2fxJMSwwbPXTkUPA5eXKCTpRIbWdIK61XEMKenSlWFF0giXWcOMkxXH4/T1NFlV7/g57MPogu+DD41Y2LNkdZQVaVYWEyvTw3t0pVvgohGNPRSNKV8qR8yzSM5yVe0Ck6SWOk+74SWwBoItjp66LwNQ60JK2Od2+NOSE3+2eG1SkIKL4+q0Uo4NGQgyxblPWIXJZTl14XcaxyXCJr/K913khhw+b+DumTz6TTGg6jMR8oXRFawccmEHL/DN55Y3HfRAwVj/cNIx7I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.12
Release Details
UpdatedNov. 4, 2025, 4:14 p.m.
Changelog

Fixed

  • Viewer Integration: Fixed files() method not storing files list, causing "No files provided, skipping update" error
  • File Loading: Fixed TypeError: Cannot read properties of undefined (reading 'filename') when opening 3D files
  • Static Assets: Fixed 500 error when loading app-color.svg due to route conflicts
  • Route Structure: Changed viewer route from /{fileId} to /f/{fileId} to prevent conflicts with static assets
  • Axes Positioning: Axes helper now positioned at bottom center of models, aligned with grid
  • Axes Scaling: Made axes size dynamic (25% of model's largest dimension, minimum 5 units)
  • Logo Loading: Fixed app logo path in demo scene to use generateUrl() for correct URL resolution

Changed

  • Enhanced files() method in ViewerComponent with fallback logic to create synthetic file from props
  • Simplified PageController by removing unnecessary is_numeric() checks
  • Updated URL structure for better RESTful design: /apps/threedviewer/f/{fileId}
  • Axes now recreate on model load to ensure proper sizing and positioning
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturetHcAULDv6Z6JlPEmMcFbBFAPFTScfSULZoxHuFuCtCO965w5/TPzwTm9AAbrvWQlTzOza8VK9le5cP96O8XKoLPU/rUTY0YPL+11rga9rU5c9nNcCiRTKwaha9wnos5/fDxZOhefb9aFojmpf7HsrSmHL+JMrLwaVvp846k4ShSPNbV7cVTqsrwz1C4Vy4JRzGMuSfcAMjxLBC02obtPqVYX4T5s7/QCithiTGI1VmmtMxZM0sG3fkIRf9ouPQ44hpHX7beIm4vBGthPwjhlNpR+aXq9rQd4annpZKtZGfGRX/RDXlFXUWBE/07A+/CBzP9DX9pegUvzvrelj67ADuiRDfxsL3vKN1VGU1rqHi1ZrwE24BzfeGnWgUb+wEBOcM8x8BEc0thH2zbfKAwqjY1h/iH8IjoIkbPPm3mKwQ2b5w2v2aaRRr3qbK3cOLhyzWJBpQFZaahomr9x+/hN5aU9fhr9hMjgPboRadI7rO+V6QtQDobhKlz+6Rdb1mo+Bzk9btyCJ7flqqos07yo/O01o4G/0L0hdw20vYh3WlbeGRWC6W/OBzQmRwT4MWFoHV2mQOYO4Nie4SkFCzs2lT3NWW7I/uCrCPMZDJrLhSk1KiKzctZXjTUalB4DuPHSpq99WjCcf2oPLo6rQ7DJd/sIRSh3tSj8WIlxcWCrSWk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.11
Release Details
UpdatedNov. 4, 2025, 10:58 a.m.
Changelog

Fixed

  • Viewer Integration: Fixed files() method not storing files list, causing "No files provided, skipping update" error
  • File Loading: Fixed TypeError: Cannot read properties of undefined (reading 'filename') when opening 3D files
  • Static Assets: Fixed 500 error when loading app-color.svg due to route conflicts
  • Route Structure: Changed viewer route from /{fileId} to /f/{fileId} to prevent conflicts with static assets

Changed

  • Enhanced files() method in ViewerComponent with fallback logic to create synthetic file from props
  • Simplified PageController by removing unnecessary is_numeric() checks
  • Updated URL structure for better RESTful design: /apps/threedviewer/f/{fileId}
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignaturehK5rTudkrE4neZOI/n/jv+qjY/VfKVkRkouiBK5jBARxwK9e0W8U07ajlvP2+U8q8qwNzjGY77RproUnQIkOlALx3c6V9ufsMaHcpuAR2GAvK84WgqqEM37VSPQrGhLLuZzz4nU5nYmNOsTg+maV0O5XEND29zOdafsJHxpY8mQofXCA0vyLYNLYQtLEAPRBtl3uDQgSSjPGB6kN87VUcqebvVrVim8aa8l7BpDoMiW5j60T7toenQiisu6S4aKMRHCxx7I1cHK/mkGjLzl+/AHpfwWpKCr13StVLzqqlVPc5+SL/yI14XW2JtJARHShE0zBqkARG0yqsFXVTGvLzvAahLuCfIdlied8HFK/NQVmqgLlRAc30xWGq2vcQvpnr9L7GwCkImnM5YeoTqVOJHawhc3wU8FQ56g/imCYgMqwSOegC1BVegdX/XvCMCxhQXEj4OxUxETQ/T1+BWqBBLLbZQQiyyRXw6o/bzpBWJYtDH/XIzFKxJdC7WKfIM6lPmPb7CCc6sJGfEi/Lyv3rTfCjyQj7ioMlB+5sLV5/d+tth6eeY9O6jZsz92/V5byhrtIdYvu4j7IZR2m8+/IpkjmTMnuv18wyU6+unVo8V2hKNLhoWYHJqEQ9Ylx/Rj6tKb4TwsrciMPV+2T38lJK5cS0GZittMNUVAKSUPBSnQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.10
Release Details
UpdatedNov. 4, 2025, 9:48 a.m.
Changelog

Fixed

  • Dark Theme Support: Fixed slide-out toolbar panel not responding to theme changes
  • Theme Switching: Implemented reactive theme binding using Vue computed properties
  • CSS Integration: Converted base styles to use Nextcloud CSS variables for better theme integration
  • UI Consistency: Toolbar panel now properly switches between Light, Dark, and Auto themes

Changed

  • Improved maintainability by using Nextcloud's standard color system throughout the toolbar
  • Enhanced theme responsiveness with component-level class binding
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureT38bK6V5aDGCGlNZJEV3QCmwYaO21RK3QtifSTQ3O311NOPA+O7ryIjncKIdr/rdN/9ZjeFLqwcxRk2traF5MkhvjRCr3NT5oV5cuMQgmw2Js7MAOLrSXOUkn6b7LpQKesEmzQPqygl2fuqN5qrxILxeWU5xWq3nyoV+G2TzByeLOT9CX8+EH1rzMnJNb/35aFS0kj/fU4V0FHFM3h8KxNDWYVjlJ/tPtq5IFBvICRm6HLCkQ2fEPPXkxP2Z1lpBam6ZGuSbcmo2lb5yQ7Zq3n6rd7FIzkU6r0/xvYF5gY08bwIdtULEpJOEQwp/n9KBR2itV4twQG2QAZFEIMF+EIg4lRzu0vdX8GVDFbirW8YqCX8PXyd+UAm1FfZ4vf8VHQXF7weZgAnvm3crR01GNStlBHl37Zke3z8CHmiYj3ffi4WMwGBT4Gb8f6fxlCOHH/mOlCyA3rtVlI5cHqJGHbdiwgHYX6e+0p5JRWOlecK/HTcVd0Aa5KX57BTcRQXEhGaQqHIbRhWTWwDMesbAyJMtCT72O2eRUqJCnSI+SRSxl/Hh4lHUEnOPx9D2P/03xDEDpO3xoR7tQGN927un6811AS+v+kABFDJQcayHiFTpR28U+WzF1vqS2fktc90NaWwiJuO1/hnQ/H8J6icAF4oxmvArZI2uO1X3CPZMwN8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32
3D Viewer 1.7.9
Release Details
UpdatedNov. 4, 2025, 8:39 a.m.
Changelog

Added

  • 3D Camera Controller: New circular controller interface for intuitive 3D model navigation
  • Camera Control Methods: Advanced camera manipulation including rotation, zoom, and directional nudging
  • View Snapping: Animated camera transitions to predefined views (Front, Back, Left, Right, Top, Bottom)
  • Controller Persistence: Save and restore controller position and visibility preferences
  • Smooth Animations: Eased camera transitions with customizable duration and easing functions
  • Face Labels: Orientation markers (TOP, BOTTOM, FRONT, BACK, LEFT, RIGHT) on model faces
  • Export Functionality: Export models to GLB, STL, and OBJ formats
  • Camera Projection Toggle: Switch between perspective and orthographic views
  • Progressive Texture Loading: Background texture loading for improved performance
  • Dependency Caching: IndexedDB caching system for faster multi-file model loading
  • Model Statistics Panel: Detailed information about loaded models
  • Help Panel: Comprehensive in-app documentation and controls guide
  • Theme Customization: Enhanced theme switching with RTL support
  • Performance Overlay: Visual performance stats display with real-time monitoring
  • KTX2 Texture Support: GPU texture compression for better performance
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEBzCCAu8CAhLKMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjUxMTA0MDgxMDEzWhcNMzYwMjEwMDgxMDEzWjAXMRUwEwYD
VQQDDAx0aHJlZWR2aWV3ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQDnE42wyWoV2dJM9P5a0wX1fka0RV64J/zwc6phoNTGOt6l2KulOVkwjhiGstJN
ZDtJ56Zc3WUYReEZUi7QLkJjb7t1Tyorz24gFDytMxPAzOQ0WICSY3OBEJzPxXzB
lq2XM+EXuyS9en2VRbjtA6BuYDs0leF8Ucm5zVAHNAHPrlWCHeiHHm6qwtYPlRy7
6GLmdgLA9/lOK1cL6leMPZRv5ths4tsda/nRfnXJp8i1n29+PrqSx1U1V26z1Oyg
4W+kYmw/CVQPw3F0dYsmdWG5Esp9WKP4LkhRuIvqbt5AWB9Ymb/zNXQgMcZBo46e
Lf9jMYH5WWnXsuJV6kypn4pkyhjyy8dGsVGPR/O/YafVe5xqTYUKVxyKR5v8pxoB
NqPTKKCe1dyhPrb5aUibc4MIRVq7YNKL7cHqtt0Lgii0AtDoXlFxo+o4iNhl85id
z8aBcDcrNpAlWHvEqqMeuzrdm5wbWdFS9PLzjsjTH2HVLJwWzNY50JIJfgECBrRm
pgx2xcE8artReZUyvn4N7OhQcIMlbiJJD3GAqo+royLWk+saObAMewc8tL9WCDDT
zVliibBIC4cS8TNxeWJBCDE31VRcchUpnOIAl6Ks4BqAjIZWOHywJ1LDZMjYByBK
0kJ3YbbcJ8G4wvhllp+FDeK+72Yaf2W/vXeAxe5RT14XAQIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQBr2FhVbBHoSFfBGsLfBQEwVfjBGUb4gnzMmqHHMcFwrQiWNejZ
oK7KqUu28cuU6BjJ5/K2AZBW3/eU5zcPlv36G+VGYfVSsmT50G38fXyP4rCxICdL
0hZnKSJU80YLCPy2uSPJ6os3gcIp7OEkRLukU/Be8GEVZAlX5dVds3ve7GFA1K/z
FI9AMqwGnueXbncuTDo7QGd268qYNNWh/jYloQ7sdW1NCwKGvpPXjB80rw5briXk
Zzf7xuMLAobzRxY23NlBamP7wdv355TWXlrFBkaKdF4+aSzELf9LpXzDsQ6SaDI4
Mol4XeYOOXOL40adta2oG9/2k3GKNRfSh5Qe
-----END CERTIFICATE-----
SignatureT4jr3f8pu++HPy93L1HdiayTsqKV8PwgIw7jkye4TkqYM7wBuBsK6qv/TXwuZElOm9hzBEVH/MnuFoRl2QXPxurhZLvu918h0rDnTIjfRNMC2gIVFI8JLneLq8ya+m9lKGNLXEodRAhQ3pGn97cuSFzff+iGhQOFkojIvbWM4HbSQFq6pfF3/ZYjUCt5BhRIHdPkk+mzwjpVaniq98gh4XS3AMYqs4p2n7vysSGjAO8hZrDdGUJGxBlz1amgeUpdiGOpTwI4FyT2vbxcmHcMVwZTQyXoYZ/Ux70JZp98nz1H1kKqIoDxzZSRmetrm23Pzn+k440rHQUSjuIa/p6I6w8nGG25M0kjB46lacCtbUlR6Rrrj6SNwFITde5Rr87HP2R/ILqI5MCC73SebBxcdY/IXw7xHjUiBJTlrOmPi1ppktirZnOsmSR2Sa/yE81zrYWJ2HidTbxEGpJDZBIiwOaBCYh6nwQ51PG1z4mxgJE4G+7lMZ/bpu5UaJihys2WcoBhPxrGNeoLoEN+D1JiaOU1C974Wwncz1/BobA08FSx+rzXCnRNSQWbBapz3J6MYT5TwChku40FeqGR2KJm+v2pYgm8K/Eepieubi61tD9St1exw3AjBiJ2/dKOezNb8ZHFcoWn2bxCZc4rzuBUO0tJSrjmbW5dcysusajrvMs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<33.0.0
Minimum Integer bits32