Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e159d85
edited .gitignore
aspenyang Aug 10, 2025
7eb5089
edited back .gitignore
aspenyang Aug 10, 2025
c05d5d4
added toggle disable web search function (in conf.yml and a ui button)
aspenyang Aug 10, 2025
f6a85be
disable web search block style changes
aspenyang Aug 10, 2025
1132174
search setting style modifications
aspenyang Aug 11, 2025
e5de647
syntax modified
aspenyang Aug 11, 2025
c2edd7d
search bar setting text font-size modified
aspenyang Aug 11, 2025
98db560
clean unused code
aspenyang Aug 13, 2025
bd5795f
search option panel css style improved
aspenyang Aug 26, 2025
d36ee50
Search setting button style improvement
aspenyang Aug 29, 2025
0b50378
Search bar setting panel style
aspenyang Aug 29, 2025
44e929c
Search bar setting panel style (last commit should be conf.yml reset)
aspenyang Aug 29, 2025
3a6656c
search bar "go to link" feature approach version 2: added and "go to …
aspenyang Aug 29, 2025
cd74bf8
Merge branch 'master' into opt1-search
aspenyang Sep 7, 2025
4e5120b
added a gotolink config in conf.yml
aspenyang Sep 8, 2025
345a95d
add goToLinkEnabled to appConfig with Vuex getter and mutation for se…
aspenyang Sep 8, 2025
43f4b16
added a property for appConfig
aspenyang Sep 8, 2025
5d4b3de
bind goToLinkEnabled to Vuex/appConfig and support persistent toggle
aspenyang Sep 8, 2025
5e749c1
code cleaning
aspenyang Sep 8, 2025
f7779be
indentation adjustments
aspenyang Sep 8, 2025
58fe2d0
remove redundant inline event handler in SearchBar.vue
aspenyang Sep 8, 2025
559f5d9
feat(search): add field-specific advanced tile filtering
aspenyang Sep 22, 2025
04c5bc7
feat(config): add advancedSearch schema for field-specific search fil…
aspenyang Sep 22, 2025
ab8f854
store.js: feat(store): add advancedSearch getter and mutation for fie…
aspenyang Sep 22, 2025
80c971c
SearchBar.vue: feat(search-bar): UI controls for advanced search enab…
aspenyang Sep 22, 2025
6220e93
feat(home): apply advanced field-specific tile filtering in filterTil…
aspenyang Sep 22, 2025
2b20778
chore(config): enable advancedSearch
aspenyang Sep 22, 2025
f120497
style(search-bar): drop redundant ($event) in @change binding
aspenyang Sep 22, 2025
6dac479
Merge branch 'master' into opt1-search
aspenyang Sep 22, 2025
1f0151d
feat(search): add exact match block to Home view when advanced search…
aspenyang Sep 22, 2025
bf84199
fix(search): respect enabled fields when determining exact matches Body
aspenyang Sep 23, 2025
e8f7cc1
feat(search): Enter opens exact-match item; left/right navigate; add …
aspenyang Sep 26, 2025
2b381bd
style(item): add .tile--selected highlight; apply line-clamp
aspenyang Sep 26, 2025
3c2aaaa
fix(item): ensure mouse clicks open item via window.open in default path
aspenyang Sep 26, 2025
a9f7de6
feat(SearchBar): add Ctrl/Cmd+Enter forced web search (toggle + key h…
aspenyang Sep 30, 2025
f1c3d7b
feat(ConfigSchema): add enableCtrlEnterWebSearch to webSearch schema
aspenyang Sep 30, 2025
e0ef730
fix(search): honor "Go to Link" on Enter; prevent Event-as-force bug
aspenyang Oct 11, 2025
d1c5a42
Merge branch 'master' into opt1-search
aspenyang Nov 13, 2025
652b804
search panel style adjustment
aspenyang Nov 13, 2025
3190f9d
docs(configuring): document appConfig.advancedSearch, goToLinkEnabled…
aspenyang Nov 16, 2025
aa633dd
docs(searching): document goToLinkEnabled, webSearch.enableCtrlEnterW…
aspenyang Nov 16, 2025
8c210b8
⏪️ Resets conf.yml to og state
Lissy93 Nov 16, 2025
76f0122
🗑️ Delete .tsbuildinfo
Lissy93 Nov 16, 2025
fb41a42
🔄 Sync from master
Lissy93 Mar 10, 2026
958f82f
✨ Simplifies implementation of opening (searchbar) URLs directly
Lissy93 Mar 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/configuring.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)**
**`customSearchEngine`** | `string` | _Optional_ | You can also use a custom search engine, or your own self-hosted instance. This requires `searchEngine: custom` to be set. Then add the URL of your service, with GET query string included here
**`openingMethod`** | `string` | _Optional_ | Set your preferred opening method for search results: `newtab`, `sametab`, `workspace`. Defaults to `newtab`
**`searchBangs`** | `object` | _Optional_ | A key-value-pair set of custom search _bangs_ for redirecting query to a specific app or search engine. The key of each should be the bang you will type (typically starting with `/`, `!` or `:`), and value is the destination, either as a search engine key (e.g. `reddit`) or a URL with search parameters (e.g. `https://en.wikipedia.org/w/?search=`)
**`openUrlsDirectly`** | `boolean` | _Optional_ | If `true`, queries that look like URLs will be opened directly instead of searched. Defaults to `false`

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

