1 Commits
Author SHA1 Message Date
sneak 979f1b5749 README: five sentences fixed for the documents gate (closes #229)
check / check (push) Canceled after 0s
The documents gate on `next` failed five README sentences
(#219 (comment)). Each
is replaced with the gate's rewrite after a check against the code: the
keywords score sentence is split in two; `-1` is dropped from the
invalid ID examples, since the option parser refuses a positional `-1`
as an unknown option before the ID check; `mlData` drops the whole
`clip` block, as `src/backup.ts` and `src/metadata-backup.ts` do; a
collection name gets its ID at 250 bytes and a file name at 255, as
`uniqueNames` does; `lastTriedAt` is one timestamp per run. Nothing
else changes; `make fmt` reflowed the touched paragraphs.

Model: fable-5-1
2026-10-26 17:16:04 +00:00
+18 -17
View File
@@ -472,8 +472,8 @@ fresh reads"). `backup` counts it as failed (see "What quak cannot decrypt").
A collection ID or file ID given to `files`, `get`, `get-thumb` or A collection ID or file ID given to `files`, `get`, `get-thumb` or
`fix-missing-thumbnails --file` is written in decimal digits and is at `fix-missing-thumbnails --file` is written in decimal digits and is at
most 9007199254740991. Anything else, such as `0x10`, `1e3` or `-1`, is refused most 9007199254740991. Anything else, such as `0x10` or `1e3`, is refused before
before any request is sent. The command logs `Invalid file ID: <arg>` or any request is sent. The command logs `Invalid file ID: <arg>` or
`Invalid collection ID: <arg>` and exits 1. `Invalid collection ID: <arg>` and exits 1.
### What quak prints ### What quak prints
@@ -692,10 +692,10 @@ Update times are in microseconds, as Ente records them.
The JSON also holds the machine-learning data Ente computed for the photo, as The JSON also holds the machine-learning data Ente computed for the photo, as
`mlData`. Ente's apps detect faces in each photo and compute a CLIP embedding `mlData`. Ente's apps detect faces in each photo and compute a CLIP embedding
for it, a list of 512 numbers that describes what the photo shows. `mlData` for it, a list of 512 numbers that describes what the photo shows. `mlData`
holds everything but that embedding. In its place the JSON holds `keywords`, holds everything but the `clip` block, which holds that embedding. In its place
derived from the embedding as described under "Keywords". A file with no the JSON holds `keywords`, derived from the embedding as described under
machine-learning data has neither field. A file whose data holds no usable "Keywords". A file with no machine-learning data has neither field. A file whose
embedding has no `keywords`. data holds no usable embedding has no `keywords`.
The backup waits for the library's fetch of machine-learning data to finish The backup waits for the library's fetch of machine-learning data to finish
before it writes the JSON files. When a file's data cannot be fetched, before it writes the JSON files. When a file's data cannot be fetched,
@@ -748,11 +748,11 @@ derives a file's keywords the way the app sorts it. The categories are:
Each category has a query, and a text embedding of that query from Ente's CLIP Each category has a query, and a text embedding of that query from Ente's CLIP
text model. A file's score for a category is the cosine similarity of the file's text model. A file's score for a category is the cosine similarity of the file's
embedding and the category's: a number from -1 to 1, higher the more alike the embedding and the category's. That is a number from -1 to 1; the more alike the
two embeddings are. The file falls in the category when its score reaches the two embeddings are, the higher it is. The file falls in the category when its
category's minimum score. The keywords are the titles of the categories the file score reaches the category's minimum score. The keywords are the titles of the
falls in, highest score first. A video never falls in a category marked "no categories the file falls in, highest score first. A video never falls in a
videos", as in the app. category marked "no videos", as in the app.
#### Collection directories #### Collection directories
@@ -775,11 +775,11 @@ ignoring case, each gets its ID added: two albums named `Trip` become
`Trip (10)/` and `Trip (11)/`. Two files in one collection whose titles match, `Trip (10)/` and `Trip (11)/`. Two files in one collection whose titles match,
ignoring case, get their IDs added before the extension: `IMG_0001 (12345).JPG` ignoring case, get their IDs added before the extension: `IMG_0001 (12345).JPG`
and `IMG_0001 (12346).JPG`. A collection named like another collection's JSON and `IMG_0001 (12346).JPG`. A collection named like another collection's JSON
file, such as `Trip.json` beside `Trip`, also gets its ID added. A name too long file, such as `Trip.json` beside `Trip`, also gets its ID added. A file name
for a file name, which most file systems limit to 255 bytes, gets its ID added longer than 255 bytes, the limit on most file systems, gets its ID added too. So
too. It is then cut short before the ID, just far enough to fit. IDs never does a collection name longer than 250 bytes, which leaves room for `.json`. It
change, so a name stays the same from run to run until such a clash appears or is then cut short before the ID, just far enough to fit. IDs never change, so a
goes away. name stays the same from run to run until such a clash appears or goes away.
Each run removes every symlink in a collection's directory that points into the Each run removes every symlink in a collection's directory that points into the
date folders and is not one of its current links, yours included. A file or date folders and is not one of its current links, yours included. A file or
@@ -834,7 +834,8 @@ Each entry holds:
- `fileID` and `title`; - `fileID` and `title`;
- `classification`: the kind of failure; - `classification`: the kind of failure;
- `attempts`: how many runs in a row have failed the file; - `attempts`: how many runs in a row have failed the file;
- `lastTriedAt`: when it was last tried, as a Unix time in milliseconds; - `lastTriedAt`: the start of the run that last tried it, as a Unix time in
milliseconds;
- `error`: the error, as quak printed it. - `error`: the error, as quak printed it.
The kinds are: The kinds are: