Compare commits

..

16 commits

Author SHA1 Message Date
Quorafind
16fcf917a6 chore: update for version.json 2026-03-23 16:39:37 +08:00
Quorafind
fd4bf87a1f chore: update version spec 2026-03-19 09:39:16 +08:00
Quorafind
1e1ee35f9d chore: bump version to 4.3.0 2026-03-18 16:48:35 +08:00
Quorafind
e3201d9ed6 feat(cmdk): add content search and preview scroll-to-position
Add Phase 3 progressive content search to CMDK modal using
prepareSimpleSearch API for substring matching (CJK-friendly).
Uses adaptive yielding (5ms threshold) and offset-based line
computation to avoid costly line splitting.

Also fix preview scroll: pass full result to showPreview so
heading and content results navigate to correct position via
setViewState + setEphemeralState.
2026-03-18 16:47:57 +08:00
Quorafind
8cb09f6345 chore: bump version to 4.2.0 2026-03-17 14:55:15 +08:00
Quorafind
e1b2a6e2db chore: bump version to 4.2.0 2026-03-17 14:55:15 +08:00
Quorafind
3896bcfc34 feat: add CMDK quick search modal with progressive rendering
- Double-tap configurable modifier key (default: Shift) to invoke
  a SuggestModal-based quick search with real-time file preview
- Progressive heading search via chooser.addSuggestion() and batched
  setTimeout, using metadataCache for zero I/O
- File navigation via setViewState with heading subpath support
- Settings tab for trigger key selection and double-tap interval
- Fix inputEl timing race with retry logic and optional chaining
- Fix extra view creation when defaultViewType is window
- Add auto-preview on ArrowUp/ArrowDown in FloatSearchModal
2026-03-17 14:55:15 +08:00
Boninall
8953f2175d
Merge pull request #71 from Quorafind/feat/4-1-0
feat: support pass view state
2025-02-27 16:27:36 +08:00
quorafind
c3d9e96b19 chore: bump version 2025-02-27 16:25:45 +08:00
quorafind
e56db18fae feat: support pass view state 2025-02-27 16:24:55 +08:00
Boninall
aa638ee588
Merge pull request #70 from Quorafind/feat/4-1-0
Feat/4 1 0
2025-02-27 16:06:09 +08:00
quorafind
4bb81fa23e chore: bump version 2025-02-27 16:05:26 +08:00
quorafind
81fb30c532 feat: support features like update window cleartimeout 2025-02-27 16:04:11 +08:00
quorafind
9875f56314 feat: support all kinds of search operator 2025-02-27 16:03:04 +08:00
quorafind
ab7c600b3c fix: should not trigger by float search itself twice 2025-02-27 15:25:39 +08:00
quorafind
9b7a38f0f2 fix: load window incorrectly 2025-02-27 15:12:41 +08:00
7 changed files with 1016 additions and 82 deletions

View file

@ -1,15 +1,10 @@
{
"id": "float-search",
"name": "Floating Search",
"version": "4.0.0",
"minAppVersion": "0.15.0",
"version": "4.3.0",
"minAppVersion": "1.2.0",
"description": "You can use search view in modal/leaf/popout window now.",
"author": "Boninall",
"authorUrl": "https://github.com/Quorafind",
"fundingUrl": {
"Buy Me a Coffee": "https://www.buymeacoffee.com/boninall",
"爱发电": "https://afdian.net/a/boninall",
"支付宝": "https://cdn.jsdelivr.net/gh/Quorafind/.github@main/IMAGE/%E6%94%AF%E4%BB%98%E5%AE%9D%E4%BB%98%E6%AC%BE%E7%A0%81.jpg"
},
"isDesktopOnly": false
}

View file

