Simon L.
7e50969d02
feat(desec): keep the typed slug across the registration flow
...
A slug typed into the deSEC form was lost when the form re-rendered after a
201 redirect (e.g. on the awaiting-verification step), forcing the user to
re-enter it. Persist the requested slug in the AIO config when register()
runs and pre-fill the slug input from it on every step, then clear it once a
domain is set. Stored in configuration.json rather than a URL parameter so it
survives the multi-step flow without leaking into the iframe address.
Signed-off-by: Simon L. <szaimen@e.mail.de >
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 16:04:36 +02:00
Simon L.
454905c852
feat(desec): run registration flow in a modal iframe
...
Move the deSEC "register a free domain" flow out of the inline containers
page form and into a modal backed by a dedicated /desec view loaded in an
iframe. The multi-step register -> verify -> domain process now re-renders
inside the modal, so the user can adjust the details and complete email
verification without reloading the whole page each step. Only once the
domain is fully registered does the view reload the parent containers page.
- add /desec route + desec.twig standalone view
- add desec-modal.js (open/close, backdrop + Escape) and desec-done.js
(parent reload on completion)
- redirect register POST to the /desec view so steps stay in the modal
- drop the redundant <details> wrapper in desec-register.twig, add heading
- style the modal and let <button class="button"> pick up button styles
- drive the modal iframe in the Playwright specs and update the QA checklist
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Signed-off-by: Simon L. <szaimen@e.mail.de >
2026-06-22 13:24:50 +02:00
Simon L.
1868738f56
feat(desec): add register -> verify -> domain UI
...
- includes/desec-register.twig renders the multi-step deSEC flow: enter email
(optionally an existing password), the awaiting-verification step, and the
account-registered step, with friendly messaging for the ambiguous "email
already registered" case (deSEC returns 202 either way to prevent enumeration).
- containers.twig includes the deSEC section under the domain-entry UI; index.php
passes the deSEC config/state (email, password, registered/awaiting flags) to
the view.
- Move the deSEC password reveal from an inline style to a CSS class (no inline
CSS/JS in templates) and bump the style.css cache-buster to v13 in layout.twig
and log.twig.
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com >
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Signed-off-by: Simon L. <szaimen@e.mail.de >
2026-06-18 13:19:16 +02:00
Copilot
6375921282
add eurooffice ( #8052 )
2026-06-04 12:42:02 +02:00
Copilot
1f94bc8af0
aio-interface: extract Nextcloud latest-major upgrade logic to dedicated script and add UI trigger button ( #7988 )
...
* Extract Nextcloud major upgrade logic to script and add UI button
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/8cd11b09-5073-4e27-8e59-9afffaf96c1f
Rename sendNotification to execCommandInContainer and reuse for upgrade method
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/88744552-9d64-4de2-9f64-5a98a5e3b200
Add $cmd array validation to execCommandInContainer
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/45d5228c-7834-404e-ba54-90b5c8c207c8
Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de >
Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de >
Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de >
Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de >
Set installLatestMajor when upgrade-to-latest-major button is clicked
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/7b977c85-9b74-4027-a536-152e49a01976
Extract getLatestMajorVersion() to avoid duplicating the version string
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/d5ec921f-8629-4f6e-949a-e8f89f1eb85f
Address PR review comments and hardcode updater channel to stable
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/c40941ff-2bf8-4a57-82be-2a0bd22b19a2
Restore sendNotification(), update cron files, extract getPlainStreamingCallback()
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/a5b6cd86-d278-4771-8a11-976c4a862966
Remove getPlainStreamingCallback, unify on getAddToStreamingResponseBody
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/15a4b815-076b-469f-95b2-c61df688a28d
Revert "Remove getPlainStreamingCallback, unify on getAddToStreamingResponseBody"
This reverts commit 6846c3a99549703121461f910cc26e6c116e0dc4.
* Refactor creating and using addToStreamingResponseBody()
This way we stick to having one implementation of the function, not three.
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Read streamed output line by line, not via buffer
This way the code doesn't wait for a buffer to be filled, and we don't need to
implement logic ourselves that is provided by a present library already.
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Ensure all HTTP requests are proxied, even with streaming
When requesting a streamed response, Guzzle apparently doesn't use curl, and thus we have to specify the unix socket proxy differently.
We can't specify it when creating the client, though (Guzzle complains).
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Fix syntax errors
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Remove broken code
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Fix readline line from streaming response
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Strip ANSI codes from command output before sending it to the browser
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Run PHP commands as www-data
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Properly compare version numbers
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Fix using memory limits from env
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Fix return type spec
This method always returns a closure, never null.
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Use more general return type
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Avoid psalm complaint
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Fix namespace of return type
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
* Apply suggestion from @szaimen
Signed-off-by: Simon L. <szaimen@e.mail.de >
---------
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
Signed-off-by: Simon L. <szaimen@e.mail.de >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Pablo Zmdl <pablo@nextcloud.com >
Co-authored-by: Simon L. <szaimen@e.mail.de >
2026-06-03 12:38:50 +02:00
Simon L.
1d546bbb59
aio-interface: do not cache the containers, logs and setup screen as it shows credentials
...
Signed-off-by: Simon L. <szaimen@e.mail.de >
2026-05-21 12:14:46 +02:00
Simon L.
82fc4635a2
aio-interface: add custom error handler for 405 errors ( #8058 )
2026-05-18 12:40:02 +02:00
copilot-swe-agent[bot]
654c39ff1e
fix: change session cookie SameSite from Strict to Lax to fix cross-site getlogin flow
...
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/acf6148d-63c7-4ee2-a856-6de7de68118d
Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com >
2026-05-07 07:53:51 +00:00
Simon L.
5bb2778fb7
aio-interface: add custom error handler for 405 errors
...
Signed-off-by: Simon L. <szaimen@e.mail.de >
2026-05-05 17:30:07 +02:00
copilot-swe-agent[bot]
172c72f735
aio-interface: also reset the borg backup cache when resetting the backup path
...
Signed-off-by: Simon L. <szaimen@e.mail.de >
2026-04-25 15:06:58 +02:00
copilot-swe-agent[bot]
301f42d2a0
aio-interface: preserve old PHPSESSID session during cookie migration to survive 502s on mastercontainer update
...
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/aadfe06c-fde4-4a01-953a-42abd110b416
fix: rename $oldSessionTime to $oldSessionTimestamp for clarity
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/aadfe06c-fde4-4a01-953a-42abd110b416
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com >
2026-04-20 17:10:23 +02:00
Simon L.
2b5998e57d
aio-interface: enable PHP OPcache and Twig template cache ( #7950 )
2026-04-20 13:55:33 +02:00
copilot-swe-agent[bot]
3c17a6af36
aio-interface: enable PHP OPcache and Twig template cache
...
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/2d974f3d-5f37-47e9-aa1f-00a43bcd9838
Signed-off-by: Simon L. <szaimen@e.mail.de >
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com >
Signed-off-by: Simon L. <szaimen@e.mail.de >
2026-04-20 13:47:59 +02:00
copilot-swe-agent[bot]
e378f7faca
aio-interface: preserve login session across container restarts after cookie name change
...
The session cookie was recently renamed from `PHPSESSID` to
`__Host-Http-PHPSESSID` (commit 3871179a ). When watchtower updates the
mastercontainer, the browser still holds the old `PHPSESSID` cookie, but the
new code only looks for `__Host-Http-PHPSESSID`. The old cookie is ignored, a
fresh unauthenticated session is created, and the user is logged out.
Fix: before starting the new session in index.php, check if the old `PHPSESSID`
cookie exists and carries an authenticated session. If it does, destroy the old
session and mark the new one as authenticated via `SetAuthState(true)`.
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/cba0ea31-e257-4ec1-82ae-dd66f0f34d98
---
refactor: address review comments - use constant for session key and activity interval
Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/cba0ea31-e257-4ec1-82ae-dd66f0f34d98
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com >
2026-04-20 13:05:41 +02:00
Simon L.
f25f588295
aio-interface: offer system prune button
...
Signed-off-by: Simon L. <szaimen@e.mail.de >
Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com >
Co-Authored-By: Pablo Zmdl <57864086+pabzm@users.noreply.github.com >
Signed-off-by: Simon L. <szaimen@e.mail.de >
2026-04-17 14:33:53 +02:00
Zoey
3871179a57
aio-interface: set cookie prefix to __Host-Http- ( #7912 )
...
Signed-off-by: Zoey <zoey@z0ey.de >
Signed-off-by: Simon L. <szaimen@e.mail.de >
Co-authored-by: Simon L. <szaimen@e.mail.de >
2026-04-16 11:12:34 +02:00
Zoey
c104b179b7
aio-interface: improve session config and cookie store ( #7689 )
...
Signed-off-by: Zoey <zoey@z0ey.de >
Co-authored-by: Pablo Zmdl <57864086+pabzm@users.noreply.github.com >
Co-authored-by: Simon L. <szaimen@e.mail.de >
2026-04-13 11:46:35 +02:00
Pablo Zmdl
680a2fefcb
Auto-load only new log data
...
This is way more complicated that just reloading the log file, but also
way nicer.
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-02-25 16:45:41 +01:00
Simon L.
ceafca8a3a
Merge pull request #7631 from nextcloud/add-404-error-handler
...
aio-interface: 404 error handler for less app output pollution
2026-02-20 12:57:53 +01:00
Pablo Zmdl
22d0da73ac
404 error handler for less app output pollution
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-02-20 12:48:24 +01:00
Oleksandr Piskun
987191ac14
feat(app-api): add HaRP container ( #7493 )
...
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com >
Signed-off-by: bigcat88 <bigcat88@icloud.com >
Signed-off-by: Oleksandr Piskun <oleksandr2088@icloud.com >
Signed-off-by: Simon L. <szaimen@e.mail.de >
Co-authored-by: Simon L. <szaimen@e.mail.de >
2026-02-18 13:45:44 +01:00
Pablo Zmdl
bf43a6dae6
Lower case method names in ConfigurationManager
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 16:51:36 +01:00
Pablo Zmdl
5bdcfd67eb
Make 'enableNvidiaGpu' an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
5fc4951ba0
Make 'nextcloudEnableDriDevice' an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
0cb79a387f
Make 'disableBackupSection' an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
8b8f60f76b
Camelize property nextcloud_memory_limit => nextcloudMemoryLimit
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
bbf41cfdd3
Camelize property nextcloud_upload_limit => nextcloudUploadLimit
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
f5cf7903ad
Camelize property nextcloud_datadir_mount => nextcloudDatadirMount
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
f35a0b4367
Camelize property nextcloud_mount => nextcloudMount
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
f7c5115c70
Camelize property talk_port => talkPort
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
567f072ee0
Camelize property apache_port => apachePort
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
c4aa148bff
Camelize property aio_community_containers => aioCommunityContainers
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
b499001501
Camelize property collabora_additional_options => collaboraAdditionalOptions
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
5373471ed8
Camelize property collabora_dictionaries => collaboraDictionaries
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
efe8317446
Camelize property nextcloud_max_time => nextcloudMaxTime
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:57 +01:00
Pablo Zmdl
5cac2dcf12
Camelize property borg_restore_password => borgRestorePassword
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
284411c369
Camelize property borg_remote_repo => borgRemoteRepo
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
62856e78bb
Camelize property borg_backup_host_location => borgBackupHostLocation
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
62a21dd34a
Camelize property instance_restore_attempt => instanceRestoreAttempt
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
367e847cc8
Make nextcloud_max_time an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
c1f8ac6989
Make nextcloud_memory_limit an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
3e19fa66d0
Make nextcloud_datadir_mount an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
4de73dd75b
Make nextcloud_mount an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
903aed1e34
Make nextcloud_upload_limit an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
96c9c1a6f9
Make talk_port an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
dc28eb6737
Make apache_port an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
6c04cd055f
Make aio_community_containers an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
228440f2a8
Make collabora_additional_options an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
ca35006a85
Make collabora_dictionaries an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00
Pablo Zmdl
6e5237cd20
Make timezone an attribute
...
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com >
2026-01-28 11:51:56 +01:00