<feed xmlns='http://www.w3.org/2005/Atom'>
<title>expenses, branch 1.0.0</title>
<subtitle>Web app for tracking expenses in a group and paying each other back
</subtitle>
<id>http://git.twilken.net/expenses/atom?h=1.0.0</id>
<link rel='self' href='http://git.twilken.net/expenses/atom?h=1.0.0'/>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/'/>
<updated>2025-02-25T16:00:47Z</updated>
<entry>
<title>Release 1.0.0</title>
<updated>2025-02-25T16:00:47Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-25T16:00:47Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=62f964f7dfcb01cc9319f9b230bb33ad48ecb94f'/>
<id>urn:sha1:62f964f7dfcb01cc9319f9b230bb33ad48ecb94f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix HTML validation errors in &lt;hgroup&gt;</title>
<updated>2025-02-22T22:56:11Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T22:56:11Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=8adf9d92fb4049f45d50653f57b5b06ce0ae1d59'/>
<id>urn:sha1:8adf9d92fb4049f45d50653f57b5b06ce0ae1d59</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove unnecessary type attribute for script</title>
<updated>2025-02-22T22:55:55Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T22:55:55Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=560f387dcd9f45fc6477e557b6f665d44a4da25c'/>
<id>urn:sha1:560f387dcd9f45fc6477e557b6f665d44a4da25c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Set up cl-who for HTML5 output properly</title>
<updated>2025-02-22T22:35:41Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T22:35:41Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=4e45c0938cf861dd0566296e39fb49116e6968ce'/>
<id>urn:sha1:4e45c0938cf861dd0566296e39fb49116e6968ce</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Explain default currency on home page</title>
<updated>2025-02-22T22:15:16Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T22:15:16Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=c195d92814ea426d584844d85176607d77ff3e8a'/>
<id>urn:sha1:c195d92814ea426d584844d85176607d77ff3e8a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Avoid SQL error when trying to insert empty list</title>
<updated>2025-02-22T22:00:11Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T22:00:11Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=33eafbd52df4148a92eb77e58233c0dcdfe2471e'/>
<id>urn:sha1:33eafbd52df4148a92eb77e58233c0dcdfe2471e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix command line handling for Guix-built binary</title>
<updated>2025-02-22T21:51:47Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T21:51:47Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=40f864c5b4f5536e81912c9fbe95ea1e24275597'/>
<id>urn:sha1:40f864c5b4f5536e81912c9fbe95ea1e24275597</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Entry point to update exchange rates exists</title>
<updated>2025-02-22T21:45:04Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T21:45:04Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=2198a6a7290845d4dfd6e9cb437a30a9595d89c4'/>
<id>urn:sha1:2198a6a7290845d4dfd6e9cb437a30a9595d89c4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update exchange rates when requested</title>
<updated>2025-02-22T21:27:32Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T21:26:17Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=22bddabaaeb1e6421db9c0b9d98da1e98c0ac4e9'/>
<id>urn:sha1:22bddabaaeb1e6421db9c0b9d98da1e98c0ac4e9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Parse command-line arguments</title>
<updated>2025-02-22T21:14:30Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T21:14:30Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=d1eab3cecce903719f587bbad09d404794ad05a4'/>
<id>urn:sha1:d1eab3cecce903719f587bbad09d404794ad05a4</id>
<content type='text'>
Allow specifying database file, bind address and port on the command line.

Add a stub for an exchange rate updating mode.
</content>
</entry>
<entry>
<title>Remove now-unused dependency on file-attributes</title>
<updated>2025-02-22T20:29:02Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T20:29:02Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=99c125a342d58b8b86e2309e18f459641c94c021'/>
<id>urn:sha1:99c125a342d58b8b86e2309e18f459641c94c021</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Don't send useless Last-Modified header for static assets</title>
<updated>2025-02-22T16:36:48Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T16:35:36Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=93e52e80ea7a2aee82b9ca421da9050b6709afdd'/>
<id>urn:sha1:93e52e80ea7a2aee82b9ca421da9050b6709afdd</id>
<content type='text'>
The browser already uses Cache-Control for caching, and we wouldn't do
anything with an If-Modified-Since header we'd get back, so Last-Modified is
pointless.

