Skip to content

Commit 04726e9

Browse files
authored
🔀 Merge pull request #175 from Lissy93/FEATURE/improved-search
[FEATURE] Improved Search
2 parents 12b1143 + 490e8ed commit 04726e9

File tree

21 files changed

+363
-128
lines changed

21 files changed

+363
-128
lines changed

.github/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## ⚡️ 1.6.6 - Improved Search & Shortcuts [PR #175](https://github.com/Lissy93/dashy/pull/175)
4+
- Refactors the search algorithm to improve performance and code reusability
5+
- Updates search to ignore case, special characters and minor-typos
6+
- Adds the option for user to specify tags, which can be used for searching
7+
38
## ✨ 1.6.5 - Adds support for Secure Authentication using Keycloak [PR #174](https://github.com/Lissy93/dashy/pull/174)
49
- Major restructure of auth config
510
- Implements keycloak support, adds docs and updates schema
@@ -23,6 +28,7 @@
2328

2429
## 💄 1.6.1 - Adds new Theme [PR #166](https://github.com/Lissy93/dashy/issues/166)
2530
- Adds Dashy theme, for use in the dev dashboard
31+
2632
## ✨ 1.5.9 - New Minimal/ Startpage View [PR #155](https://github.com/Lissy93/dashy/issues/155)
2733
- Adds a new view, called minimal view, designed to be like a light-weight startpage
2834
- Implemented all the required features (filtering, opening methods, icons, etc) into minimal view

.github/ISSUE_TEMPLATE/add-your-dashboard-to-the-showcase----.md

Lines changed: 0 additions & 20 deletions
This file was deleted.

.github/ISSUE_TEMPLATE/bug.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
name: Bug Report 🐛
22
description: Report something that's not working the way it's (probably) intended to
33
title: '[BUG] <title>'
4-
labels: '\U0001F41B Bug'
4+
labels: ['🐛 Bug']
5+
assignees:
6+
- lissy93
57
body:
68
- type: dropdown
79
id: environment
@@ -34,6 +36,7 @@ body:
3436
attributes:
3537
label: Additional info
3638
description: Logs? Screenshots? Yes, please.
39+
placeholder: If the issue happens during build-time, include terminal logs. For run-time errors, include browser logs which you can view in the Dev Tools (F12), under the Console tab. Take care to blank out any personal info.
3740
validations:
3841
required: false
3942
- type: checkboxes
@@ -42,7 +45,7 @@ body:
4245
label: Please tick the boxes
4346
description: Before submitting, please ensure that
4447
options:
45-
- label: You are using the latest, or recent version of Dashy
48+
- label: You are using a [supported](https://github.com/Lissy93/dashy/blob/master/.github/SECURITY.md#supported-versions) version of Dashy (check the first two digits of the version number)
4649
required: true
4750
- label: You've checked that this [issue hasn't already been raised](https://github.com/Lissy93/dashy/issues?q=is%3Aissue)
4851
required: true

.github/ISSUE_TEMPLATE/feature-request.md

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Bug Report 🐛
2+
description: Suggest an idea for future development of Dashy
3+
title: '[FEATURE_REQUEST] <title>'
4+
labels: ['\U0001F984 Feature Request']
5+
6+
body:
7+
8+
# Field 1 - Is it bug-related
9+
- type: textarea
10+
id: issue
11+
attributes:
12+
label: Is your feature request related to a problem? If so, please describe.
13+
description:
14+
placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
15+
validations:
16+
required: false
17+
18+
# Field 2 - Describe feature
19+
- type: textarea
20+
id: solution
21+
attributes:
22+
label: Describe the solution you'd like
23+
placeholder: An outline of how you would like this to be implemented, include as much details as possible
24+
validations:
25+
required: true
26+
27+
# Field 3 - Priority
28+
- type: dropdown
29+
id: priority
30+
attributes:
31+
label: Priority
32+
description: How urgent is the development of this feature
33+
options:
34+
- Low (Nice-to-have)
35+
- Medium (Would be very useful)
36+
- High (The app does not function without it)
37+
validations:
38+
required: true
39+
40+
# Field 3 - Can the user implement
41+
- type: dropdown
42+
id: canImplement
43+
attributes:
44+
label: Is this something you would be keen to implement
45+
description: Are you raising this ticket in order to get an issue number for your PR?
46+
options:
47+
- 'No'
48+
- 'Maybe'
49+
- 'Yes!'
50+
validations:
51+
required: false
52+
53+
# Final text
54+
- type: markdown
55+
attributes:
56+
value: |-
57+
## Thanks 🙏
58+
Thank you for your feature suggestion, you should expect a reply within 48 hours :)
59+
Please note that there is no guarantee that your idea will be implemented
60+
If you haven't already done so, please Star the Dashy's repository on GitHub, to help other users discover it
61+
validations:
62+
required: false
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Add your Dashboard to the Showcase 🌟
2+
description: Share a screenshot of your dashboard to the Readme showcase!
3+
title: '[SHOWCASE] <title>'
4+
labels: ['💯 Showcase']
5+
6+
body:
7+
# 1 - Title
8+
- type: input
9+
id: title
10+
attributes:
11+
label: Title
12+
description: Pick a title for your addition
13+
placeholder: My Awesome Dashboard
14+
validations:
15+
required: false
16+
# 2 - Link to Screenshot
17+
- type: textarea
18+
id: screenshot
19+
attributes:
20+
label: Screenshot
21+
description: Either upload your screenshot here, or include a link to a png/jpg on a CDN / image hosting service
22+
validations:
23+
required: true
24+
# 3 - Credit user
25+
- type: dropdown
26+
id: attribution
27+
attributes:
28+
label: Would you like your name/ username included?
29+
description: This will be displayed above the screenshot to your dashboard in the showcase page
30+
options:
31+
- Yes
32+
- No
33+
validations:
34+
required: true
35+
# 4 - Social links
36+
- type: input
37+
id: links
38+
attributes:
39+
label: Link to your Website/ Profile/ Twitter (optional)
40+
description: You can optionally have your name link to your profile or website. If you'd like this, include the URL to your site below
41+
validations:
42+
required: false
43+
# 5 - Description
44+
- type: textarea
45+
id: description
46+
attributes:
47+
label: Description (Optional)
48+
description: You can optionally also include a short description. If there's anything else you'd like to include, then put it here
49+
validations:
50+
required: false
51+
# 6 - All done
52+
- type: markdown
53+
attributes:
54+
value: |-
55+
## That's It!
56+
Thanks for sharing your dashboard :) You will receive an update to this ticket once it's added to the showcase
57+
validations:
58+
required: false

