Skip to content

Releases

Seek 0.5.1

Choose a tag to compare

@SynrgStudio SynrgStudio released this 11 Nov 12:00

Install or update, in 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: fad4fce7e6d1ab6bd87ccff5eb2cec4e1252a26bb89a0d23e7207259fce3b8d9

What changed

  • find finds a folder by its own dot name: .git, .vscode, .github. A query like .git is an extension filter, and an extension never matched a folder, so a search for .git folders listed only the small .git files 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 .gitignore already did as a file. Files with that extension still match (app.vscode), and type: folder keeps only the folders. Inside a repository, .git is among what find leaves out below a folder, so it is shown from there, saying so.

Seek 0.5.0

Choose a tag to compare

@SynrgStudio SynrgStudio released this 11 Nov 06:15

Install or update, in 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: 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.rows and opened. The names they had before (__rows and the like) keep working.
  • hello: what a program is talking to (Seek's version, the protocol versions it speaks, the seek.exe running, 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 in code: bad_args, not_found, not_a_folder, private, index_loading, unknown_command, api_too_new, bad_request or failed. A request for a newer protocol than the daemon speaks is answered with api_too_new.
  • find.rows takes max inside args too.
  • 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

Choose a tag to compare

@SynrgStudio SynrgStudio released this 11 Nov 05:53

Install or update, in 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: 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

Choose a tag to compare

@SynrgStudio SynrgStudio released this 11 Nov 05:40

Install or update, in 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: 3907bbf6280259f35d4004d3a4badb956f0ef4cd1d58330554615b2f8f4ceab3

What changed

  • recent right 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, as find does: about a second, once.

Seek 0.4.8

Choose a tag to compare

@SynrgStudio SynrgStudio released this 11 Nov 05:37

Install or update, in 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: ce490a525282f42f0978b0757edfa3b0ea727311dd6d6efa4a09067e8acf5b59

What changed

  • recent answers sooner, above all with walk: false or a path. 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 .gitignore are kept for a minute between calls. Here, with a path and walk: 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

Choose a tag to compare

@SynrgStudio SynrgStudio released this 11 Nov 05:27

Install or update, in 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: 20bf5cee515f616e91085d37825b0617538c680923a95fe88c23c698e9e7cee0

What changed

  • find below a folder leaves out what .gitignore leaves out there, and dependency and cache folders, as grep already did: a search for notes in a Rust repository listed the files in target too, and in one repository here 449 of 509 .md files were in ignored folders. The answer says how many were left out, and ignored: true lists 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/). !word still leaves out names with the word.
  • For programs that list the answers themselves, through the pipe: __grep_rows gives grep's matches one per line, with the path, line, column and text; __recent_rows gives recent's files with the time in Unix seconds and what happened, and walk: false skips reading the dates on disk; __opened tells Seek a program opened a file, so it ranks as used and recent lists it as opened. README has the details.
  • recent takes walk: false too, and a path fragment in its query (src/ .md, !target/).
  • grep says when a slow first search read a hard disk: the next ones come from memory.

Seek 0.4.6

Choose a tag to compare

@SynrgStudio SynrgStudio released this 11 Nov 04:41

Install or update, in 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: f35620e829f4d648c7c93eeaf079f01c049d07ce2085b2ac8ef512b420e477da

What changed

  • find takes {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} .pdf found 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

Choose a tag to compare

@SynrgStudio SynrgStudio released this 10 Nov 22:39

Install or update, in 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: 8c735557e4dc7a0782f42d471ea192f02cdc918147d3749416893ecc6d751fa2

What changed

  • find with a folder and an extension, like docs/ .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/main listed 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 and summary are of that folder.

Seek 0.4.4

Choose a tag to compare

@SynrgStudio SynrgStudio released this 10 Nov 12:12

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

  • find answers 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

Choose a tag to compare

@SynrgStudio SynrgStudio released this 10 Nov 08:46

Install or update, in 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: 6834adf55b2ebc11307ffaf7522dcda332a9e38d791aa94f9bc98e9dfefc0dbf

What changed

  • grep takes a pattern like var\("NAME as 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), so std::env::var\("ABC answered 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.