diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index b1f4fb38..971a12e2 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## π 1.8.5 - Lots of Requested UI Improvements [PR #261](https://github.com/Lissy93/dashy/pull/261) +- Adds an option for landing URL in workspace, Re: #255 +- Switches to a new API for generative icons, Re: #163 +- Adds new tab functionality to Workspace, Re: #254 +- Remove CSS validation in style editor, Re: #259 +- Cap item description at 2 lines, Re: #250 +- Adds native support for common homelab icons, using dashboard-icons +- Improves general responsiveness of home page sections positioning +- Updates, fixes and adds a bunch of actions for easier repo management + ## β¨ 1.8.4 - Custom Error Pages [PR #257](https://github.com/Lissy93/dashy/pull/257) - Creates a 404 Not Found page - Routes any missing views to the 404 page diff --git a/.github/pr-branch-labeler.yml b/.github/pr-branch-labeler.yml new file mode 100644 index 00000000..0a7732e3 --- /dev/null +++ b/.github/pr-branch-labeler.yml @@ -0,0 +1,10 @@ +# PR labels and the branch patterns they should be auto-assigned to + +π¦ Bug Fix: ['FIX/*', 'HOT-FIX/*', 'BUG-FIX/*'] +β¨ New Feature: ['FEATURE/*'] +π Refactor: ['IMPROVMENTS/*', 'REFACTOR/*'] +π― Showcase: ['SHOWCASE/*'] +π Stylistic Changes: ['STYLES/*', 'THEME/*'] +π οΈ Build Changes: ['ARCH/*', 'ARCHITECTURE/*', 'DOCKER/*', 'BUILD/*'] +π€ Auto: ['AUTO/*', 'BOT/*', 'snyk-upgrade-*', 'snyk-fix-*'] +β Don't Merge: ['WEBSITE/*', 'EXPERIMENT/*', 'DEPLOY/*', 'deploy_*', 'gh-pages', 'dev-demo'] \ No newline at end of file diff --git a/.github/workflows/assign-reviewer.yml b/.github/workflows/assign-reviewer.yml new file mode 100644 index 00000000..60135fa2 --- /dev/null +++ b/.github/workflows/assign-reviewer.yml @@ -0,0 +1,14 @@ +# Automatically assigns the author as a reviewer to opened PRs and issues +name: π‘ Auto-Assign Author to PR +on: + pull_request: + types: [opened] + issues: + types: [opened] +jobs: + assign-author: + runs-on: ubuntu-latest + steps: + - name: Assign author + uses: technote-space/assign-author@v1 + GITHUB_TOKEN: ${{secrets.BOT_GITHUB_TOKEN}} \ No newline at end of file diff --git a/.github/workflows/auto-rebase-pr.yml b/.github/workflows/auto-rebase-pr.yml new file mode 100644 index 00000000..1ea7aa2b --- /dev/null +++ b/.github/workflows/auto-rebase-pr.yml @@ -0,0 +1,23 @@ +# When a '/rebase' comment is added to a PR, it will be rebased from the main branch +name: ποΈ Automatic PR Rebase +on: + issue_comment: + types: [created] +jobs: + rebase: + name: Rebase + if: > + github.event.issue.pull_request != '' + && contains(github.event.comment.body, '/rebase') + && github.event.comment.author_association == 'MEMBER' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + token: ${{ secrets.BOT_GITHUB_TOKEN }} + fetch-depth: 0 + - name: Rebase + uses: cirrus-actions/rebase@1.4 + env: + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/auto-tag-pr.yml b/.github/workflows/auto-tag-pr.yml index e05948eb..7ba98c96 100644 --- a/.github/workflows/auto-tag-pr.yml +++ b/.github/workflows/auto-tag-pr.yml @@ -1,16 +1,27 @@ # Creates a new tag, whenever the app version (in package.json) is updated in master -name: ποΈ Create Tag on Version Change +# And marks any relevant issues as fixed +name: ποΈ Release Tag new Versions on: push: branches: - master jobs: - build: + tag-pre-release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: butlerlogic/action-autotag@stable with: - GITHUB_TOKEN: '${{ secrets.BOT_GITHUB_TOKEN }}' + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} strategy: package commit_message_template: "π {{number}} {{message}} (by {{author}})\nSHA: {{sha}}\n." + mark-issue-fixed: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: butlerlogic/action-autotag@stable + - name: Label Fixed Issues + uses: gh-bot/fix-labeler@master + with: + token: ${{ secrets.BOT_GITHUB_TOKEN }} + label: 'β Fixed' \ No newline at end of file diff --git a/.github/workflows/check-duplicate-issues.yml b/.github/workflows/check-duplicate-issues.yml new file mode 100644 index 00000000..09d75bb6 --- /dev/null +++ b/.github/workflows/check-duplicate-issues.yml @@ -0,0 +1,22 @@ +# Attempts to auto-detect weather an issue is a duplicate, and adds a comment +name: π― Issue Duplicate Check +on: + issues: + types: [opened, edited] +jobs: + check-duplicate: + runs-on: ubuntu-latest + steps: + - uses: wow-actions/potential-duplicates@v1 + with: + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + filter: '' + exclude: '[BUG] [QUESTION] [FEEDBACK] [SHOWCASE]' + label: 'πΈοΈ Potential Duplicate' + state: all + threshold: 0.6 + reactions: 'eyes' + comment: > + Potential duplicates: {{#issues}} + - [#{{ number }}] {{ title }} ({{ accuracy }}%) + {{/issues}} \ No newline at end of file diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 9c448e11..86fa3222 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -13,7 +13,7 @@ jobs: uses: actions/stale@v4 with: repo-token: ${{ secrets.BOT_GITHUB_TOKEN }} - days-before-stale: 42 + days-before-stale: 30 days-before-close: 5 operations-per-run: 30 remove-stale-when-updated: true @@ -41,9 +41,9 @@ jobs: uses: actions/stale@v4 with: repo-token: ${{ secrets.BOT_GITHUB_TOKEN }} - days-before-stale: 7 + days-before-stale: 5 days-before-close: 3 - operations-per-run: 10 + operations-per-run: 30 remove-stale-when-updated: true stale-issue-message: > Hello! Looks like additional info is required for this issue to be addressed. @@ -55,3 +55,25 @@ jobs: close-issue-label: 'πΈοΈ Inactive' exempt-issue-labels: 'π Keep Open' exempt-pr-labels: 'π Keep Open' + + # Comment on issues that I should have replied to + - name: Notify Repo Owner to Respond + uses: actions/stale@v4 + with: + repo-token: ${{ secrets.BOT_GITHUB_TOKEN }} + days-before-stale: 7 + days-before-close: 365 + operations-per-run: 30 + remove-stale-when-updated: true + stale-issue-message: Hey @Lissy93 - Don't forget to respond! + stale-pr-message: Hey @Lissy93 - Don't forget to respond! + only-labels: 'π€ Awaiting Maintainer Response' + labels-to-remove-when-unstale: 'π€ Awaiting Maintainer Response' + close-issue-message: 'Closed due to no response from repo author for over a year' + close-pr-message: 'Closed due to no response from repo author for over a year' + stale-issue-label: 'π€ Awaiting Maintainer Response' + stale-pr-label: 'π€ Awaiting Maintainer Response' + close-issue-label: 'πΈοΈ Inactive' + close-pr-label: 'πΈοΈ Inactive' + exempt-issue-labels: 'π Keep Open' + exempt-pr-labels: 'π Keep Open' \ No newline at end of file diff --git a/.github/workflows/docs-link-checker.yml b/.github/workflows/docs-link-checker.yml new file mode 100644 index 00000000..e3a3faad --- /dev/null +++ b/.github/workflows/docs-link-checker.yml @@ -0,0 +1,27 @@ +# Checks for any broken links in the docs, and raises an issue if found +name: π Broken Link Checker +on: + repository_dispatch: + workflow_dispatch: + schedule: + - cron: '0 1 * * 0' # At 01:00 on Sunday. +jobs: + link-checker: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Check for Broken Links + uses: lycheeverse/lychee-action@v1.0.8 + with: + args: --verbose --no-progress **/*.md **/*.html + env: + GITHUB_TOKEN: ${{secrets.BOT_GITHUB_TOKEN}} + LYCHEE_OUT: .github/broken-link-report.md + + - name: Raise an Issue with Results + uses: peter-evans/create-issue-from-file@v3 + with: + title: '[DOCS] Broken Links found in Documentation' + content-filepath: .github/broken-link-report.md + labels: 'π Docs, π©βπ» Good First Issue, π€ Low Priority, π€ Auto' \ No newline at end of file diff --git a/.github/workflows/domain-expirey-check.yml b/.github/workflows/domain-expirey-check.yml new file mode 100644 index 00000000..12a21ab4 --- /dev/null +++ b/.github/workflows/domain-expirey-check.yml @@ -0,0 +1,43 @@ +name: π Check Docs Domain Expiry +on: + workflow_dispatch: + schedule: + - cron: '0 1 * * 0' # At 01:00 on Sunday. +jobs: + check-domain: + runs-on: ubuntu-latest + name: Check domain + strategy: + matrix: + domain: + - https://dashy.to + steps: + - name: Check domain SSL and registry expire date + id: check-domain + uses: codex-team/action-check-domain@v1 + with: + url: ${{ matrix.domain }} + - name: Raise issue if domain expiring soon + if: ${{ steps.check-domain.outputs.paid-till-days-left && steps.check-domain.outputs.paid-till-days-left < 30 }} + uses: rishabhgupta/git-action-issue@v2 + with: + token: ${{ secrets.BOT_GITHUB_TOKEN }} + assignees: Lissy93 + title: '[WEBSITE] Domain Expiring Soon' + body: > + **Priority Notice** + Domain, ${{ matrix.domain }} will expire in ${{ steps.check-domain.outputs.paid-till-days-left }} days. + @Lissy93 - Please take action immediately to prevent any downtime + + - name: Raise issue if SSL Cert expiring soon + if: ${{ steps.check-domain.outputs.ssl-expire-days-left && steps.check-domain.outputs.ssl-expire-days-left < 14 }} + uses: rishabhgupta/git-action-issue@v2 + with: + token: ${{ secrets.BOT_GITHUB_TOKEN }} + assignees: Lissy93 + title: '[WEBSITE] SSL Cert Expiring Soon' + body: > + **Priority Notice** + The SSL Certificate for ${{ matrix.domain }} will expire in ${{ ssl-expire-days-left }} days, on ${{ steps.check-domain.outputs.ssl-expire-date }}. + @Lissy93 - Please take action immediately to prevent any downtime + diff --git a/.github/workflows/generate-credits.yml b/.github/workflows/generate-credits.yml index e7b02aa0..f701ff32 100644 --- a/.github/workflows/generate-credits.yml +++ b/.github/workflows/generate-credits.yml @@ -65,4 +65,18 @@ jobs: committer_username: liss-bot committer_email: liss-bot@d0h.co - + make-author-list: + runs-on: ubuntu-latest + steps: + - name: Checkout ποΈ + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: wow-actions/update-authors@v1 + with: + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + sort: commits + bots: true + path: .github/AUTHORS.txt + commit: ':blue_heart: Makes author list' + template: '{{name}} <{{email}}> - {{commits}} commits' diff --git a/.github/workflows/get-size.yml b/.github/workflows/get-size.yml index f2576fef..3ce961af 100644 --- a/.github/workflows/get-size.yml +++ b/.github/workflows/get-size.yml @@ -1,5 +1,5 @@ # Adds a comment to new PRs, showing the compressed size and size difference of new code -# And labels the PR based on the number of lines changes +# And also labels the PR based on the number of lines changes name: π Check PR Size on: [pull_request] jobs: @@ -13,18 +13,26 @@ jobs: uses: preactjs/compressed-size-action@v2 with: repo-token: ${{ secrets.BOT_GITHUB_TOKEN }} - pattern: "./dist/**/**" + pattern: './dist/**/*.{js,css,html}' + strip-hash: '[-|.](\w{32}|\w{8}).' + exclude: '{./dist/manifest.json,**/*.map,**/node_modules/**}' + minimum-change-threshold: 100 # Check number of lines of code added - name: Label based on Lines of Code uses: codelytv/pr-size-labeler@v1 - with: - GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} - xs_max_size: '10' - s_max_size: '100' - m_max_size: '500' - l_max_size: '1000' - fail_if_xl: 'false' - message_if_xl: > - It looks like this PR is very large (over 1000 lines). - Try to avoid addressing multiple issues in a single PR, and - in the future consider breaking large tasks down into smaller steps. + with: + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + xs_max_size: '10' + s_max_size: '100' + m_max_size: '500' + l_max_size: '1000' + s_label: 'π© PR - Small' + m_label: 'π¨ PR - Medium' + l_label: 'π§ PR - Large' + xl_label: 'π₯ PR - XL' + fail_if_xl: 'false' + message_if_xl: > + It looks like this PR is very large (over 1000 lines). + Try to avoid addressing multiple issues in a single PR, and + in the future consider breaking large tasks down into smaller steps. + This it to make reviewing, testing, reverting and general quality management easier. diff --git a/.github/workflows/issue-spam-control.yml b/.github/workflows/issue-spam-control.yml index c10a6521..cb445b3e 100644 --- a/.github/workflows/issue-spam-control.yml +++ b/.github/workflows/issue-spam-control.yml @@ -1,12 +1,12 @@ -# Will add a comment and close new issues opened by users that may be spam, or have not starred -# Is still a work in progress, will also detect if user has previous activity in repo and check when joined GH +# Will add a comment and close any new issues opened by +# users who have not yet committed to, or starred the repo name: π― Issue Spam Control on: issues: types: [opened, reopened] jobs: - check: - if: ${{ ! contains( github.event.issue.labels.*.name, 'keep-open') }} + check-user: + if: ${{ ! contains( github.event.issue.labels.*.name, 'keep-open') && github.event.comment.author_association != 'CONTRIBUTOR' }} runs-on: ubuntu-latest name: Close issue opened by non-stargazer steps: diff --git a/.github/workflows/label-sponsors.yml b/.github/workflows/label-sponsors.yml index a18a4b85..5acab87d 100644 --- a/.github/workflows/label-sponsors.yml +++ b/.github/workflows/label-sponsors.yml @@ -2,8 +2,6 @@ # In order to allow their request can be prioritized name: π― Label sponsors on: - pull_request: - types: [opened] issues: types: [opened] jobs: diff --git a/.github/workflows/pr-labler.yml b/.github/workflows/pr-labler.yml new file mode 100644 index 00000000..3f92e5c4 --- /dev/null +++ b/.github/workflows/pr-labler.yml @@ -0,0 +1,12 @@ +# Labels pull requests based on their branch name +name: π‘ PR Branch Labeler +on: pull_request +jobs: + label-pr: + runs-on: ubuntu-latest + steps: + - name: Label PR + if: github.event.action == 'opened' + uses: ffittschen/pr-branch-labeler@v1 + with: + repo-token: ${{ secrets.BOT_GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/remove-stale-label.yml b/.github/workflows/remove-stale-label.yml index 6eab2210..fea0fc4f 100644 --- a/.github/workflows/remove-stale-label.yml +++ b/.github/workflows/remove-stale-label.yml @@ -1,13 +1,13 @@ # When a new comment is added to an issue, if it had the Stale or Awaiting User Response labels, # then those labels will be removed, providing it was not user lissy93 who added the commend. -name: π― Remove Stale Label on Update +name: π― Add/ Remove Awaiting Response Labels on: issue_comment: types: [created] jobs: remove-stale: runs-on: ubuntu-latest - if: ${{ github.event.inputs.name != 'liss-bot' }} + if: ${{ github.event.inputs.name != 'liss-bot' && github.event.inputs.name != 'lissy93' }} steps: - name: Remove Stale labels when Updated uses: actions-cool/issues-helper@v2 @@ -16,3 +16,27 @@ jobs: token: ${{ secrets.BOT_GITHUB_TOKEN }} issue-number: ${{ github.event.issue.number }} labels: 'π Awaiting User Response,β°οΈ Stale' + + add-awaiting-author: + runs-on: ubuntu-latest + if: ${{ github.event.inputs.name != 'liss-bot' && github.event.inputs.name != 'lissy93' }} + steps: + - name: Add Awaiting Author labels when Updated + uses: actions-cool/issues-helper@v2 + with: + actions: add-labels + token: ${{ secrets.BOT_GITHUB_TOKEN }} + issue-number: ${{ github.event.issue.number }} + labels: 'π€ Awaiting Maintainer Response' + + remove-awaiting-author: + runs-on: ubuntu-latest + if: ${{ github.event.inputs.name == 'lissy93' }} + steps: + - name: Remove Awaiting Author labels when Updated + uses: actions-cool/issues-helper@v2 + with: + actions: remove-labels + token: ${{ secrets.BOT_GITHUB_TOKEN }} + issue-number: ${{ github.event.issue.number }} + labels: 'π€ Awaiting Maintainer Response' diff --git a/.github/workflows/repo-visualization.yml b/.github/workflows/repo-visualization.yml index f0fdc46c..8bf8863e 100644 --- a/.github/workflows/repo-visualization.yml +++ b/.github/workflows/repo-visualization.yml @@ -1,16 +1,17 @@ -# Generates diagram showing file breakdown -name: π Generate Repo Visualization +# Generates series of diagrams and visualizations +name: π Generate Repo Stats on: workflow_dispatch: # Manual dispatch schedule: - cron: '0 1 * * 0' # At 01:00 on Sunday. + jobs: - build: + # File structure chart + file-structure: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@master - - name: Generate File Structure Diagram uses: githubocto/repo-visualizer@0.7.1 with: @@ -19,7 +20,28 @@ jobs: excluded_paths: dist,node_modules commit_message: ':yellow_heart: Updates repo diagram' branch: master - + + # Hercules git branching stats + git-stats: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@master + with: + fetch-depth: 0 + - name: Hercules + uses: src-d/hercules@master + - uses: actions/upload-artifact@master + with: + name: hercules_charts + path: hercules_charts.tar + + # Lowlighter metrics community metrics + community-stats: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@master - name: Generate Repo Metrics uses: lowlighter/metrics@latest with: @@ -32,7 +54,7 @@ jobs: user: Lissy93 repo: dashy delay: 5 - + - name: Generate License Metrics uses: lowlighter/metrics@latest with: @@ -67,5 +89,4 @@ jobs: plugin_contributors_ignored: bot plugin_contributors_contributions: yes plugin_contributors_sections: contributors - - + \ No newline at end of file diff --git a/.github/workflows/save-repo-analytics.yml b/.github/workflows/save-repo-analytics.yml new file mode 100644 index 00000000..a385d15a --- /dev/null +++ b/.github/workflows/save-repo-analytics.yml @@ -0,0 +1,15 @@ +name: π Save Repo Analytics +on: + workflow_dispatch: + schedule: + - cron: '0 1 * * 0' # At 01:00 on Sunday. +jobs: + gen-stats: + runs-on: ubuntu-latest + steps: + - name: Repo Analytics + uses: jgehrcke/github-repo-stats@HEAD + with: + repository: lissy93/dashy + databranch: DATA/repo-stats + ghtoken: ${{ secrets.BOT_GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/unfurl-links.yml b/.github/workflows/unfurl-links.yml new file mode 100644 index 00000000..95a8feee --- /dev/null +++ b/.github/workflows/unfurl-links.yml @@ -0,0 +1,17 @@ +# Expands any raw pasted link in comments. Useful so people know what they're clicking +name: π― Unfurl Links +on: + issues: + types: [opened, edited] + issue_comment: + types: [created, edited] + pull_request: + types: [opened, edited] +jobs: + run: + runs-on: ubuntu-latest + steps: + - uses: wow-actions/unfurl-links@v1 + with: + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + raw: true diff --git a/docs/alternate-views.md b/docs/alternate-views.md index de72cd1a..29dc032c 100644 --- a/docs/alternate-views.md +++ b/docs/alternate-views.md @@ -14,7 +14,9 @@ This is the main page that you will land on when you first launch the applicatio ### Workspace The workspace view displays your links in a sidebar on the left-hand side, and apps are launched within Dashy. This enables you to use all of your self-hosted apps from one place, and makes multi-tasking easy. -In the workspace view, you can keep previously opened websites/ apps open in the background, by setting `appConfig.enableMultiTasking: true`. This comes at the cost of performance, but does mean that your session with each app is preserved, enabling you to quickly switch between your apps. +In the workspace view, you can opt to keep previously opened websites/ apps open in the background, by setting `appConfig.enableMultiTasking: true`. This comes at the cost of performance, but does mean that your session with each app is preserved, enabling you to quickly switch between your apps. + +You can also specify a default app to be opened when you land on the workspace, by setting `appConfig.workspaceLandingUrl: https://app-to-open/`. If this app exists within your sections.items, then the corresponding section will also be expanded.
Example of Workspace View
diff --git a/docs/configuring.md b/docs/configuring.md
index 6ef15d12..d58dc1f2 100644
--- a/docs/configuring.md
+++ b/docs/configuring.md
@@ -82,8 +82,9 @@ Tips:
**`fontAwesomeKey`** | `string` | _Optional_ | If you have a font-awesome key, then you can use it here and make use of premium icons. It is a 10-digit alpha-numeric string from you're FA kit URL (e.g. `13014ae648`)
**`faviconApi`** | `enum` | _Optional_ | Only applicable if you are using favicons for item icons. Specifies which service to use to resolve favicons. Set to `local` to do this locally, without using an API. Services running locally will use this option always. Available options are: `local`, `faviconkit`, `google`, `clearbit`, `webmasterapi` and `allesedv`. Defaults to `faviconkit`. See [Icons](/docs/icons.md#favicons) for more info
**`auth`** | `object` | _Optional_ | All settings relating to user authentication. See [`auth`](#appconfigauth-optional)
-**`layout`** | `enum` | _Optional_ | App layout, either `horizontal`, `vertical`, `auto` or `sidebar`. Defaults to `auto`. This specifies the layout and direction of how sections are positioned on the home screen. This can also be modified from the UI.
+**`layout`** | `enum` | _Optional_ | Layout for homepage, either `horizontal`, `vertical` or `auto`. Defaults to `auto`. This specifies the layout and direction of how sections are positioned on the home screen. This can also be modified and overridden from the UI.
**`iconSize`** | `enum` | _Optional_ | The size of link items / icons. Can be either `small`, `medium,` or `large`. Defaults to `medium`. This can also be set directly from the UI.
+**`colCount`** | `number` | _Optional_ | The number of columns of sections displayed on the homepage, using the default view. Should be in integer between `1` and `8`. Note that by default this is applied responsively, based on current screen size, and specifying a value here will override this behavior, which may not be desirable.
**`theme`** | `string` | _Optional_ | The default theme for first load (you can change this later from the UI)
**`cssThemes`** | `string[]` | _Optional_ | An array of custom theme names which can be used in the theme switcher dropdown
**`customColors`** | `object`| _Optional_ | Enables you to apply a custom color palette to any given theme. Use the theme name (lowercase) as the key, for an object including key-value-pairs, with the color variable name as keys, and 6-digit hex code as value. See [Theming](/docs/theming.md#modifying-theme-colors) for more info
@@ -91,6 +92,7 @@ Tips:
**`customCss`** | `string` | _Optional_ | Raw CSS that will be applied to the page. This can also be set from the UI. Please minify it first.
**`hideComponents`** | `object` | _Optional_ | A list of key page components (header, footer, search, settings, etc) that are present by default, but can be removed using this option. See [`appConfig.hideComponents`](#appconfighideComponents-optional)
**`enableMultiTasking`** | `boolean` | _Optional_ | If set to true, will keep apps open in the background when in the workspace view. Useful for quickly switching between multiple sites, and preserving their state, but comes at the cost of performance.
+**`workspaceLandingUrl`** | `string` | _Optional_ | The URL or an app, service or website to launch when the workspace view is opened, before another service has been launched
**`allowConfigEdit`** | `boolean` | _Optional_ | Should prevent / allow the user to write configuration changes to the conf.yml from the UI. When set to `false`, the user can only apply changes locally using the config editor within the app, whereas if set to `true` then changes can be written to disk directly through the UI. Defaults to `true`. Note that if authentication is enabled, the user must be of type `admin` in order to apply changes globally.
**`enableErrorReporting`** | `boolean` | _Optional_ | Enable reporting of unexpected errors and crashes. This is off by default, and **no data will ever be captured unless you explicitly enable it**. Turning on error reporting helps previously unknown bugs get discovered and fixed. Dashy uses [Sentry](https://github.com/getsentry/sentry) for error reporting. Defaults to `false`.
**`sentryDsn`** | `boolean` | _Optional_ | If you need to monitor errors in your instance, then you can use Sentry to collect and process bug reports. Sentry can be self-hosted, or used as SaaS, once your instance is setup, then all you need to do is pass in the DSN here, and enable error reporting. You can learn more on the [Sentry DSN Docs](https://docs.sentry.io/product/sentry-basics/dsn-explainer/). Note that this will only ever be used if `enableErrorReporting` is explicitly enabled.
diff --git a/docs/icons.md b/docs/icons.md
index 2b4bcd53..df0b5850 100644
--- a/docs/icons.md
+++ b/docs/icons.md
@@ -75,10 +75,10 @@ If for a given service none of the APIs work in your situation, and nor does loc
---
## Generative Icons
-Uses a unique and programmatically generated icon for a given service. This is particularly useful when you have a lot of similar services with a different IP or port, and no specific icon. These icons are generated with [ipsicon.io](https://ipsicon.io/). To use this option, just set an item's to: `icon: generative`.
+Uses a unique and programmatically generated icon for a given service. This is particularly useful when you have a lot of similar services with a different IP or port, and no specific icon. These icons are generated with [DiceBear](https://avatars.dicebear.com/), and use a hash of the services domain/ ip for entropy, so each domain will always have the same icon. To use this option, just set an item's to: `icon: generative`.
-
+
+
+
{{ $t('config.css-note-label') }}: {{ $t('config.css-note-l1') }} {{ $t('config.css-note-l2') }} {{ $t('config.css-note-l3') }} @@ -19,6 +19,7 @@