If deployed using Guix, all modification times would be 1970-01-01 anyway.
</content>
</entry>
<entry>
<title>Let Woo handle static MIME types</title>
<updated>2025-02-22T16:27:01Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T16:27:01Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=21af70304afee1b30c2f711feec518acd2db761d'/>
<id>urn:sha1:21af70304afee1b30c2f711feec518acd2db761d</id>
<content type='text'>
The latest version of Woo depends on trivial-mimes, which can set MIME types
for .js and .css files automatically. Expenses doesn't use .map files.
</content>
</entry>
<entry>
<title>Use a newer, fixed sbcl-woo dependency</title>
<updated>2025-02-22T16:22:09Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T16:19:06Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=47cccb69bea63c11098d86c0fce1f0f218e98cee'/>
<id>urn:sha1:47cccb69bea63c11098d86c0fce1f0f218e98cee</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Disable core compression</title>
<updated>2025-02-22T16:22:09Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T16:06:20Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=5b7a876d6f69017e5569c80939e4f97a746aa6d6'/>
<id>urn:sha1:5b7a876d6f69017e5569c80939e4f97a746aa6d6</id>
<content type='text'>
Compression defeats Guix' grafting, but we need grafting to refer to assets.
</content>
</entry>
<entry>
<title>Declare static asset files</title>
<updated>2025-02-22T16:22:09Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-22T15:49:33Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=b4b873e2c94579eae2266ba37496f7c1bbab2d76'/>
<id>urn:sha1:b4b873e2c94579eae2266ba37496f7c1bbab2d76</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Don't catch spurious `system-out-of-date' conditions from asdf</title>
<updated>2025-02-21T21:03:21Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-02-21T21:03:21Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=e6af7f7835505ac744306e44b10bf0a58b8d4e99'/>
<id>urn:sha1:e6af7f7835505ac744306e44b10bf0a58b8d4e99</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Set repo about page as homepage</title>
<updated>2025-01-19T11:17:29Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-19T11:17:29Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=44c90403c1078ee9e1d49d5463d2fc75766e5ff6'/>
<id>urn:sha1:44c90403c1078ee9e1d49d5463d2fc75766e5ff6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Format group overview using CSS grid</title>
<updated>2025-01-19T11:14:22Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-19T11:11:40Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=69195bfab9ffbb2691043fd62aa1b41231df9345'/>
<id>urn:sha1:69195bfab9ffbb2691043fd62aa1b41231df9345</id>
<content type='text'>
This gives more control over the layout, including not expanding the columns
containing Rename/Delete links, to leave more space for the important
information.
</content>
</entry>
<entry>
<title>Visually mute "no members" message</title>
<updated>2025-01-19T11:14:22Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-19T11:09:59Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=7f7eee9bc39be6c02d9dd53ca0506a33853f1c5f'/>
<id>urn:sha1:7f7eee9bc39be6c02d9dd53ca0506a33853f1c5f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow deletion of uninvolved group members</title>
<updated>2025-01-19T11:14:22Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-19T10:51:54Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=9f2941f76532e132d664b7032fc0dccc2d3e59ce'/>
<id>urn:sha1:9f2941f76532e132d664b7032fc0dccc2d3e59ce</id>
<content type='text'>
Let users delete group members that are not involved in any transactions,
either as a payer or payee.
</content>
</entry>
<entry>
<title>Add forgotten semicolon</title>
<updated>2025-01-19T11:14:22Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-19T10:40:46Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=5ed8924ea2ce4a60b974f0362772db8f3ffcdc46'/>
<id>urn:sha1:5ed8924ea2ce4a60b974f0362772db8f3ffcdc46</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Visually mute "no transactions" message</title>
<updated>2025-01-19T11:14:21Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-19T10:35:22Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=3de0d433a2afa0611fffe54425ee7b526635d425'/>
<id>urn:sha1:3de0d433a2afa0611fffe54425ee7b526635d425</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Document ideas</title>
<updated>2025-01-18T21:20:05Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-18T21:20:05Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=80f3dbb328327b9ee338dfa53dbe5f1f35b1898e'/>
<id>urn:sha1:80f3dbb328327b9ee338dfa53dbe5f1f35b1898e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Tell users to bookmark and share group pages</title>
<updated>2025-01-18T21:19:59Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-18T21:19:59Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=85251c973aff63d73eba1b09cdc0a15cbfd1ae7e'/>
<id>urn:sha1:85251c973aff63d73eba1b09cdc0a15cbfd1ae7e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use strict mode for JavaScript</title>
<updated>2025-01-18T21:19:09Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-18T21:19:09Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=4add790d51974735956a812ba7404178e3e0896e'/>
<id>urn:sha1:4add790d51974735956a812ba7404178e3e0896e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Disambiguate name fields</title>
<updated>2025-01-17T19:44:58Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-17T19:44:58Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=5b1b75c177f69a899cc4cf0519bd8c27129be3c6'/>
<id>urn:sha1:5b1b75c177f69a899cc4cf0519bd8c27129be3c6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Show help message for empty payer field</title>
<updated>2025-01-17T19:35:49Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-17T19:35:49Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=b9047353e713e0afd11c484373c582ff745c987c'/>
<id>urn:sha1:b9047353e713e0afd11c484373c582ff745c987c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Format repayments specially</title>
<updated>2025-01-17T19:30:37Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-17T19:30:37Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=0cd069e6b874f1db446ec11338d12b772f4896c7'/>
<id>urn:sha1:0cd069e6b874f1db446ec11338d12b772f4896c7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix all-settled message on group overview</title>
<updated>2025-01-05T15:47:45Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T15:47:45Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=75e8cd1fd6fc114710ee1bd98d790519b7cd6153'/>
<id>urn:sha1:75e8cd1fd6fc114710ee1bd98d790519b7cd6153</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Default repayments to today</title>
<updated>2025-01-05T15:41:09Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T15:41:09Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=0676322e59b54d10f43382d93619f97d9bea4152'/>
<id>urn:sha1:0676322e59b54d10f43382d93619f97d9bea4152</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Match structures using structure keyword</title>
<updated>2025-01-05T15:31:09Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T15:31:09Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=8836bd8bb3bf81c86a701c02b2388422fa1f402d'/>
<id>urn:sha1:8836bd8bb3bf81c86a701c02b2388422fa1f402d</id>
<content type='text'>
It doesn't seem to make a difference over `class`, but might as well use the
matching one.
</content>
</entry>
<entry>
<title>Document how to run the server</title>
<updated>2025-01-05T15:25:06Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T15:25:06Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=1036073e318767851a5a5297f5e8785b050bc12b'/>
<id>urn:sha1:1036073e318767851a5a5297f5e8785b050bc12b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Track to-dos in README</title>
<updated>2025-01-05T15:09:13Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T15:09:13Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=43816204aa212072a09687577acf8a4abef37af1'/>
<id>urn:sha1:43816204aa212072a09687577acf8a4abef37af1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>CSS class for full-width link-as-button</title>
<updated>2025-01-05T15:07:30Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T15:07:30Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=664dd45c40d2b219906c58391310195f82da198b'/>
<id>urn:sha1:664dd45c40d2b219906c58391310195f82da198b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement repayment UI</title>
<updated>2025-01-05T15:06:45Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T15:06:25Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=4ad2bd0f5bb11da742c707d6ea2ab0c6e064631c'/>
<id>urn:sha1:4ad2bd0f5bb11da742c707d6ea2ab0c6e064631c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Extract missing group details error page</title>
<updated>2025-01-05T12:30:20Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T11:59:01Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=377b9fd1c9416434bfdd8a51c157e8a8e72a9cba'/>
<id>urn:sha1:377b9fd1c9416434bfdd8a51c157e8a8e72a9cba</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce unnecessary test repetitions</title>
<updated>2025-01-05T11:58:36Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T11:58:29Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=7f35f8ef5acc5e65b14d1a94c7e0d8a34e84473c'/>
<id>urn:sha1:7f35f8ef5acc5e65b14d1a94c7e0d8a34e84473c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Extract backtrace middleware</title>
<updated>2025-01-05T11:26:03Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T11:09:47Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=6ce9545702b2c9a69935f1233574aa58b490b9b5'/>
<id>urn:sha1:6ce9545702b2c9a69935f1233574aa58b490b9b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Un-ignore loop variable to fix warning</title>
<updated>2025-01-05T10:02:57Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T10:02:57Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=2dd10e25efb325637394f83a3fd0bbf3fd7adcaf'/>
<id>urn:sha1:2dd10e25efb325637394f83a3fd0bbf3fd7adcaf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Parse floats with higher precision</title>
<updated>2025-01-05T10:01:56Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T10:01:56Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=1c7a430b392079f5b693b631d914c0d97433c315'/>
<id>urn:sha1:1c7a430b392079f5b693b631d914c0d97433c315</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fail with a better error if a payee is missing</title>
<updated>2025-01-05T09:59:14Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T09:59:14Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=dba381d37a70df083f05c9f3c98c879beff445b5'/>
<id>urn:sha1:dba381d37a70df083f05c9f3c98c879beff445b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add debug mode at top level</title>
<updated>2025-01-05T09:58:52Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-05T09:58:49Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=e6eed66c34d19b7897c8fa339a4c02184532b6e0'/>
<id>urn:sha1:e6eed66c34d19b7897c8fa339a4c02184532b6e0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Avoid duplicate GUIDs being generated</title>
<updated>2025-01-02T22:46:48Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2025-01-02T22:46:48Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=262581bcae48f35591e54e1a23be47e0021b4eb5'/>
<id>urn:sha1:262581bcae48f35591e54e1a23be47e0021b4eb5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update docstring for `fetch-exchange-rates'</title>
<updated>2024-11-02T17:57:40Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-11-02T17:57:35Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=9fc03bb7991d896fb02d600b90585861d0aad090'/>
<id>urn:sha1:9fc03bb7991d896fb02d600b90585861d0aad090</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto-detect package version when building User-Agent header</title>
<updated>2024-11-02T15:50:21Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-11-02T15:50:21Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=5bda4208c85a5b02c42b6c2cb4e7cec030ab3a8f'/>
<id>urn:sha1:5bda4208c85a5b02c42b6c2cb4e7cec030ab3a8f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix exchange rate comments</title>
<updated>2024-11-02T15:43:51Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-11-02T15:43:51Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=4ba5aeefc34499795844ba468b6be9a2e6e667ec'/>
<id>urn:sha1:4ba5aeefc34499795844ba468b6be9a2e6e667ec</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Test `cut' and `resolve-debts'</title>
<updated>2024-09-18T16:53:52Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-18T16:53:52Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=f02db144bafcfdb4fdc6fcb33e1c5fe0561b7867'/>
<id>urn:sha1:f02db144bafcfdb4fdc6fcb33e1c5fe0561b7867</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Test and fix a bug in `format-universal-time'</title>
<updated>2024-09-18T15:59:15Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-18T15:59:15Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=bfa05f44d371de60e0e7e50ab2036b5fa89cbcb2'/>
<id>urn:sha1:bfa05f44d371de60e0e7e50ab2036b5fa89cbcb2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Filter useful currencies on exchange rate page</title>
<updated>2024-09-17T09:27:51Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-17T09:27:51Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=d832e732cacbf7610f77395ae213807a6d91c2c1'/>
<id>urn:sha1:d832e732cacbf7610f77395ae213807a6d91c2c1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove unused exchange rate API endpoint</title>
<updated>2024-09-17T09:19:44Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-17T09:19:00Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=dbe333aff2289b69ffe2267fdfa7c03362764cfb'/>
<id>urn:sha1:dbe333aff2289b69ffe2267fdfa7c03362764cfb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Initial exchange rate support</title>
<updated>2024-09-17T08:56:58Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-17T08:56:58Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=ff060faddcfbd6c612c9fc68b188d0aaeaeb4dcc'/>
<id>urn:sha1:ff060faddcfbd6c612c9fc68b188d0aaeaeb4dcc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Take epsilon into account consistently</title>
<updated>2024-09-16T20:09:50Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-16T20:09:50Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=7791d7b2093b3acad6bfb06ea84c5b1bb5f7aa18'/>
<id>urn:sha1:7791d7b2093b3acad6bfb06ea84c5b1bb5f7aa18</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Handle HEAD requests and remove debugging page</title>
<updated>2024-09-16T13:22:04Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-16T13:22:04Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=f0852195f5ab70ad8fb849ec6fc5257c093275cf'/>
<id>urn:sha1:f0852195f5ab70ad8fb849ec6fc5257c093275cf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Explicitly forbid nulls in ID columns</title>
<updated>2024-09-16T09:39:38Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-16T09:39:38Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=5bbcd9034dc34ec8cf02dcc4613a8413966612c4'/>
<id>urn:sha1:5bbcd9034dc34ec8cf02dcc4613a8413966612c4</id>
<content type='text'>
According to &lt;https://www.sqlite.org/lang_createtable.html#the_primary_key&gt;, a
non-integer primary key column may allow nulls in SQLite, despite what the SQL
standard says.
</content>
</entry>
<entry>
<title>Document repayment threshold</title>
<updated>2024-09-16T09:26:15Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-16T09:26:15Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=616002a7cda047981828503d1cdaeb8f3b5aa05a'/>
<id>urn:sha1:616002a7cda047981828503d1cdaeb8f3b5aa05a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Follow browser preferences for page theme</title>
<updated>2024-09-16T09:17:55Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-16T09:17:55Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=350a8271ac16fdbd25c95b739513afdb1e04d9e0'/>
<id>urn:sha1:350a8271ac16fdbd25c95b739513afdb1e04d9e0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Let browsers cache rarely-changing assets</title>
<updated>2024-09-15T11:51:18Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-15T11:51:18Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=119716f87e998ee235828bb84276a16b863cf4d3'/>
<id>urn:sha1:119716f87e998ee235828bb84276a16b863cf4d3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix transaction sorting</title>
<updated>2024-09-13T19:51:39Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T19:51:39Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=8cffa24d4d779e7438087dcbdce19a77a9cef203'/>
<id>urn:sha1:8cffa24d4d779e7438087dcbdce19a77a9cef203</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Mark intentional match statement</title>
<updated>2024-09-13T19:51:30Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T19:51:30Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=4063588ba6440ca66e2945c86f723b6f30a5906e'/>
<id>urn:sha1:4063588ba6440ca66e2945c86f723b6f30a5906e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make sure assumptions hold for lambda-matched data</title>
<updated>2024-09-13T19:50:34Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T19:50:34Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=0582bc31b7aa61a67e0772ee60234a0897317f97'/>
<id>urn:sha1:0582bc31b7aa61a67e0772ee60234a0897317f97</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Calculate a repayment plan from total balances</title>
<updated>2024-09-13T19:49:10Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T19:49:10Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=77913e2b5ec13f838460771a4b07d9a10a96c841'/>
<id>urn:sha1:77913e2b5ec13f838460771a4b07d9a10a96c841</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix no-error clauses</title>
<updated>2024-09-13T19:35:38Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T19:35:38Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=1bfbf681276d8c18930aa15f63397ae3a9d56543'/>
<id>urn:sha1:1bfbf681276d8c18930aa15f63397ae3a9d56543</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Extract total balance calculations to repayment</title>
<updated>2024-09-13T18:02:19Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T18:02:19Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=4c12847120e886d2c6faa3b4b7fa631b5b721abb'/>
<id>urn:sha1:4c12847120e886d2c6faa3b4b7fa631b5b721abb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Disallow transactions with all-zero shares</title>
<updated>2024-09-13T18:01:31Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T18:01:31Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=a89edf869d75aaf4c5a9d534fa21323272b25243'/>
<id>urn:sha1:a89edf869d75aaf4c5a9d534fa21323272b25243</id>
<content type='text'>
These are invalid, because they don't add up - some money was paid, and it
will not be paid back.
</content>
</entry>
<entry>
<title>Add simple constructors for simple structs</title>
<updated>2024-09-13T16:42:33Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T16:42:33Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=1e3a52114083055e5d7c3fab52995bbfbec53669'/>
<id>urn:sha1:1e3a52114083055e5d7c3fab52995bbfbec53669</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make sure assumptions hold for matched data</title>
<updated>2024-09-13T16:37:43Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T16:36:32Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=7d0b67e48132084bd9551506c90d3746db5cb78d'/>
<id>urn:sha1:7d0b67e48132084bd9551506c90d3746db5cb78d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Extract data model and database functions into separate file</title>
<updated>2024-09-13T16:37:43Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T16:22:38Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=1f6bf3fc1f22d4aaf0cf2f6f7eb35c61e7c4bcc5'/>
<id>urn:sha1:1f6bf3fc1f22d4aaf0cf2f6f7eb35c61e7c4bcc5</id>
<content type='text'>
These will be needed from lower-level files, like "repayment".

Also, model simpler data like transaction shares and group members as structs
instead of free-form lists.
</content>
</entry>
<entry>
<title>Make list traversal more efficient</title>
<updated>2024-09-13T16:03:01Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T16:02:45Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=2aa644776189088f2cdcb8f2c420a237bbae1dac'/>
<id>urn:sha1:2aa644776189088f2cdcb8f2c420a237bbae1dac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Escape input values properly</title>
<updated>2024-09-13T15:35:50Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T15:35:50Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=4b88b1541600fcff59969c3c7ce19b48ecaf50c0'/>
<id>urn:sha1:4b88b1541600fcff59969c3c7ce19b48ecaf50c0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow editing group members' names</title>
<updated>2024-09-13T15:35:20Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T15:32:34Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=68e0ea662f584876ded7a6fba26e43c3cd780658'/>
<id>urn:sha1:68e0ea662f584876ded7a6fba26e43c3cd780658</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Disallow duplicate group members</title>
<updated>2024-09-13T14:57:23Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T14:57:23Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=028487eb5b18d46cf8008e2ea72edfb1235c7720'/>
<id>urn:sha1:028487eb5b18d46cf8008e2ea72edfb1235c7720</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Ignore temporary test database file</title>
<updated>2024-09-13T14:17:54Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-13T14:17:54Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=05de4e6c5e72f4b4d150e0ae27a9aa834d2873ab'/>
<id>urn:sha1:05de4e6c5e72f4b4d150e0ae27a9aa834d2873ab</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve database schema</title>
<updated>2024-09-12T19:14:28Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-12T19:08:05Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=8ec6373e9a02f966247c8faacf19b03ba574c442'/>
<id>urn:sha1:8ec6373e9a02f966247c8faacf19b03ba574c442</id>
<content type='text'>
* remove unused ID column for shares
* replace indices on shares with a single unique key (the performance should
  be fairly similar, and it enforces correctness better)
* rename tables to less redundant names
* reorder columns to keep constant-size columns first (this makes the output
  of manual queries nicer)
</content>
</entry>
<entry>
<title>Sort members and show messages for empty sections</title>
<updated>2024-09-12T18:46:30Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-12T18:46:30Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=307648f20045002150db10c0f36366a8b075033a'/>
<id>urn:sha1:307648f20045002150db10c0f36366a8b075033a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Index all columns that are filtered over</title>
<updated>2024-09-12T18:38:35Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-12T18:38:35Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=45ea7362745956071f28751263b9fdec9387a138'/>
<id>urn:sha1:45ea7362745956071f28751263b9fdec9387a138</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow deleting transactions</title>
<updated>2024-09-12T18:20:54Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-12T18:20:54Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=85a2cff6ccfd70d5fd0a2bade1afa6d301b2d112'/>
<id>urn:sha1:85a2cff6ccfd70d5fd0a2bade1afa6d301b2d112</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow editing transactions</title>
<updated>2024-09-12T18:16:34Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-12T17:52:50Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=1e880b863128ad95f5202976f59d53e3a46fd75e'/>
<id>urn:sha1:1e880b863128ad95f5202976f59d53e3a46fd75e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Name group member variables consistently</title>
<updated>2024-09-12T16:01:51Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-12T16:01:51Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=48e54b74437db0b7861ea723214548dec86b0e7d'/>
<id>urn:sha1:48e54b74437db0b7861ea723214548dec86b0e7d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Create required database indices without sxql</title>
<updated>2024-09-11T11:44:26Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-11T11:44:26Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=a6c84bcf87e356825541447033707ea837937f8b'/>
<id>urn:sha1:a6c84bcf87e356825541447033707ea837937f8b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fetch group info in one place</title>
<updated>2024-09-10T16:23:09Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-10T16:23:09Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=63b7454f9464ebe83df0d5e480aead40f6666c4f'/>
<id>urn:sha1:63b7454f9464ebe83df0d5e480aead40f6666c4f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use SXQL to generate SQL statements</title>
<updated>2024-09-10T16:20:30Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-10T16:16:25Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=f859899193f5453699c0028894530902f580769d'/>
<id>urn:sha1:f859899193f5453699c0028894530902f580769d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Generate insert statement using magic format string</title>
<updated>2024-09-10T14:23:26Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-10T14:23:26Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=c0d676107229ae104fe6b43a2d23ae20f5d2edec'/>
<id>urn:sha1:c0d676107229ae104fe6b43a2d23ae20f5d2edec</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Keep forms together and allow editing group details</title>
<updated>2024-09-10T12:32:56Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-10T12:32:56Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=d7905920ed59f455cbbf6ff7d2351fd6ffe1751d'/>
<id>urn:sha1:d7905920ed59f455cbbf6ff7d2351fd6ffe1751d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix with-form-body error page</title>
<updated>2024-09-10T12:14:32Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-10T12:14:32Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=09db21463a888b6ee8d4fd288c320ffc792f0e14'/>
<id>urn:sha1:09db21463a888b6ee8d4fd288c320ffc792f0e14</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Validate that a payer is provided</title>
<updated>2024-09-10T12:06:51Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-10T12:06:51Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=47706ae192a86ddfdc6f7f6c29143abdbb28d022'/>
<id>urn:sha1:47706ae192a86ddfdc6f7f6c29143abdbb28d022</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Filter out invalid values more simply</title>
<updated>2024-09-09T20:30:34Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T20:30:34Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=34947624298f4a1c8632a36835f35cf15f13675d'/>
<id>urn:sha1:34947624298f4a1c8632a36835f35cf15f13675d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Create database tables only if they do not exist yet</title>
<updated>2024-09-09T20:14:24Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T20:13:30Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=9aefbd3d2fa2347cee18d978789fdbfed4c7eb8e'/>
<id>urn:sha1:9aefbd3d2fa2347cee18d978789fdbfed4c7eb8e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Simplify SQL generation</title>
<updated>2024-09-09T20:13:08Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T20:13:08Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=0d62f82d22a06708eac2b4c036f3925078bb4265'/>
<id>urn:sha1:0d62f82d22a06708eac2b4c036f3925078bb4265</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve page titles</title>
<updated>2024-09-09T18:27:05Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T18:27:05Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=80dd85280b638c281444e89ea7244e04b1d2f5db'/>
<id>urn:sha1:80dd85280b638c281444e89ea7244e04b1d2f5db</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix meta color-scheme property</title>
<updated>2024-09-09T18:03:45Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T18:03:45Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=b62892bd93759b4a42b608fd9e70566bd539a3df'/>
<id>urn:sha1:b62892bd93759b4a42b608fd9e70566bd539a3df</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace `who:conc' in attributes</title>
<updated>2024-09-09T18:01:38Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T18:01:38Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=9e6569ef23755f955d08fe8da80d07c731398c0b'/>
<id>urn:sha1:9e6569ef23755f955d08fe8da80d07c731398c0b</id>
<content type='text'>
`who:esc' doesn't work in attribute names, so maybe `who:conc' shouldn't be
used either, even though it happens to work.
</content>
</entry>
<entry>
<title>Improve transaction display</title>
<updated>2024-09-09T18:00:26Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T18:00:26Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=a5245b42f2b12716d6c0fdb265cef41d071b6d62'/>
<id>urn:sha1:a5245b42f2b12716d6c0fdb265cef41d071b6d62</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Hide noise from zero-valued shares</title>
<updated>2024-09-09T17:51:19Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T17:51:19Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=1589116cc27f5641a9eac884db3fb4ffe0e8f18d'/>
<id>urn:sha1:1589116cc27f5641a9eac884db3fb4ffe0e8f18d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix transaction sorting in overview</title>
<updated>2024-09-09T17:47:04Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T17:47:04Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=05a683f5dd8e42f4b078841c68c7a42922914fa7'/>
<id>urn:sha1:05a683f5dd8e42f4b078841c68c7a42922914fa7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve new-transaction flow</title>
<updated>2024-09-09T17:46:35Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T17:45:27Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=3bf771650c09941fa61243079b4fa84aedfc1d0c'/>
<id>urn:sha1:3bf771650c09941fa61243079b4fa84aedfc1d0c</id>
<content type='text'>
* default to the group's default currency for new transactions
* default to equal shares among group participants