README.md

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,25 @@
5656

5757
## Features 🌈
5858

59-
- Instant search by name, domain and tags - just start typing
60-
- Full customizable keyboard shortcuts for navigation, filtering and launching apps
61-
- Multiple built-in color themes, with UI color editor and support for custom CSS
62-
- Customizable layout, sizes, text, component visibility, behavior and colors etc
63-
- Many options for icons, including Font-Awesome support, auto-fetching favicon, images and emojis
64-
- Option to show service status for each of your apps / links, for basic availability and uptime monitoring
65-
- Choose how to launch apps, either in your browser, a pop-up modal or workspace view
66-
- Option for full-screen background image, custom nav-bar links, html footer, title, and more
67-
- Optional encrypted cloud backup and restore feature available
68-
- Optional authentication with multi-user support and configurable privileges for protecting your dashboard
69-
- Small bundle size, fully responsive UI and PWA makes the app easy to use on any device
70-
- Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment
71-
- Multi-language support, with more languages being added regularly
72-
- Easy single-file YAML-based configuration, or configure app directly through the UI
73-
- Strong focus on privacy
74-
- Plus lots more...
59+
- 🔎 Instant search by name, domain and tags - just start typing + customizable keyboard shortcuts
60+
- 🎨 Multiple built-in color themes, with UI color editor and support for custom CSS
61+
- 🧸 Many options for icons, including Font-Awesome support, auto-fetching favicon, images and emojis
62+
- 🚦 Service status feature for each of your apps / links, for basic availability and uptime monitoring
63+
- 💂 Optional authentication with multi-user support, configurable privileges and SSO support
64+
- ☁ Optional encrypted cloud backup and restore feature available
65+
- 💼 A workspace view, for easily switching between multiple apps at once
66+
- 🛩️ A minimal view, for use as a fast-loading browser startpage
67+
- 🖱️ Choose how to launch apps, either new tab, same tab, a pop-up modal or in the workspace view
68+
- 🌎 Multi-language support, with more languages being added regularly
69+
- 📏 Customizable layout, sizes, text, component visibility, behavior and colors etc
70+
- 🖼️ Option for full-screen background image, custom nav-bar links, html footer, title, and more
71+
- 🚀 Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment
72+
- 🤏 Small bundle size, fully responsive UI and PWA makes the app easy to use on any device
73+
- ⚙️ Easy single-file YAML-based configuration, with option to configure app directly through the UI
74+
- ✨ Under active development with improvements and new features added regularly
75+
- 🆓 100% free and open source
76+
- 🔐 Strong focus on privacy
77+
- 🌈 Plus lots more...
7578

