<feed xmlns='http://www.w3.org/2005/Atom'>
<title>krino.git/gui/internal/model/forms.go, branch main</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=main</id>
<link rel='self' href='https://git.labunix.xyz/krino.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/'/>
<updated>2026-09-17T12:14:26Z</updated>
<entry>
<title>editing one form no longer takes its neighbour with it</title>
<updated>2026-09-17T12:14:26Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T12:14:26Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=6d28cf285f9944eb26c7ed0efcce558521b51cb9'/>
<id>urn:sha1:6d28cf285f9944eb26c7ed0efcce558521b51cb9</id>
<content type='text'>
A form's span was whole lines, which is wrong the moment two forms
share one.

Delete: "(exclude A) (exclude B)" on one line, delete the first, both
went. The dialog named one. The file still parsed, the live check said
no errors and Save lit, so an exclusion could disappear silently and
the next run would sort the files it had been protecting.

Clear a setting: the same shape, and the Settings window walked into it
itself - it writes "(defaults\n  (case ignore))", so the closing paren
of defaults sits on the setting's line, and putting that setting back
to "default" deleted the line and broke the file it had just written.
Every later change then silently reverted until Settings was reopened.
A hand-written "(defaults (case ignore) (fold yes))" lost fold the same
way, and that one still loaded, so it was saveable.

Both now take the whole line only when the line holds nothing else, and
otherwise take the form and the spaces after it. One helper, used by
the main file and by a directory's settings alike.
</content>
</entry>
<entry>
<title>the module path is git.labunix.xyz/krino</title>
<updated>2026-09-17T10:54:06Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-17T10:54:06Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=1884d56b0d399e9cdb80016a9c166b0120989933'/>
<id>urn:sha1:1884d56b0d399e9cdb80016a9c166b0120989933</id>
<content type='text'>
So that go install can find it. cgit serves no go-import meta tag, so
nginx answers a ?go-get=1 request for /NAME with one pointing at
https://git.labunix.xyz/NAME.git; the alternative was carrying a .git
suffix through every import line forever.

One sed over the imports, both go.mod files, and the dependency gate's
whitelist. Nothing else depends on the path. go install works from the
next tag, the first release whose go.mod carries it.
</content>
</entry>
<entry>
<title>gui: forms editor - rules and excludes as forms, with add, delete and move</title>
<updated>2026-09-16T13:33:23Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-09-16T13:33:23Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/krino.git/commit/?id=4363c7ad13d5eae1752ea3c36e1cfe7c13707c0d'/>
<id>urn:sha1:4363c7ad13d5eae1752ea3c36e1cfe7c13707c0d</id>
<content type='text'>
</content>
</entry>
</feed>
