<feed xmlns='http://www.w3.org/2005/Atom'>
<title>krino.git/man, branch v0.0.12</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.12</id>
<link rel='self' href='https://git.labunix.xyz/krino.git/atom?h=v0.0.12'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/'/>
<updated>2026-09-17T12:03:44Z</updated>
<entry>
<title>{now} is the start of the run, as the spec always said</title>
<updated>2026-09-17T12:03:44Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T12:03:44Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=33d771438f1da363af7c9ff2d5f4c368c326e84d'/>
<id>urn:sha1:33d771438f1da363af7c9ff2d5f4c368c326e84d</id>
<content type='text'>
The clock was read once per directory, so a run of several directories
stamped several different times - and a review that took a few seconds
could put one run's files into two folders, or at midnight two dates.
The spec (§7.3) says "the start of the run"; krino.conf(5) documented
the behaviour rather than the intent, so the two contradicted each
other.

The session now carries the run's clock and every directory plans with
it. Engine.Plan keeps its meaning for a caller with no session of its
own; Session.Plan passes the run's own start.
</content>
</entry>
<entry>
<title>a duplicate test in an exclude protects like one in a rule</title>
<updated>2026-09-17T11:59:52Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T11:59:52Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=b44222fc2b061382dc601014cde287cc41b857ca'/>
<id>urn:sha1:b44222fc2b061382dc601014cde287cc41b857ca</id>
<content type='text'>
The scopes that drive "no rule deletes a file krino found to be a
duplicate" were collected from rules only. A directory whose duplicate
tests lived in (exclude ...) forms had no scopes at all, so the
protection never engaged: krino explain said "yes duplicate" and the
next rule permanently deleted every copy. The README's promise was
false in that shape, and the spec's wording permitted it.

What matters is what krino knows, not which form taught it. The spec
and krino.conf(5) now say so too.
</content>
</entry>
<entry>
<title>gui: conditions as a nested tree, and a way to add a directory</title>
<updated>2026-09-17T08:56:19Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T08:56:19Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=48d1781fed3f9ea5cfd2b270bd92fd2826605636'/>
<id>urn:sha1:48d1781fed3f9ea5cfd2b270bd92fd2826605636</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gui: name the other copy of a duplicate, and offer to keep this one instead</title>
<updated>2026-09-17T08:15:45Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T08:15:45Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=a2cb20851499e9c00bd3bf642680a9ce3148cae8'/>
<id>urn:sha1:a2cb20851499e9c00bd3bf642680a9ce3148cae8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gui: sort the plan by name, size, age, action or rule</title>
<updated>2026-09-17T08:05:55Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T08:05:55Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=47b6776c2cb9b017ad95acb5aae8e34b8776fc7c'/>
<id>urn:sha1:47b6776c2cb9b017ad95acb5aae8e34b8776fc7c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gui: size and age columns, column toggles, readable colours, a laid-out explanation</title>
<updated>2026-09-17T07:40:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T07:40:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=0e067e693609589d46f5aa6e161b95cc905987cc'/>
<id>urn:sha1:0e067e693609589d46f5aa6e161b95cc905987cc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gui: keep every divider where it is put, and let the columns shrink</title>
<updated>2026-09-17T07:12:32Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T07:12:32Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=4d6386960c981678a8e8123a4db5463df7ee60bb'/>
<id>urn:sha1:4d6386960c981678a8e8123a4db5463df7ee60bb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gui: aligned columns, theme colours, a second layout, and a scan-selection setting</title>
<updated>2026-09-17T06:39:48Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T06:39:48Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=1e3dd67868e1b6d3c12f0bca201d5e60a12c3723'/>
<id>urn:sha1:1e3dd67868e1b6d3c12f0bca201d5e60a12c3723</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gui: coloured actions with headers, a filter over the plan, bulk trash or delete</title>
<updated>2026-09-16T22:51:15Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-16T22:51:15Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=5418ba6bc5c653b6a99572c6ece6abbf57836c43'/>
<id>urn:sha1:5418ba6bc5c653b6a99572c6ece6abbf57836c43</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gui: the preview is as big as you drag it, and PDFs render to suit</title>
<updated>2026-09-16T22:40:46Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-16T22:40:46Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=ca0b703526151149d060d6d38f307e9e38c3dcd2'/>
<id>urn:sha1:ca0b703526151149d060d6d38f307e9e38c3dcd2</id>
<content type='text'>
</content>
</entry>
</feed>
