<feed xmlns='http://www.w3.org/2005/Atom'>
<title>krino.git/internal/engine/facts.go, branch v0.0.9</title>
<subtitle>rule-based file sorter in Go, shows the plan before touching anything, applies only the files you choose, and can undo any run, with s-expression rules and a GTK 4 window</subtitle>
<id>https://git.labunix.xyz/krino.git/atom?h=v0.0.9</id>
<link rel='self' href='https://git.labunix.xyz/krino.git/atom?h=v0.0.9'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/'/>
<updated>2026-09-14T22:33:04Z</updated>
<entry>
<title>a rule's duplicate check failure shortens the path too</title>
<updated>2026-09-14T22:33:04Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T22:33:04Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=eb31377e43fb26a6726b741978db83453fcd7bdd'/>
<id>urn:sha1:eb31377e43fb26a6726b741978db83453fcd7bdd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>(matched) is unknown after an undecided rule, so a catch-all leaves an unreadable file alone</title>
<updated>2026-09-14T22:32:11Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T22:32:11Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=ccd6faf3d10da0669631fb3e3ba17a46b9e63a09'/>
<id>urn:sha1:ccd6faf3d10da0669631fb3e3ba17a46b9e63a09</id>
<content type='text'>
</content>
</entry>
<entry>
<title>duplicate warnings share one format</title>
<updated>2026-09-14T21:48:23Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T21:48:23Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=1bb5097986558ee7dd3aeaf8e7defefdf91ae4b6'/>
<id>urn:sha1:1bb5097986558ee7dd3aeaf8e7defefdf91ae4b6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>content tests are three-valued: unknown when unreadable or read in part</title>
<updated>2026-09-14T21:39:37Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T21:39:37Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=c09020c2fb01da24d5befbed78ce3b73b5efbe4c'/>
<id>urn:sha1:c09020c2fb01da24d5befbed78ce3b73b5efbe4c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>plan 10: a format with no text is no match, not unreadable</title>
<updated>2026-09-14T20:23:42Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T20:23:42Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=394d117b90ffb64c87adfc8c2436b57007840c2b'/>
<id>urn:sha1:394d117b90ffb64c87adfc8c2436b57007840c2b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>plan 9: keyword cache keys on extension, max-read and Unicode tables, trims removed keywords</title>
<updated>2026-09-14T19:39:00Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T19:39:00Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=e0dddff176a01d410904b6750b3395de4f7e54db'/>
<id>urn:sha1:e0dddff176a01d410904b6750b3395de4f7e54db</id>
<content type='text'>
</content>
</entry>
<entry>
<title>krino: 0.0.5 — keyword cache, t and d in review</title>
<updated>2026-09-14T13:16:55Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T13:16:55Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=0b5d0eb92c5be2f0ddb2fa73990f31e5654e57fe'/>
<id>urn:sha1:0b5d0eb92c5be2f0ddb2fa73990f31e5654e57fe</id>
<content type='text'>
</content>
</entry>
<entry>
<title>krino: 0.0.3 — the plan as one block per file, wrapped, and -P</title>
<updated>2026-09-14T11:26:51Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-14T11:26:51Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=07c24054cab965800983ef40f53a05c2db131ede'/>
<id>urn:sha1:07c24054cab965800983ef40f53a05c2db131ede</id>
<content type='text'>
Each file shows its steps, then the rule and the reason it matched, one
field per line; on a terminal every line wraps to its width with
continuation lines under their own column, and piped output is never
wrapped. Choosing per file shows the same block. -P / --no-pager prints
the plan without the pager. A duplicate's original is shown with ~.
</content>
</entry>
<entry>
<title>krino: planning — chains, placeholders, conflicts, JSON</title>
<updated>2026-09-12T10:58:14Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-12T10:58:14Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=24a84671ace373ae331fa83a1ff484990f4dff0e'/>
<id>urn:sha1:24a84671ace373ae331fa83a1ff484990f4dff0e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>krino: matching — scan, ignore, conditions, extraction, duplicates, explain, dry run</title>
<updated>2026-09-11T23:22:12Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-11T23:22:12Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=3b36a48b7ce5a53a9366f3b31f94311f178e2553'/>
<id>urn:sha1:3b36a48b7ce5a53a9366f3b31f94311f178e2553</id>
<content type='text'>
</content>
</entry>
</feed>
