Repository navigation
Releases
Seek 0.5.1
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: fad4fce7e6d1ab6bd87ccff5eb2cec4e1252a26bb89a0d23e7207259fce3b8d9
What changed
findfinds a folder by its own dot name:.git,.vscode,.github. A query like.gitis an extension filter, and an extension never matched a folder, so a search for.gitfolders listed only the small.gitfiles of worktrees, and below a repository answered "Nothing named like". Now a name that is exactly what was typed matches as a folder too, as a dotfile like.gitignorealready did as a file. Files with that extension still match (app.vscode), andtype: folderkeeps only the folders. Inside a repository,.gitis among whatfindleaves out below a folder, so it is shown from there, saying so.
Seek 0.5.0
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: 417787b1931b121a3d4050bc72281a47dc8a2f09179eca21f61594d630329252
What changed
Seek's protocol for programs, version 1: what any program can count on when it asks Seek through its pipe. The first step for client packages in Rust, Python and npm (roadmap).
- PROTOCOL.md: the whole protocol as a spec. It covers the messages, every command's arguments and rows, the error codes, how a program starts Seek or a copy of its own, and what version 1 promises to keep.
- Stable names for the commands for programs:
find.rows,grep.rows,recent.rows,status.rowsandopened. The names they had before (__rowsand the like) keep working. hello: what a program is talking to (Seek's version, the protocol versions it speaks, theseek.exerunning, its data folder, and whether the index is loaded), answered without touching the index.stop, for a program that brings a newer Seek than the one running.- Every reply says the protocol's version (
api), and an error says its kind incode:bad_args,not_found,not_a_folder,private,index_loading,unknown_command,api_too_new,bad_requestorfailed. A request for a newer protocol than the daemon speaks is answered withapi_too_new. find.rowstakesmaxinsideargstoo.- The installer stops a running Seek wherever it runs from, a copy a program carries included. Before, it stopped one only when Seek was already installed.
- Tests keep the replies' shapes (
tests/protocol/v1.json): a shape that changes fails the tests, old names included.
Seek 0.4.10
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: e09d1cc7c46fca539e7d0588a20ee498d0f0327b8f2767c486ba0b6251a51c4e
What changed
__status_rows, for programs, through the pipe: Seek's version, and for each drive whether its index is loading, being made for the first time (with the names found so far), ready or missing, whose it is (Jolt's or Seek's own) and when it was taken. A program can say "Seek is indexing D: (812,345 names)" while the first index is made, instead of making up a percentage. README has the format.
Seek 0.4.9
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: 3907bbf6280259f35d4004d3a4badb956f0ef4cd1d58330554615b2f8f4ceab3
What changed
recentright after Seek starts waits for what the last run saw. The first call after the background process started (after an update or a reboot) could come before the saved activity was read: it answered with almost nothing, and "changes seen live since 0000-00-00". It now waits for that, asfinddoes: about a second, once.
Seek 0.4.8
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: ce490a525282f42f0978b0757edfa3b0ea727311dd6d6efa4a09067e8acf5b59
What changed
recentanswers sooner, above all withwalk: falseor apath. It asked whether each path it had seen change was left out by a.gitignore, which reads the disk, before asking whether its name was wanted at all; now the cheap questions come first, and the answers about.gitignoreare kept for a minute between calls. Here, with apathandwalk: false, from about 55 ms to under 10; with a query on every drive, about three times sooner.!folder/on every drive costs little: the names of the folders on the way up are compared, without making the path of every name that matches.
Seek 0.4.7
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: 20bf5cee515f616e91085d37825b0617538c680923a95fe88c23c698e9e7cee0
What changed
findbelow a folder leaves out what.gitignoreleaves out there, and dependency and cache folders, asgrepalready did: a search for notes in a Rust repository listed the files intargettoo, and in one repository here 449 of 509.mdfiles were in ignored folders. The answer says how many were left out, andignored: truelists them. When a name is only in there, it is shown from there, saying so. Searches on every drive are as before.!folder/leaves out what is in that folder (ext:md !target/,!docs/old/).!wordstill leaves out names with the word.- For programs that list the answers themselves, through the pipe:
__grep_rowsgives grep's matches one per line, with the path, line, column and text;__recent_rowsgives recent's files with the time in Unix seconds and what happened, andwalk: falseskips reading the dates on disk;__openedtells Seek a program opened a file, so it ranks as used andrecentlists it as opened. README has the details. recenttakeswalk: falsetoo, and a path fragment in its query (src/ .md,!target/).grepsays when a slow first search read a hard disk: the next ones come from memory.
Seek 0.4.6
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: f35620e829f4d648c7c93eeaf079f01c049d07ce2085b2ac8ef512b420e477da
What changed
findtakes{alpha,beta gamma}as "a name with one of these in it". A group in braces on its own was read as a wildcard that had to be the whole name, so{report,summary} .pdffound nothing even with both files there, and a space inside the braces split the query into words. Now a space inside braces belongs to the alternative, and braces alone match names that have one of the alternatives as typed, as whole words, like "in quotes". With the rest of a name around them ({alpha,beta}.stl,*{2024,2025}*) they are still a wildcard.
Seek 0.4.5
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: 8c735557e4dc7a0782f42d471ea192f02cdc918147d3749416893ecc6d751fa2
What changed
findwith a folder and an extension, likedocs/ .png, finds what is in that folder. A part of the path was looked at only among the best 2,000 names kept, and with nothing but an extension or a common word those are the shallowest on the PC: a folder a few levels down had none of them, and the answer was "Nothing named like that" with the files right there.src/mainlisted a fraction of what it should for the same reason. Now the path is checked for every name that matches, so the list, its count andsummaryare of that folder.
Seek 0.4.4
Install or update (PowerShell):
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iex
Built from this release's commit, with the tests passing.
SHA-256 of seek.exe: 02f0e31c6a3635c41f0086e67123b03b971f39989483c5f1b70f4f9d4600a6f3
What changed
findanswers about three times sooner. On a PC with 4.9 million names, a search by name went from 100–150 ms to 40–50 ms, and one with a wildcard (*.blend) from about 400 ms to 100 ms. Seek's window searches at every letter typed, and the wait showed. What changed: each thread reads names that are next to each other in memory instead of one in eight; scoring a match no longer asks for memory, nor twice whether the name is a program; turning the best matches into paths and ranking them by what the user did lately runs on several threads; the list of what was created since the index is made once, not at every search; and wildcards compare letters without a call for each.- The same search always lists equal scores in the same order: the index's. Before, which thread had read a name could decide it.
Seek 0.4.3
Install or update, in PowerShell:
irm https://raw.githubusercontent.com/SynrgStudio/seek/main/install.ps1 | iexBuilt from this release's commit, with the tests passing.
SHA-256 of seek.exe: 6834adf55b2ebc11307ffaf7522dcda332a9e38d791aa94f9bc98e9dfefc0dbf
What changed
greptakes a pattern likevar\("NAMEas a regex when the text itself isn't there. A literal pattern with regex signs that finds nothing is tried as a regex, but a backslash right after a letter was read as a path's (src\bin), sostd::env::var\("ABCanswered 0 matches without saying why. A backslash before a bracket or a quantifier (\(,\[,\{,\|,\?,\*,\+and the closing ones) is now a sign wherever it is, and the answer says it searched as a regex.