7679
## Demo ⚡
7780

@@ -328,6 +331,17 @@ Quickly finding and launching applications is the primary aim of Dashy. To that
328331

329332
To start filtering, just start typing. No need to select the search bar or use any special key. You can then use either the tab key or arrow keys to select and move between results, and hit enter to launch the currently selected application. You can also use `Alt + Enter` on a selected app to launch it in a popup modal, `Ctrl + Enter` to open in new tab, or right-click on it to see all opening methods.
330333

334+
You can also add custom tags to a given item, to make finding them based on keywords easier. For example, in the following example, searching for 'Movies' will show 'Plex'
335+
336+
```yaml
337+
items:
338+
- title: Plex
339+
description: Media library
340+
icon: favicon
341+
url: https://plex.lab.local
342+
tags: [ movies, videos, music ]
343+
```
344+
331345
For apps that you use regularly, you can set a custom keybinding. Use the `hotkey` parameter on a certain item to specify a numeric key, between `0 - 9`. You can then launch that app, by just pressing that key, which is very useful for services you use frequently.
332346

333347
Example:
@@ -567,17 +581,18 @@ If you're new to web development, I've put together a short [list of resources](
567581
- 🛡️ [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard
568582
- 🧿 [Alternate Views](/docs/alternate-views.md) - Outline of available pages / views and item opening methods
569583
- 💾 [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature
570-
- 🚦 [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps
571584
- 🧸 [Icons](/docs/icons.md) - Outline of all available icon types for sections and items
572585
- 🌐 [Language Switching](/docs/multi-language-support.md) - How to change language, add a language, or update text
586+
- 🚦 [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps
587+
- 🔍 [Searching & Shortcuts](/docs/searching.md) - Finding and launching your apps, and using keyboard shortcuts
573588
- 🎨 [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles
574589

575590
#### Misc
576-
- [🔐 Privacy & Security](/docs/privacy.md) - List of requests, potential issues, and security resources
577-
- [📄 License](/LICENSE) - Copy of the MIT License
578-
- [⚖️ Legal](/.github/LEGAL.md) - Licenses of direct dependencies
579-
- [📏 Code of Conduct](/.github/CODE_OF_CONDUCT.md) - Contributor Covenant Code of Conduct
580-
- [🌳 Changelog](/.github/CHANGELOG.md) - Details of recent changes, and historical versions
591+
- 🔐 [Privacy & Security](/docs/privacy.md) - List of requests, potential issues, and security resources
592+
- 📄 [License](/LICENSE) - Copy of the MIT License
593+
- ⚖️ [Legal](/.github/LEGAL.md) - Licenses of direct dependencies
594+
- 📏 [Code of Conduct](/.github/CODE_OF_CONDUCT.md) - Contributor Covenant Code of Conduct
595+
- 🌳 [Changelog](/.github/CHANGELOG.md) - Details of recent changes, and historical versions
581596

582597
**[⬆️ Back to Top](#dashy)**
583598

docs/configuring.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,13 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)**
150150
**`icon`** | `string` | _Optional_ | The icon for a given item. Can be a font-awesome icon, favicon, remote URL or local URL. See [`item.icon`](#sectionicon-and-sectionitemicon)
151151
**`target`** | `string` | _Optional_ | The opening method for when the item is clicked, either `newtab`, `sametab`, `modal` or `workspace`. Where `newtab` will open the link in a new tab, `sametab` will open it in the current tab, and `modal` will open a pop-up modal with the content displayed within that iframe. Note that for the iframe to load, you must have set the CORS headers to either allow `*` ot allow the domain that you are hosting Dashy on, for some websites and self-hosted services, this is already set.
152152
**`hotkey`** | `number` | _Optional_ | Give frequently opened applications a numeric hotkey, between `0 - 9`. You can then just press that key to launch that application.
153+
**`tags`** | `string[]` | _Optional_ | A list of tags, which can be used for improved search
153154
**`statusCheck`** | `boolean` | _Optional_ | When set to `true`, Dashy will ping the URL associated with the current service, and display its status as a dot next to the item. The value here will override `appConfig.statusCheck` so you can turn off or on checks for a given service. Defaults to `appConfig.statusCheck`, falls back to `false`
154155
**`statusCheckUrl`** | `string` | _Optional_ | If you've enabled `statusCheck`, and want to use a different URL to what is defined under the item, then specify it here
155156
**`statusCheckHeaders`** | `object` | _Optional_ | If you're endpoint requires any specific headers for the status checking, then define them here
156157
**`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
157158
**`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
159+
**`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
158160

159161
**[⬆️ Back to Top](#configuring)**
160162

docs/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
- [Icons](/docs/icons.md) - Outline of all available icon types for sections and items
2222
- [Language Switching](/docs/multi-language-support.md) - Details on how to switch language, or add a new locale
2323
- [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps
24+
- [Searching & Shortcuts](/docs/searching.md) - Finding and launching your apps, and using keyboard shortcuts
2425
- [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles
2526

2627
### Misc

docs/searching.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Keyboard Shortcuts
2+
3+
## Searching
4+
One of the primary purposes of Dashy is to allow you to quickly find and launch a given app. To make this as quick as possible, there is no need to touch the mouse, or press a certain key to begin searching - just start typing. Results will be filtered in real-time. No need to worry about case, special characters or small typos, these are taken care of, and your results should appear.
5+
6+
## Navigating
7+
You can navigate through your items or search results using the keyboard. You can use <kbd>Tab</kbd> to cycle through results, and <kbd>Shift</kbd> + <kbd>Tab</kbd> to go backwards. Or use the arrow keys, <kbd>↑</kbd>, <kbd>→</kbd>, <kbd>↓</kbd> and <kbd>←</kbd>.
8+
9+
## Launching Apps
10+
You can launch a elected app by hitting <kbd>Enter</kbd>. This will open the app using your default opening method, specified in `target` (either `newtab`, `sametab`, `modal` or `workspace`). You can also use <kbd>Alt</kbd> + <kbd>Enter</kbd> to open the app in a pop-up modal, or <kbd>Ctrl</kbd> + <kbd>Enter</kbd> to open it in a new tab. For all available opening methods, just right-click on an item, to bring up the context menu.
11+
12+
## Tags
13+
By default, items are filtered by the `title` attribute, as well as the hostname (extracted from `url`), the `provider` and `description`. If you need to find results based on text which isn't included in these attributes, then you can add `tags` to a given item.
14+
15+
```yaml
16+
items:
17+
- title: Plex
18+
description: Media library
19+
icon: favicon
20+
url: https://plex.lab.local
21+
tags: [ movies, videos, music ]
22+
- title: FreshRSS
23+
description: RSS Reader
24+
icon: favicon
25+
url: https://freshrss.lab.local
26+
tags: [ news, updates, blogs ]
27+
28+
```
29+
30+
In the above example, Plex will be visible when searching for 'movies', and FreshRSS with 'news'
31+
32+
33+
## Custom Hotkeys
34+
For apps that you use regularly, you can set a custom keybinding. Use the `hotkey` parameter on a certain item to specify a numeric key, between `0 - 9`. You can then launch that app, by just pressing that key, which is much quicker than searching for it, if it's an app you use frequently.
35+
36+
```yaml
37+
- title: Bookstack
38+
icon: far fa-books
39+
url: https://bookstack.lab.local/
40+
hotkey: 2
41+
- title: Git Tea
42+
icon: fab fa-git
43+
url: https://git.lab.local/
44+
target: workspace
45+
hotkey: 3
46+
```
47+
48+
In the above example, pressing <kbd>2</kbd> will launch Bookstack. Or hitting <kbd>3</kbd> will open Git in the workspace view.
49+
50+
51+
## Clearing Search
52+
You can clear your search term at any time, by pressing <kbd>Esc</kbd>.
53+
This can also be used to close an open pop-up modal.

0 commit comments

Comments
 (0)