@ -1,6 +1,6 @@
{
"name": "float-search",
"version": "4.0.0",
"version": "4.3.0",
"description": "You can use search view in modal/leaf/popout window now.",
"main": "main.js",
"scripts": {
@ -17,7 +17,7 @@
"@typescript-eslint/parser": "5.29.0",
"builtin-modules": "3.3.0",
"esbuild": "0.14.47",
"obsidian": "^1.7.2",
"obsidian": "^1.12.3",
"tslib": "2.4.0",
"typescript": "4.7.4"
},

View file

@ -28,8 +28,8 @@ importers:
specifier: 0.14.47
version: 0.14.47
obsidian:
specifier: ^1.7.2
version: 1.7.2(@codemirror/state@6.2.1)(@codemirror/view@6.18.1)
specifier: ^1.12.3
version: 1.12.3(@codemirror/state@6.2.1)(@codemirror/view@6.18.1)
tslib:
specifier: 2.4.0
version: 2.4.0
@ -486,7 +486,7 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
@ -602,11 +602,11 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
obsidian@1.7.2:
resolution: {integrity: sha512-k9hN9brdknJC+afKr5FQzDRuEFGDKbDjfCazJwpgibwCAoZNYHYV8p/s3mM8I6AsnKrPKNXf8xGuMZ4enWelZQ==}
obsidian@1.12.3:
resolution: {integrity: sha512-HxWqe763dOqzXjnNiHmAJTRERN8KILBSqxDSEqbeSr7W8R8Jxezzbca+nz1LiiqXnMpM8lV2jzAezw3CZ4xNUw==}
peerDependencies:
'@codemirror/state': ^6.0.0
'@codemirror/view': ^6.0.0
'@codemirror/state': 6.5.0
'@codemirror/view': 6.38.6
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@ -1316,7 +1316,7 @@ snapshots:
natural-compare@1.4.0: {}
obsidian@1.7.2(@codemirror/state@6.2.1)(@codemirror/view@6.18.1):
obsidian@1.12.3(@codemirror/state@6.2.1)(@codemirror/view@6.18.1):
dependencies:
'@codemirror/state': 6.2.1
'@codemirror/view': 6.18.1

File diff suppressed because it is too large Load diff

View file

@ -86,7 +86,7 @@ export class EmbeddedView extends nosuper(HoverPopover) {
document: Document = this.targetEl?.ownerDocument ?? window.activeDocument ?? window.document;
id = genId(8);
bounce?: NodeJS.Timeout;
bounce?: number;
boundOnZoomOut: () => void;
originalPath: string; // these are kept to avoid adopting targets w/a different link
@ -221,7 +221,7 @@ export class EmbeddedView extends nosuper(HoverPopover) {
if (this.shouldShow()) {
if (this.state === PopoverState.Hiding) {
this.state = PopoverState.Shown;
clearTimeout(this.timer);
window.clearTimeout(this.timer);
}
} else {
if (this.state === PopoverState.Showing) {
@ -391,7 +391,7 @@ export class EmbeddedView extends nosuper(HoverPopover) {
// A timer might be pending to call show() for the first time, make sure
// it doesn't bring us back up after we close
if (this.timer) {
clearTimeout(this.timer);
window.clearTimeout(this.timer);
this.timer = 0;
}

View file

@ -9,6 +9,7 @@ If your plugin does not need CSS, delete this file.
.float-search-modal {
width: 700px;
padding-bottom: 0;
transition: width 0.15s ease;
}
.float-search-modal.float-search-width {
@ -147,3 +148,84 @@ body:not(.show-file-path) .search-result-file-title .search-result-file-path {
.fs-leaf-view .workspace-split {
background-color: var(--background-primary);
}
/* ── CMDK Modal ── */
.prompt.float-search-cmdk {
width: 700px;
max-width: 90vw;
transition: width 0.15s ease;
}
.prompt.float-search-cmdk.float-search-cmdk-expanded {
width: 1100px;
}
.float-search-cmdk-body {
display: flex;
flex-direction: row;
height: 50vh;
max-height: 600px;
overflow: hidden;
}
.float-search-cmdk-body .prompt-results {
max-height: none;
height: 100%;
overflow-y: auto;
flex: 1 1 auto;
}
.float-search-cmdk-expanded .float-search-cmdk-body .prompt-results {
flex: 0 0 40%;
border-right: 1px solid var(--background-modifier-border);
}
.float-search-cmdk-preview {
flex: 1;
overflow: hidden;
height: 100%;
}
.float-search-cmdk-preview .view-header {
display: none;
}
.float-search-cmdk-preview .view-content {
height: 100%;
}
.float-search-cmdk-preview .fs-block {
height: 100% !important;
}
.float-search-cmdk-preview .fs-content {
height: 100%;
}
.float-search-cmdk-preview .fs-content .workspace-split.mod-vertical {
height: 100%;
}
.float-search-cmdk-preview .workspace-leaf-resize-handle {
display: none;
}
.modal-container.float-search-cmdk-container.mod-dim {
z-index: 30;
}
/* ── Quick Create item ── */
.float-search-cmdk-create-item {
border-top: 1px solid var(--background-modifier-border);
}
.float-search-cmdk-create-item .suggestion-title {
color: var(--text-accent);
font-weight: var(--font-semibold);
}
.float-search-cmdk-create-item .suggestion-flair {
display: flex;
align-items: center;
color: var(--text-accent);
}

View file

@ -30,5 +30,9 @@
"3.4.10": "0.15.0",
"3.5.0": "0.15.0",
"3.5.1": "0.15.0",
"4.0.0": "0.15.0"
"4.0.0": "0.15.0",
"4.1.0": "0.15.0",
"4.1.1": "0.15.0",
"4.2.0": "1.2.0",
"4.3.0": "1.2.0"
}