diff --git a/readme.md b/readme.md
index fd470e3..b67b92c 100644
--- a/readme.md
+++ b/readme.md
@@ -1,7 +1,7 @@

### Running Dashy
-- [Quick Start](/docs/quick-start.md) - TDLR guide on getting Dashy up and running
+- [Quick Start](/docs/quick-start.md) - TLDR guide on getting Dashy up and running
- [Deployment](/docs/deployment.md) - Full guide on deploying Dashy either locally or online
- [Configuring](/docs/configuring.md) - Complete list of all available options in the config file
- [App Management](/docs/management.md) - Managing your app, updating, security, web server configuration, etc
diff --git a/troubleshooting.md b/troubleshooting.md
index c23fc90..f27553e 100644
--- a/troubleshooting.md
+++ b/troubleshooting.md
@@ -1,8 +1,9 @@
# Troubleshooting
-> _**This document contains common problems and their solutions.**_
+> _**This document contains common problems and their solutions.**_
+> Please ensure your issue isn't listed here, before opening a new ticket.
>
-> _If you came across an issue where the solution was not immediately obvious, consider adding it to this list to help other users._
+> _If you come across an issue not listed below, consider adding it, to help other users._
### Contents
- [Refused to Connect in Web Content View](#refused-to-connect-in-modal-or-workspace-view)
@@ -94,10 +95,18 @@ If this works, but you wish to continue using HTML5 history mode, then a bit of
## 404 after Launch from Mobile Home Screen
-Similar to the above issue, if you get a 404 after using iOS's βadd to Home Screenβ feature, then this is caused by Vue router.
+Similar to the above issue, if you get a 404 after using iOS and Android's βAdd to Home Screenβ feature, then this is caused by Vue router.
It can be fixed by setting `appConfig.routingMode` to `hash`
-See also: [#628](https://github.com/Lissy93/dashy/issues/628)
+See also: [#628](https://github.com/Lissy93/dashy/issues/628), [#762](https://github.com/Lissy93/dashy/issues/762)
+
+---
+
+## 404 On Multi-Page Apps
+
+Similar to above, if you get a 404 error when visiting a page directly on multi-page apps, then this can be fixed under `appConfig`, by setting `routingMode` to `hash`. Then rebuilding, and refreshing the page.
+
+See also: [#670](https://github.com/Lissy93/dashy/issues/670), [#763](https://github.com/Lissy93/dashy/issues/763)
---
diff --git a/widgets.md b/widgets.md
index d5f7d92..1bbd9e6 100644
--- a/widgets.md
+++ b/widgets.md
@@ -48,6 +48,12 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [AdGuard Home Filters](#adguard-home-filters)
- [AdGuard Home DNS Info](#adguard-home-dns-info)
- [AdGuard Home Top Domains](#adguard-home-top-domains)
+ - [Nextcloud User](#nextcloud-user)
+ - [Nextcloud User Statuses](#nextcloud-user-statuses)
+ - [Nextcloud Notifications](#nextcloud-notifications)
+ - [Nextcloud System](#nextcloud-system)
+ - [Nextcloud Stats](#nextcloud-stats)
+ - [Nextcloud PHP Opcache](#nextcloud-php-opcache-stats)
- **[System Resource Monitoring](#system-resource-monitoring)**
- [CPU Usage Current](#current-cpu-usage)
- [CPU Usage Per Core](#cpu-usage-per-core)
@@ -1564,6 +1570,224 @@ Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overvi
---
+### Nextcloud User
+
+Nextcloud is a [self hosted](https://nextcloud.com/install/#instructions-server) productivity platform, it can also be used free of charge with [hundreds of existing hosting providers](https://nextcloud.com/sign-up/) that offer a free Nextcloud account.
+
+Displays branding information of a Nextcloud server (logo, url, slogan) and some user details (name, login name, last login, disk space or quota). Use with regular or admin user.
+
+Shows quota usage when quota is enabled for the user or disk usage when not enabled.
+
+Known issues: the User API incorrectly reports available disk space as total for admin users when quota is not enabled (which usually is the case for admins).
+
+

+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL of the Nextcloud server
+**`username`** | `string` | Required | Nextcloud username
+**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security)
+
+
+##### Example
+
+```yaml
+- type: nextcloud-user
+ useProxy: true
+ options:
+ hostname: https://nextcloud.example.com
+ username: alice
+ password: xxxxx-xxxxx-xxxxx-xxxxx
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π’ Required
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com))
+- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_
+
+---
+
+### Nextcloud User Statuses
+
+Show user statuses for selected users.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL of the Nextcloud server
+**`username`** | `string` | Required | Nextcloud username
+**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security)
+**`users`** | `array` | Required | Nextcloud User IDs to show statuses for, list size between `1` and `100`
+**`showEmpty`** | `boolean` | _Optional_ | Show statuses without a message, defaults to `true`
+
+
+##### Example
+
+```yaml
+- type: nextcloud-userstatus
+ useProxy: true
+ options:
+ hostname: https://nextcloud.example.com
+ username: alice
+ password: xxxxx-xxxxx-xxxxx-xxxxx
+ users: ['bob', 'alice']
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π’ Required
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com))
+- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_
+
+---
+
+### Nextcloud Notifications
+
+Displays your notifications and allows deleting them.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL of the Nextcloud server
+**`username`** | `string` | Required | Nextcloud username
+**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security)
+**`limit`** | `number\|string` | _Optional_ | Limit displayed notifications either by count, e.g. `5` to show the 5 most recent, or by age, e.g. `1d` to only show notifications not older than a day. Accepted suffixes for age limit are `m`, `h` and `d`.
+
+
+##### Example
+
+```yaml
+- type: nextcloud-userstatus
+ useProxy: true
+ options:
+ hostname: https://nextcloud.example.com
+ username: alice
+ password: xxxxx-xxxxx-xxxxx-xxxxx
+ limit: 6h
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π’ Required
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com))
+- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_
+
+---
+
+### Nextcloud System
+
+Visualises overall memory utilisation and CPU load averages, shows server versions.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL of the Nextcloud server
+**`username`** | `string` | Required | Must be a Nextcloud admin user
+**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security)
+
+##### Example
+
+```yaml
+- type: nextcloud-system
+ useProxy: true
+ options:
+ hostname: https://nextcloud.example.com
+ username: alice
+ password: xxxxx-xxxxx-xxxxx-xxxxx
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π’ Required
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com))
+- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_
+
+---
+
+### Nextcloud Stats
+
+Shows key usage statistics about your Nextcloud server.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL of the Nextcloud server
+**`username`** | `string` | Required | Must be a Nextcloud admin user
+**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security)
+
+##### Example
+
+```yaml
+- type: nextcloud-stats
+ useProxy: true
+ options:
+ hostname: https://nextcloud.example.com
+ username: alice
+ password: xxxxx-xxxxx-xxxxx-xxxxx
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π’ Required
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com))
+- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_
+
+---
+
+### Nextcloud PHP Opcache Stats
+
+Shows statistics about PHP Opcache perforamnce on your Nextcloud server.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL of the Nextcloud server
+**`username`** | `string` | Required | Must be a Nextcloud admin user
+**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security)
+
+##### Example
+
+```yaml
+- type: nextcloud-stats
+ useProxy: true
+ options:
+ hostname: https://nextcloud.example.com
+ username: alice
+ password: xxxxx-xxxxx-xxxxx-xxxxx
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π’ Required
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com))
+- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_
+
+---
+
## System Resource Monitoring
The easiest method for displaying system info and resource usage in Dashy is with [Glances](https://nicolargo.github.io/glances/).