The latter makes it easier to see how relative shares work, and it mirrors the
spreadsheet's default behaviour when no shares are specified.
</content>
</entry>
<entry>
<title>Move groups under /g/</title>
<updated>2024-09-09T13:34:00Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T13:34:00Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=79797f4aca2a96b2ea0f3a84503c04c275e5e3af'/>
<id>urn:sha1:79797f4aca2a96b2ea0f3a84503c04c275e5e3af</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add stub "repay" button</title>
<updated>2024-09-09T13:21:33Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T13:21:33Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=6efdb25a6a531a77dd63e28a7d0f1861a24fef49'/>
<id>urn:sha1:6efdb25a6a531a77dd63e28a7d0f1861a24fef49</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Handle unknown static file extensions</title>
<updated>2024-09-09T13:13:34Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T13:13:34Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=e43f9b5de45f56563a8214453521222768f5e44b'/>
<id>urn:sha1:e43f9b5de45f56563a8214453521222768f5e44b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add top-level generic error page</title>
<updated>2024-09-09T13:12:57Z</updated>
<author>
<name>Timo Wilken</name>
</author>
<published>2024-09-09T13:12:57Z</published>
<link rel='alternate' type='text/html' href='http://git.twilken.net/expenses/commit/?id=f91a3d0f73715a01d062d73d896853ffcebb07c0'/>
<id>urn:sha1:f91a3d0f73715a01d062d73d896853ffcebb07c0</id>
<content type='text'>
This stops the server from crashing on any unhandled errors, and presents a
nicer page to the user.
</content>
</entry>
</feed>
