mirror of
https://github.com/Lissy93/dashy.git
synced 2024-12-23 17:03:59 +03:00
🔀 Merge pull request #1481 from Lissy93/FEAT/2.1.2_dependency-updates-n-fixes
[FEAT] Version 2.1.2 (+dependency updates, bug fixes)
This commit is contained in:
commit
d4247b4fee
13
.github/workflows/apply-done-label.yml
vendored
13
.github/workflows/apply-done-label.yml
vendored
@ -1,13 +0,0 @@
|
||||
# When a PR is merged, any associated issues will have a Done label applied
|
||||
# The label will depend on the issue type, see: ./github/close-label.yml
|
||||
name: 💡 Apply Done Label
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, merged, closed]
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: logerfo/close-label@0.0.4
|
||||
with:
|
||||
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
15
.github/workflows/assign-reviewer.yml
vendored
15
.github/workflows/assign-reviewer.yml
vendored
@ -1,15 +0,0 @@
|
||||
# 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
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
5
.github/workflows/auto-tag-pr.yml
vendored
5
.github/workflows/auto-tag-pr.yml
vendored
@ -8,6 +8,8 @@ on:
|
||||
jobs:
|
||||
tag-pre-release:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
outputs:
|
||||
tag: ${{ steps.autotag.outputs.tagname }}
|
||||
steps:
|
||||
@ -25,8 +27,9 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ncipollo/release-action@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
tag: ${{ needs.tag-pre-release.outputs.tag }}
|
||||
bodyFile: ".github/LATEST_CHANGELOG.md"
|
||||
mark-issue-fixed:
|
||||
|
25
.github/workflows/build-app.yml
vendored
25
.github/workflows/build-app.yml
vendored
@ -1,25 +0,0 @@
|
||||
# This action builds and deploys the master branch
|
||||
name: 🏗️ Build App to Branch
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v2.3.1
|
||||
- name: Install and Build 🔧
|
||||
run: |
|
||||
npm install
|
||||
npm run build
|
||||
- name: Deploy 🚀
|
||||
uses: JamesIves/github-pages-deploy-action@4.1.4
|
||||
if: ${{ github.repository_owner == 'lissy93' }}
|
||||
with:
|
||||
branch: dev-demo
|
||||
folder: dist
|
||||
|
13
.github/workflows/cache-artifacts.yml
vendored
13
.github/workflows/cache-artifacts.yml
vendored
@ -1,13 +0,0 @@
|
||||
# Caches artifacts, including NPM dependencies, to speed up build times
|
||||
name: 🏗️ Caching Artifacts
|
||||
on: push
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
22
.github/workflows/check-duplicate-issues.yml
vendored
22
.github/workflows/check-duplicate-issues.yml
vendored
@ -1,22 +0,0 @@
|
||||
# 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 || secrets.GITHUB_TOKEN }}
|
||||
filter: ''
|
||||
exclude: '[BUG] [QUESTION] [FEEDBACK] [SHOWCASE]'
|
||||
label: '🕸️ Potential Duplicate'
|
||||
state: all
|
||||
threshold: 0.75
|
||||
reactions: 'eyes'
|
||||
comment: >
|
||||
Potential duplicates: {{#issues}}
|
||||
- [#{{ number }}] {{ title }} ({{ accuracy }}%)
|
||||
{{/issues}}
|
20
.github/workflows/code-linter.yml
vendored
20
.github/workflows/code-linter.yml
vendored
@ -1,20 +0,0 @@
|
||||
# Lints code merged into master branch
|
||||
name: 🌈 Lint Code Base
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master]
|
||||
jobs:
|
||||
build:
|
||||
name: Lint Code Base
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Lint Code Base
|
||||
uses: github/super-linter@v4
|
||||
env:
|
||||
VALIDATE_ALL_CODEBASE: false
|
||||
DEFAULT_BRANCH: master
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
30
.github/workflows/code-spell-check.yml
vendored
30
.github/workflows/code-spell-check.yml
vendored
@ -1,30 +0,0 @@
|
||||
# Finds typos in the English language within the app, submits a PR with fixes
|
||||
name: 🌈 Spelling Auto-Fix
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
types: [opened]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
if: startsWith(github.head_ref, 'AUTO/') == false
|
||||
uses: actions/checkout@v2
|
||||
- name: Spell Check
|
||||
if: startsWith(github.head_ref, 'AUTO/') == false
|
||||
uses: sobolevn/misspell-fixer-action@master
|
||||
- name: Create PR
|
||||
uses: peter-evans/create-pull-request@v3.10.1
|
||||
if: startsWith(github.head_ref, 'AUTO/') == false
|
||||
with:
|
||||
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
base: master
|
||||
commit-message: ':pencil2: Auto-fix typos in text'
|
||||
title: '[AUTO] Fix spelling and language'
|
||||
branch: 'AUTO/spelling-corrections'
|
||||
committer: 'Liss-Bot <alicia-gh-bot@mail.as93.net>'
|
||||
assignees: Lissy93
|
||||
reviewers: Lissy93
|
33
.github/workflows/docs-link-checker.yml
vendored
33
.github/workflows/docs-link-checker.yml
vendored
@ -1,33 +0,0 @@
|
||||
# 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 1 * *' # Run monthly
|
||||
jobs:
|
||||
link-checker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Load Excludes
|
||||
run: |
|
||||
LYCHEE_EXCLUDE=$(sed -e :a -e 'N;s/\n/ /;ta' .github/.lycheeexclude)
|
||||
echo "LYCHEE_EXCLUDE=$LYCHEE_EXCLUDE" >> $GITHUB_ENV
|
||||
|
||||
- name: Check for Broken Links
|
||||
uses: lycheeverse/lychee-action@v1.0.8
|
||||
with:
|
||||
args: --verbose -a 200,302,304,429 --exclude ${{ env.LYCHEE_EXCLUDE }} --exclude-mail --no-progress **/*.md
|
||||
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:
|
||||
token: ${{secrets.BOT_GITHUB_TOKEN}}
|
||||
title: '[DOCS] Broken Links found in Documentation'
|
||||
content-filepath: .github/broken-link-report.md
|
||||
labels: '📕 Docs, 👩💻 Good First Issue, 💤 Low Priority, 🤖 Auto'
|
18
.github/workflows/issue-translator.yml
vendored
18
.github/workflows/issue-translator.yml
vendored
@ -1,18 +0,0 @@
|
||||
# Will translate any issues opened in foraign language, and add the English translation as a comment
|
||||
name: 🎯 Issue Translator
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: tomsun28/issues-translate-action@v2.5
|
||||
with:
|
||||
BOT_GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
BOT_LOGIN_NAME: liss-bot
|
||||
IS_MODIFY_TITLE: true
|
||||
CUSTOM_BOT_NOTE: It looks like this issue isn't in English - not a problem, here's the translation! 🇬🇧
|
16
.github/workflows/label-sponsors.yml
vendored
16
.github/workflows/label-sponsors.yml
vendored
@ -1,16 +0,0 @@
|
||||
# Adds a label to any issues raised by a sponsor of Lissy93/Dashy
|
||||
# In order to allow their request can be prioritized
|
||||
name: 🎯 Label sponsors
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
jobs:
|
||||
build:
|
||||
name: is-sponsor-label
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: JasonEtco/is-sponsor-label-action@v1
|
||||
with:
|
||||
label: Priority Request - Sponsor 💖
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
18
.github/workflows/label-top-issues.yml
vendored
18
.github/workflows/label-top-issues.yml
vendored
@ -1,18 +0,0 @@
|
||||
# Applies the 'Top Issue' label to tickets with most user reactions
|
||||
name: 🎯 Label Top Issues
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 1 * * *' # Run at 01:00 each day
|
||||
jobs:
|
||||
labelTopIssues:
|
||||
name: Label Top Issues
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Label Issues
|
||||
uses: adamzolyak/top-issues-action@master
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
TOP_NUMBER_OF_ISSUES: 10
|
||||
TOP_LABEL_NAME: "👍 Top 10 Issue!"
|
||||
TOP_LABEL_COLOR: FBCA04
|
20
.github/workflows/mind-your-language.yml
vendored
20
.github/workflows/mind-your-language.yml
vendored
@ -1,20 +0,0 @@
|
||||
# Detects offensive language in comments and takes reaction
|
||||
name: 🎯 Mind your language
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request:
|
||||
types: [opened]
|
||||
jobs:
|
||||
echo_issue_comment:
|
||||
runs-on: ubuntu-latest
|
||||
name: profanity check
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Profanity check step
|
||||
uses: tailaiw/mind-your-language-action@v1.0.3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
13
.github/workflows/pr-commenter.yml
vendored
13
.github/workflows/pr-commenter.yml
vendored
@ -1,13 +0,0 @@
|
||||
# Adds comments to PR, based on which files are modified
|
||||
name: 💡 PR Commenter
|
||||
on: [ pull_request_target ]
|
||||
jobs:
|
||||
pr-comment:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: exercism/pr-commenter-action@v1.3.0
|
||||
with:
|
||||
github-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
config-file: .github/pr-auto-comments.yml
|
||||
template-variables: |
|
||||
{ "prAuthor": "${{ github.event.pull_request.user.login }}" }
|
12
.github/workflows/pr-labler.yml
vendored
12
.github/workflows/pr-labler.yml
vendored
@ -1,12 +0,0 @@
|
||||
# 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 || secrets.GITHUB_TOKEN }}
|
13
.github/workflows/raise-issue-from-todo.yml
vendored
13
.github/workflows/raise-issue-from-todo.yml
vendored
@ -1,13 +0,0 @@
|
||||
# Finds any TO-DO notes within the code, and opens up an issue for it to be fixed
|
||||
name: 🌈 Open issue for Todos
|
||||
on: ["push"]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: "ubuntu-latest"
|
||||
steps:
|
||||
- uses: "actions/checkout@master"
|
||||
- name: "TODO to Issue"
|
||||
uses: "alstr/todo-to-issue-action@v4.2"
|
||||
id: "todo"
|
||||
with:
|
||||
TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
92
.github/workflows/repo-visualization.yml
vendored
92
.github/workflows/repo-visualization.yml
vendored
@ -1,92 +0,0 @@
|
||||
# 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:
|
||||
# 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:
|
||||
root_path: 'src/'
|
||||
output_file: docs/assets/repo-visualization.svg
|
||||
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:
|
||||
token: ${{ secrets.LISSY93_PAT }}
|
||||
committer_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
committer_branch: master
|
||||
committer_message: ':purple_heart: Adds repo metrics'
|
||||
filename: docs/assets/repo-metrics.*
|
||||
template: classic
|
||||
user: Lissy93
|
||||
repo: dashy
|
||||
delay: 5
|
||||
|
||||
- name: Generate License Metrics
|
||||
uses: lowlighter/metrics@latest
|
||||
with:
|
||||
token: ${{ secrets.LISSY93_PAT }}
|
||||
committer_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
committer_branch: master
|
||||
committer_message: ':purple_heart: Adds license metrics'
|
||||
filename: docs/assets/license-metrics.*
|
||||
template: repository
|
||||
user: Lissy93
|
||||
repo: dashy
|
||||
delay: 5
|
||||
plugin_licenses: yes
|
||||
plugin_licenses_setup: yarn build
|
||||
plugin_licenses_ratio: yes
|
||||
plugin_licenses_legal: yes
|
||||
|
||||
- name: Generate Contributor Metrics
|
||||
uses: lowlighter/metrics@latest
|
||||
with:
|
||||
token: ${{ secrets.LISSY93_PAT }}
|
||||
committer_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
committer_branch: master
|
||||
committer_message: ':purple_heart: Adds contributor metrics'
|
||||
filename: docs/assets/controbutor-metrics.*
|
||||
user: Lissy93
|
||||
repo: dashy
|
||||
delay: 5
|
||||
plugin_contributors: yes
|
||||
plugin_contributors_base: ""
|
||||
plugin_contributors_head: master
|
||||
plugin_contributors_ignored: bot
|
||||
plugin_contributors_contributions: yes
|
||||
plugin_contributors_sections: contributors
|
||||
|
15
.github/workflows/save-repo-analytics.yml
vendored
15
.github/workflows/save-repo-analytics.yml
vendored
@ -1,15 +0,0 @@
|
||||
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 || secrets.GITHUB_TOKEN }}
|
19
.github/workflows/security-scanning.yml
vendored
19
.github/workflows/security-scanning.yml
vendored
@ -1,19 +0,0 @@
|
||||
# Uses Snyk to check for potential vulnerabilities, then sends results to GH security tab
|
||||
name: 💡 Vulnerability Scanning
|
||||
on: push
|
||||
jobs:
|
||||
security:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: Run Snyk to check for vulnerabilities
|
||||
uses: snyk/actions/node@master
|
||||
continue-on-error: true
|
||||
env:
|
||||
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
||||
with:
|
||||
args: --sarif-file-output=snyk.sarif
|
||||
- name: Upload result to GitHub Code Scanning
|
||||
uses: github/codeql-action/upload-sarif@v1
|
||||
with:
|
||||
sarif_file: snyk.sarif
|
17
.github/workflows/unfurl-links.yml
vendored
17
.github/workflows/unfurl-links.yml
vendored
@ -1,17 +0,0 @@
|
||||
# Expands any raw pasted link in comments. Useful so people know what they're clicking
|
||||
name: 🎯 Unfurl Links
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request:
|
||||
types: [opened]
|
||||
jobs:
|
||||
run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: wow-actions/unfurl-links@v1
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
raw: true
|
10
Dockerfile
10
Dockerfile
@ -1,4 +1,4 @@
|
||||
FROM node:16.13.2-alpine AS BUILD_IMAGE
|
||||
FROM node:20.11.1-alpine AS BUILD_IMAGE
|
||||
|
||||
# Set the platform to build image for
|
||||
ARG TARGETPLATFORM
|
||||
@ -16,16 +16,16 @@ WORKDIR /app
|
||||
|
||||
# Install app dependencies
|
||||
COPY package.json yarn.lock ./
|
||||
RUN yarn install --frozen-lockfile --network-timeout 1000000
|
||||
RUN yarn install --ignore-engines --frozen-lockfile --network-timeout 1000000
|
||||
|
||||
# Copy over all project files and folders to the working directory
|
||||
COPY . ./
|
||||
|
||||
# Build initial app for production
|
||||
RUN yarn build --mode production
|
||||
RUN NODE_OPTIONS=--openssl-legacy-provider yarn build --mode production
|
||||
|
||||
# Production stage
|
||||
FROM node:16.13.2-alpine
|
||||
FROM node:20.11.1-alpine
|
||||
|
||||
# Define some ENV Vars
|
||||
ENV PORT=80 \
|
||||
@ -44,7 +44,7 @@ COPY --from=BUILD_IMAGE /app ./
|
||||
RUN rm dist/conf.yml
|
||||
|
||||
# Finally, run start command to serve up the built application
|
||||
CMD [ "yarn", "start" ]
|
||||
CMD [ "yarn", "build-and-start" ]
|
||||
|
||||
# Expose the port
|
||||
EXPOSE ${PORT}
|
||||
|
@ -228,6 +228,7 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)**
|
||||
**`statusCheckAcceptCodes`** | `string` | _Optional_ | If your service's response code is anything other than 2xx, then you can opt to specify an alternative success code. E.g. if you expect your server to return 403, but still want the status indicator to be green, set this value to `403`
|
||||
**`statusCheckMaxRedirects`** | `number` | _Optional_ | If your service redirects to another page, and you would like status checks to follow redirects, then specify the maximum number of redirects here. Defaults to `0` / will not follow redirects
|
||||
**`color`** | `string` | _Optional_ | An optional color for the text and font-awesome icon to be displayed in. Note that this will override the current theme and so may not display well
|
||||
**`rel`** | `string` | _Optional_ | The value of the `rel` attribute for the link. Useful for specifying the relationship between the target link/document and Dashy. Defaults to `noopener noreferrer`
|
||||
**`backgroundColor`** | `string` | _Optional_ | An optional background fill color for the that given item. Again, this will override the current theme and so might not display well against the background
|
||||
**`provider`** | `string` | _Optional_ | The name of the provider for a given service, useful for when including hosted apps. In some themes, this is visible under the item name
|
||||
**`displayData`** | `object` | _Optional_ | Meta-data to optionally override display settings for a given item. See [`displayData`](#itemdisplaydata-optional)
|
||||
|
@ -198,7 +198,6 @@ Some hosting providers required a bit of extra configuration, which was why I've
|
||||
> [!NOTE]
|
||||
> If you use a static hosting provider, then status checks, writing new config changes to disk from the UI, and triggering a rebuild through the UI will not be available. This is because these features need endpoints provided by Dashy's local Node server. Everything else should work just the same though.
|
||||
|
||||
|
||||
### Netlify
|
||||
|
||||
[![Deploy to Netlify](https://i.ibb.co/GtKMysT/deploy-netlify-button.png)](https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy)
|
||||
|
@ -19,6 +19,7 @@
|
||||
- [App Not Starting After Update to 2.0.4](#app-not-starting-after-update-to-204)
|
||||
- [Keycloak Redirect Error](#keycloak-redirect-error)
|
||||
- [Docker Directory Error](#docker-directory)
|
||||
- [Config not Saving on Vercel / Netlify / CDN](#user-content-config-not-saving-on-vercel--netlify--cdn)
|
||||
- [Config Not Updating](#config-not-updating)
|
||||
- [Config Still not Updating](#config-still-not-updating)
|
||||
- [Styles and Assets not Updating](#styles-and-assets-not-updating)
|
||||
@ -281,6 +282,17 @@ If you get an error similar to the one above, you are mounting a directory to th
|
||||
|
||||
---
|
||||
|
||||
## Config not Saving on Vercel / Netlify / CDN
|
||||
|
||||
If you're running Dashy using a static hosting provider (like Vercel), then there is no Node server, and so the save config action will not work via the UI.
|
||||
You'll instead need to copy the YAML after making your changes, and paste that into your `conf.yml` directly. If you've connected Vercel to git, then these changes will take effect automatically, once you commit your changes.
|
||||
|
||||
If you're running on Netlify, there are some cloud functions which take care of all the server endpoints (like status checking), so these will work as expected.
|
||||
|
||||
See also [#1465](https://github.com/Lissy93/dashy/issues/1465)
|
||||
|
||||
---
|
||||
|
||||
## Config Not Updating
|
||||
|
||||
Dashy has the option to save settings and config locally, in browser storage. Anything here will take precedence over whatever is in your config file, sometimes with unintended consequences. If you've updated the config file manually, and are not seeing changes reflected in the UI, then try visiting the site in Incognito mode. If that works, then the solution is just to clear local storage. This can be done from the config menu, under "Clear Local Settings".
|
||||
@ -557,8 +569,7 @@ For example:
|
||||
export NODE_OPTIONS=--openssl-legacy-provider
|
||||
```
|
||||
|
||||
For more info, see [webpack/webpack#14532](https://github.com/webpack/webpack/issues/14532) and [nodejs/node#40455](https://github.com/nodejs/node/issues/40455).
|
||||
This occurs because [Node 17+](https://medium.com/the-node-js-collection/node-js-17-is-here-8dba1e14e382) no longer supports MD4 as hash function, we're in the process of upgrading Dashy dependencies to all use SHA1 for hashing bundle IDs.
|
||||
This will be fixed once [webpack/webpack#17659](https://github.com/webpack/webpack/pull/17659) is merged.
|
||||
|
||||
---
|
||||
|
||||
|
22
package.json
22
package.json
@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "Dashy",
|
||||
"version": "2.1.1",
|
||||
"version": "2.1.2",
|
||||
"license": "MIT",
|
||||
"main": "server",
|
||||
"author": "Alicia Sykes <alicia@omg.lol> (https://aliciasykes.com)",
|
||||
"scripts": {
|
||||
"start": "node server",
|
||||
"start": "npm-run-all --parallel build-watch start",
|
||||
"dev": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
@ -14,12 +14,14 @@
|
||||
"build-and-start": "npm-run-all --parallel build-watch start",
|
||||
"validate-config": "node services/config-validator",
|
||||
"health-check": "node services/healthcheck",
|
||||
"dependency-audit": "npx improved-yarn-audit --ignore-dev-deps"
|
||||
"dependency-audit": "npx improved-yarn-audit --ignore-dev-deps",
|
||||
"static-start": "node server"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.0.0",
|
||||
"@formschema/native": "^2.0.0-beta.6",
|
||||
"@sentry/tracing": "^6.17.5",
|
||||
"@sentry/vue": "^6.17.4",
|
||||
"@sentry/tracing": "^7.102.1",
|
||||
"@sentry/vue": "^7.102.1",
|
||||
"ajv": "^8.10.0",
|
||||
"axios": "^1.6.0",
|
||||
"connect-history-api-fallback": "^1.6.0",
|
||||
@ -30,6 +32,7 @@
|
||||
"keycloak-js": "^20.0.3",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"remedial": "^1.0.8",
|
||||
"rss-parser": "3.13.0",
|
||||
"rsup-progress": "^3.2.0",
|
||||
"simple-icons": "^7.19.0",
|
||||
"v-jsoneditor": "^1.4.5",
|
||||
@ -43,11 +46,9 @@
|
||||
"vue-select": "^3.20.2",
|
||||
"vue-swatches": "^2.1.1",
|
||||
"vue-toasted": "^1.1.28",
|
||||
"vuex": "^3.6.2",
|
||||
"rss-parser": "3.13.0"
|
||||
"vuex": "^3.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@architect/sandbox": "^4.5.2",
|
||||
"@babel/preset-env": "^7.17.10",
|
||||
"@vue/cli-plugin-babel": "^4.5.15",
|
||||
"@vue/cli-plugin-eslint": "^4.5.15",
|
||||
@ -55,11 +56,10 @@
|
||||
"@vue/cli-service": "^4.5.15",
|
||||
"@vue/eslint-config-standard": "^4.0.0",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"eslint": "^7.24.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-airbnb": "^18.0.1",
|
||||
"eslint-plugin-vue": "^7.9.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"progress-bar-webpack-plugin": "^2.1.0",
|
||||
"sass": "^1.38.0",
|
||||
"sass-loader": "^7.1.0",
|
||||
"vue-cli-plugin-yaml": "^1.0.2",
|
||||
@ -67,7 +67,7 @@
|
||||
"vue-template-compiler": "^2.7.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0 <18.0.0"
|
||||
"node": ">=16.0.0 <21.6.2"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
|
@ -122,8 +122,10 @@ const app = express()
|
||||
res.end(JSON.stringify({ success: false, message: e }));
|
||||
}
|
||||
})
|
||||
// GET fallback endpoint
|
||||
.get('*', (req, res) => res.sendFile(path.join(__dirname, 'dist', 'index.html')));
|
||||
// If no other route is matched, serve up the index.html with a 404 status
|
||||
.use((req, res) => {
|
||||
res.status(404).sendFile(path.join(__dirname, 'dist', 'index.html'));
|
||||
});
|
||||
|
||||
/* Create HTTP server from app on port, and print welcome message */
|
||||
http.createServer(app)
|
||||
|
@ -115,7 +115,9 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.jsonData = this.config;
|
||||
const jsonData = { ...this.config };
|
||||
jsonData.sections = jsonData.sections.map(({ filteredItems, ...section }) => section);
|
||||
this.jsonData = jsonData;
|
||||
if (!this.allowWriteToDisk) this.saveMode = 'local';
|
||||
},
|
||||
methods: {
|
||||
|
@ -94,6 +94,7 @@ export default {
|
||||
const raw = rawAppConfig;
|
||||
const isEmptyObject = (obj) => (typeof obj === 'object' && Object.keys(obj).length === 0);
|
||||
const isEmpty = (value) => (value === undefined || isEmptyObject(value));
|
||||
|
||||
// Delete empty values
|
||||
Object.keys(raw).forEach(key => {
|
||||
if (isEmpty(raw[key])) delete raw[key];
|
||||
|
@ -9,7 +9,8 @@
|
||||
:target="anchorTarget"
|
||||
:class="`item ${makeClassList}`"
|
||||
v-tooltip="getTooltipOptions()"
|
||||
rel="noopener noreferrer" tabindex="0"
|
||||
:rel="`${item.rel || 'noopener noreferrer'}`"
|
||||
tabindex="0"
|
||||
:id="`link-${item.id}`"
|
||||
:style="customStyle"
|
||||
>
|
||||
@ -258,6 +259,9 @@ export default {
|
||||
overflow: hidden;
|
||||
span.text {
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,8 @@ export default {
|
||||
const isSubPag = !!this.$store.state.currentConfigInfo;
|
||||
const jsonConfig = config;
|
||||
if (isSubPag) delete jsonConfig.appConfig;
|
||||
jsonConfig.sections = jsonConfig.sections.map(({ filteredItems, ...section }) => section);
|
||||
|
||||
// 2. Convert JSON into YAML
|
||||
const yamlOptions = {};
|
||||
const strjsonConfig = JSON.stringify(jsonConfig);
|
||||
|
@ -292,11 +292,15 @@ const store = new Vuex.Store({
|
||||
InfoHandler('Color palette updated', InfoKeys.VISUAL);
|
||||
},
|
||||
[SET_ITEM_LAYOUT](state, layout) {
|
||||
state.config.appConfig.layout = layout;
|
||||
const newConfig = { ...state.config };
|
||||
newConfig.appConfig.layout = layout;
|
||||
state.config = newConfig;
|
||||
InfoHandler('Layout updated', InfoKeys.VISUAL);
|
||||
},
|
||||
[SET_ITEM_SIZE](state, iconSize) {
|
||||
state.config.appConfig.iconSize = iconSize;
|
||||
const newConfig = { ...state.config };
|
||||
newConfig.appConfig.iconSize = iconSize;
|
||||
state.config = newConfig;
|
||||
InfoHandler('Item size updated', InfoKeys.VISUAL);
|
||||
},
|
||||
[UPDATE_CUSTOM_CSS](state, customCss) {
|
||||
|
@ -93,8 +93,9 @@ export const getCustomColors = () => {
|
||||
* So that when the hotkey is pressed, the app/ service can be launched
|
||||
*/
|
||||
export const getCustomKeyShortcuts = () => {
|
||||
const Accumulator = new ConfigAccumulator();
|
||||
const results = [];
|
||||
const sections = config.sections || [];
|
||||
const sections = filterUserSections(Accumulator.sections()) || [];
|
||||
sections.forEach((section) => {
|
||||
const itemsWithHotKeys = section.items.filter(item => item.hotkey);
|
||||
results.push(itemsWithHotKeys.map(item => ({ hotkey: item.hotkey, url: item.url })));
|
||||
|
@ -982,6 +982,11 @@
|
||||
"type": "number",
|
||||
"description": "A numeric shortcut key, between 0 and 9. Useful for quickly launching frequently used applications"
|
||||
},
|
||||
"rel": {
|
||||
"title": "rel",
|
||||
"type": "string",
|
||||
"description": "The rel attribute for the link. For specifying the relationship between the current document and the linked document"
|
||||
},
|
||||
"tags": {
|
||||
"title": "Tags",
|
||||
"type": "array",
|
||||
@ -1086,6 +1091,11 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"filteredItems": {
|
||||
"title": "Filtered Items - temp",
|
||||
"type": "array",
|
||||
"description": "This attribute will be deprecated in the next release - do not use!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ export const welcomeMsg = () => {
|
||||
/* Prints warning message, usually when there is a configuration error */
|
||||
export const warningMsg = (message, stack) => {
|
||||
console.info(
|
||||
`\n%c⚠️ Warning ⚠️%c \n${message} \n\n%cThis is likely not an issue with Dashy, but rather your configuration. If you think it is a bug, please open a ticket on GitHub: https://git.io/JukXk`,
|
||||
`\n%c⚠️ Warning ⚠️%c \n${message} \n\n%cThis is likely not an issue with Dashy, but rather your configuration.\nIf you think it is a bug, please open a ticket on GitHub: https://git.io/JukXk`,
|
||||
"color:#ceb73f; background: #ceb73f33; font-size:1.5rem; padding:0.15rem; margin: 1rem auto; font-family: Rockwell, Tahoma, 'Trebuchet MS', Helvetica; border: 2px solid #ceb73f; border-radius: 4px; font-weight: bold; text-shadow: 1px 1px 1px #000000bf;",
|
||||
'font-weight: bold; font-size: 1rem;color: #ceb73f;',
|
||||
"color: #ceb73f; font-size: 0.75rem; font-family: Tahoma, 'Trebuchet MS', Helvetica;",
|
||||
|
@ -89,6 +89,9 @@ export default {
|
||||
|
||||
<style scoped lang="scss">
|
||||
.work-space {
|
||||
min-height: calc(100vh - var(--footer-height));
|
||||
min-height: fit-content;
|
||||
}
|
||||
:global(footer) {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -2,7 +2,6 @@
|
||||
* Global config for the main Vue app. ES7 not supported here.
|
||||
* See docs for all config options: https://cli.vuejs.org/config
|
||||
*/
|
||||
const ProgressBarPlugin = require('progress-bar-webpack-plugin');
|
||||
|
||||
// Get app mode: production, development or test
|
||||
const mode = process.env.NODE_ENV || 'production';
|
||||
@ -19,10 +18,6 @@ const publicPath = process.env.BASE_URL || '/';
|
||||
// Should enable Subresource Integrity (SRI) on link and script tags
|
||||
const integrity = process.env.INTEGRITY === 'true';
|
||||
|
||||
// Format for progress bar, shown while app building
|
||||
const progressFormat = '\x1b[1m\x1b[36mBuilding Dashy\x1b[0m '
|
||||
+ '[\x1b[1m\x1b[32m:bar\x1b[0m] :percent (:elapsed seconds)';
|
||||
|
||||
// Webpack Config
|
||||
const configureWebpack = {
|
||||
mode,
|
||||
@ -31,9 +26,6 @@ const configureWebpack = {
|
||||
{ test: /.svg$/, loader: 'vue-svg-loader' },
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
new ProgressBarPlugin({ format: progressFormat }),
|
||||
],
|
||||
};
|
||||
|
||||
// Application pages
|
||||
|
Loading…
Reference in New Issue
Block a user