Expand Down
12 changes: 12 additions & 0 deletions docs/searching.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,18 @@ appConfig:
webSearch: { disableWebSearch: true }
```

### Opening URLs Directly

When enabled, if your search query looks like a URL (e.g. `github.com`, `https://example.org/path`), pressing <kbd>Enter</kbd> will navigate directly to that URL instead of searching for it.

Set `appConfig.webSearch.openUrlsDirectly` to `true`:

```yaml
appConfig:
webSearch:
openUrlsDirectly: true
```

## Clearing Search

You can clear your search term at any time, resting the UI to it's initial state, by pressing <kbd>Esc</kbd>.
Expand Down
3 changes: 2 additions & 1 deletion src/assets/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"search-label": "Search",
"search-placeholder": "Start typing to filter",
"clear-search-tooltip": "Clear Search",
"enter-to-search-web": "Press enter to search the web"
"enter-to-search-web": "Press enter to search the web",
"enter-to-open-url": "Press enter to open URL"
},
"splash-screen": {
"loading": "Loading"
Expand Down
26 changes: 23 additions & 3 deletions src/components/Settings/SearchBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
:placeholder="$t('search.search-placeholder')"
v-on:input="userIsTypingSomething"
@keydown.esc="clearFilterInput" />
<p v-if="(!searchPrefs.disableWebSearch) && input.length > 0" class="web-search-note">
{{ $t('search.enter-to-search-web') }}
<p v-if="searchNote && input.length > 0" class="web-search-note">
{{ searchNote }}
</p>
</div>
<i v-if="input.length > 0"
Expand Down Expand Up @@ -52,6 +52,14 @@ export default {
searchPrefs() {
return this.$store.getters.webSearch || {};
},
urlDetected() {
return this.searchPrefs.openUrlsDirectly && this.isUrlLike(this.input.trim());
},
searchNote() {
if (this.urlDetected) return this.$t('search.enter-to-open-url');
if (!this.searchPrefs.disableWebSearch) return this.$t('search.enter-to-search-web');
return '';
},
},
mounted() {
window.addEventListener('keydown', this.handleKeyPress);
Expand Down Expand Up @@ -126,8 +134,16 @@ export default {
// Get search preferences from appConfig
const { searchPrefs } = this;
if (!searchPrefs.disableWebSearch) { // Only proceed if user hasn't disabled web search
const bangList = { ...defaultSearchBangs, ...(searchPrefs.searchBangs || {}) };
const input = this.input.trim();
const openingMethod = searchPrefs.openingMethod || defaultSearchOpeningMethod;
// If openUrlsDirectly enabled and input looks like a URL, navigate directly
if (searchPrefs.openUrlsDirectly && input && this.isUrlLike(input)) {
const url = /^https?:\/\//.test(input) ? input : `https://${input}`;
this.launchWebSearch(url, openingMethod);
this.clearFilterInput();
return;
}
const bangList = { ...defaultSearchBangs, ...(searchPrefs.searchBangs || {}) };
const searchBang = getSearchEngineFromBang(this.input, bangList);
const searchEngine = searchPrefs.searchEngine || defaultSearchEngine;
// Use either search bang, or preffered search engine
Expand All @@ -143,6 +159,10 @@ export default {
}
}
},
/* Detect if input looks like a URL (has TLD, no spaces) */
isUrlLike(input) {
return /^(https?:\/\/)?([\w-]+\.)+[a-zA-Z]{2,}(\/\S*)?$/.test(input.trim());
},
},
};
</script>
Expand Down
6 changes: 6 additions & 0 deletions src/utils/ConfigSchema.json
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,12 @@
"default": "false",
"description": "If set to true, web search will be disabled all together"
},
"openUrlsDirectly": {
"title": "Open URLs Directly",
"type": "boolean",
"default": false,
"description": "If enabled, when the search query looks like a URL it will be opened directly instead of being passed to the search engine"
},
"searchEngine": {
"title": "Search Engine",
"type": "string",
Expand Down
Loading