| 2026-02-25 23:54 | build: extract posix_env config | Chris Bracken | 2 | +14 | -7 |
| 2026-02-20 23:25 | gemini: add print_utf8_padded | Chris Bracken | 5 | +179 | -14 |
| 2026-02-20 16:07 | writer: implement a gemini writer | Chris Bracken | 40 | +1868 | -11 |
| 2026-02-20 23:58 | openbsd: fix BSD build | Chris Bracken | 3 | +3 | -11 |
| 2026-02-20 22:39 | cache: clean up fmemopen calls in tests | Chris Bracken | 1 | +6 | -6 |
| 2026-02-20 23:00 | openbsd: only include on necessary platforms | Chris Bracken | 7 | +29 | -5 |
| 2026-02-20 17:22 | cache: fix incorrect buffer size in test | Chris Bracken | 1 | +1 | -1 |
| 2026-02-20 15:30 | format: consolidate time printing functions | Chris Bracken | 1 | +20 | -33 |
| 2026-02-20 15:13 | writer: replace func ptr cases with static wrapper init | Chris Bracken | 2 | +135 | -34 |
| 2026-02-20 15:13 | git: remove redundant empty-string checks for path | Chris Bracken | 1 | +1 | -6 |
| 2026-02-20 15:13 | format: print directly to out stream via fprintf | Chris Bracken | 1 | +2 | -7 |
| 2026-02-20 15:13 | Ass setlocale call to ensure mbrtowc and wcwidth behave well | Chris Bracken | 2 | +4 | -0 |
| 2026-02-20 12:38 | git: fix variable names for git references | Chris Bracken | 1 | +11 | -11 |
| 2026-02-20 12:38 | cache: simplify fread loop | Chris Bracken | 1 | +2 | -5 |
| 2026-02-20 12:38 | format: simplify and add tests for print_gopher_link_padded | Chris Bracken | 2 | +34 | -9 |
| 2026-02-20 12:29 | cache: make umask() restoration more obvious | Chris Bracken | 1 | +2 | -2 |
| 2026-02-20 12:14 | utils: simplify path_concat and add more tests | Chris Bracken | 2 | +50 | -24 |
| 2026-02-20 12:14 | repo: simplify special file lookups | Chris Bracken | 1 | +9 | -10 |
| 2026-02-20 12:14 | git: add tests for filemode and filetype lookups | Chris Bracken | 4 | +114 | -35 |
| 2026-02-20 12:14 | format: extract is_unicode_modifier() and kUtf8Ellipsis const | Chris Bracken | 1 | +9 | -3 |
| 2026-02-20 11:57 | format: replace manual abs() with actual abs() | Chris Bracken | 1 | +3 | -2 |
| 2026-02-20 11:56 | format: clean up header includes | Chris Bracken | 9 | +9 | -11 |
| 2026-02-20 11:29 | oid: where possible avoid extra heap allocations for oids | Chris Bracken | 16 | +59 | -41 |
| 2026-02-20 11:18 | git: extract special files list (README, etc.) | Chris Bracken | 8 | +64 | -55 |
| 2026-02-20 10:05 | options: migrate to getopt | Chris Bracken | 2 | +71 | -68 |
| 2026-02-20 10:05 | writer: extract a shared DiffLimits struct | Chris Bracken | 7 | +36 | -38 |
| 2026-02-20 10:01 | writer: extract ops vtable | Chris Bracken | 2 | +98 | -185 |
| 2026-02-20 09:56 | cache: centralise cachefile creation/closing | Chris Bracken | 4 | +110 | -111 |
| 2026-02-20 09:08 | atom: skip commits with missing/blank OID | Chris Bracken | 1 | +8 | -7 |
| 2026-02-20 09:08 | gopher: correct relative path back to log in title | Chris Bracken | 1 | +1 | -1 |
| 2026-02-20 09:08 | utils: improve relpath_from_dir | Chris Bracken | 2 | +84 | -27 |
| 2026-02-20 08:37 | atom: ensure base URL + path concatenation includes a slash | Chris Bracken | 2 | +44 | -1 |
| 2026-02-20 08:37 | gopher: run link content through print_gopher_link | Chris Bracken | 2 | +12 | -7 |
| 2026-02-20 08:05 | writer: correct parameter name | Chris Bracken | 1 | +1 | -1 |
| 2026-02-20 08:05 | gopher: ensure newline after header/title line | Chris Bracken | 1 | +1 | -1 |
| 2026-02-20 08:05 | git: prevent crash when handling binary files | Chris Bracken | 1 | +1 | -1 |
| 2026-02-20 08:05 | repo: better handling for non-unixy line endings | Chris Bracken | 3 | +31 | -14 |
| 2026-02-20 08:05 | git: add support for SHA256 | Chris Bracken | 3 | +8 | -7 |
| 2026-02-20 07:30 | Add null-assertions for all non-nullable params | Chris Bracken | 33 | +347 | -14 |
| 2026-02-20 06:48 | writer: add tests for Diff is too large output | Chris Bracken | 6 | +104 | -10 |
| 2026-02-20 06:29 | gopher: fix 'Diff is too large' message | Chris Bracken | 1 | +1 | -1 |
| 2026-02-20 06:29 | git: fix use-after-free in warnx call | Chris Bracken | 1 | +4 | -2 |
| 2026-02-20 06:29 | fs_inmemory: fix a missing bailout | Chris Bracken | 1 | +3 | -0 |
| 2026-02-20 06:06 | FileSystem: add fdopen/close calls | Chris Bracken | 5 | +30 | -14 |
| 2026-02-20 05:47 | Improve error handling in gitrepo_walk_tree_files | Chris Bracken | 1 | +46 | -37 |
| 2026-02-20 05:33 | Better error handling for snprintf | Chris Bracken | 2 | +16 | -9 |
| 2026-02-20 05:26 | git reference: handle dangling symbolic references | Chris Bracken | 3 | +31 | -6 |
| 2026-02-17 10:08 | git: extract Git and make structs public | Chris Bracken | 90 | +3497 | -812 |
| 2026-02-17 10:08 | writers: check snprintf calls for truncation | Chris Bracken | 7 | +34 | -23 |
| 2026-02-17 10:08 | format: print raw UTF-8 sequence for ellipsis | Chris Bracken | 1 | +2 | -2 |
| 2026-02-17 10:08 | format: use gmtime_r instead of gmtime | Chris Bracken | 1 | +6 | -3 |
| 2026-02-19 04:36 | cache: if cache file is empty/corrupt do a full build | Chris Bracken | 1 | +10 | -3 |
| 2026-02-18 08:31 | index writer: safer dereference of me URL | Chris Bracken | 1 | +3 | -1 |
| 2026-02-20 03:38 | writer: safer string dereferences | Chris Bracken | 2 | +12 | -12 |
| 2026-02-18 08:13 | writers: safer dereference of parentoid | Chris Bracken | 2 | +2 | -2 |
| 2026-02-20 03:15 | commit: don't call git_oid_tostr() on NULL parentoid | Chris Bracken | 3 | +93 | -3 |
| 2026-02-20 03:15 | build: disable unused parameter warnings for tests | Chris Bracken | 2 | +8 | -0 |
| 2026-02-19 05:26 | utils: better path_concat | Chris Bracken | 1 | +26 | -11 |
| 2026-02-19 04:39 | format: filter out control chars in print_xml_encoded | Chris Bracken | 2 | +57 | -2 |
| 2026-02-19 04:35 | delta: fix diffstat graph max width | Chris Bracken | 3 | +41 | -1 |
| 2026-02-18 00:57 | format: add TODO to inject tz offset to print_time_short | Chris Bracken | 1 | +5 | -2 |
| 2026-02-18 06:45 | gout: free options in test | Chris Bracken | 1 | +1 | -0 |
| 2026-02-19 04:36 | format: zero-initialise mbstate in print_gopher_link_padded | Chris Bracken | 1 | +1 | -0 |
| 2026-02-19 06:27 | debug: enable asan | Chris Bracken | 2 | +7 | -0 |
| 2026-02-19 06:08 | build: declare _POSIX_C_SOURCE for open_memstream | Chris Bracken | 1 | +9 | -0 |
| 2026-02-17 09:33 | git: make structs public | Chris Bracken | 28 | +252 | -523 |
| 2026-02-17 09:31 | reference: make shorthand an owned copy | Chris Bracken | 1 | +11 | -12 |
| 2026-02-17 09:29 | repo: make submodules,readme,license owned copies | Chris Bracken | 1 | +12 | -6 |
| 2026-02-17 09:16 | commit: eliminate git_diff struct member | Chris Bracken | 1 | +4 | -9 |
| 2026-02-17 09:16 | commit: eliminate unnecessary git_diff_free() | Chris Bracken | 1 | +0 | -1 |
| 2026-02-17 09:15 | delta: make GitDelta.{old,new}_file_path owned copies | Chris Bracken | 1 | +8 | -11 |
| 2026-02-17 09:14 | delta: make GitHunk.header an owned copy | Chris Bracken | 1 | +3 | -2 |
| 2026-02-17 09:10 | delta: make GitHunkLine.content an owned copy | Chris Bracken | 1 | +7 | -2 |
| 2026-02-17 09:02 | commit: remove git_commit field from struct | Chris Bracken | 1 | +13 | -13 |
| 2026-02-17 08:50 | commit: make author_email an owned copy | Chris Bracken | 1 | +3 | -2 |
| 2026-02-17 08:49 | commit: make author_name an owned copy | Chris Bracken | 1 | +3 | -2 |
| 2026-02-17 08:49 | commit: make message an owned copy | Chris Bracken | 1 | +4 | -2 |
| 2026-02-17 08:48 | commit: make summary an owned copy | Chris Bracken | 1 | +4 | -2 |
| 2026-02-13 05:49 | Format GN files | Chris Bracken | 2 | +7 | -5 |
| 2026-02-13 06:52 | Rewrite print_gopher_link_padded | Chris Bracken | 3 | +86 | -105 |
| 2026-02-13 03:55 | Delete unused estrlcat, checkfileerror | Chris Bracken | 2 | +2 | -23 |
| 2026-02-13 03:25 | Improve relpath_from_dir implementation | Chris Bracken | 1 | +11 | -13 |
| 2026-02-13 02:56 | Add tests for relpath_from_dir | Chris Bracken | 1 | +30 | -0 |
| 2026-02-11 12:42 | Improve optimize_size config | Chris Bracken | 1 | +18 | -0 |
| 2026-02-11 12:36 | Update binary size to 46 kB in README | Chris Bracken | 1 | +1 | -1 |
| 2026-02-11 10:13 | Fix gout_config: use configs instead of public_configs | Chris Bracken | 7 | +25 | -11 |
| 2026-02-06 10:15 | Make GitRepo->repo type explicit | Chris Bracken | 1 | +1 | -1 |
| 2026-01-06 08:03 | Improve type safety in writer types | Chris Bracken | 10 | +143 | -143 |
| 2026-01-06 07:57 | Extract gitrepo_load_metadata static function | Chris Bracken | 1 | +13 | -9 |
| 2026-01-06 07:34 | Use a switch statement in format_filemode | Chris Bracken | 1 | +23 | -18 |
| 2026-01-06 07:29 | Correct getline handling | Chris Bracken | 1 | +4 | -3 |
| 2025-12-15 02:07 | Move source under src directory | Chris Bracken | 88 | +221 | -219 |
| 2025-12-15 01:25 | Update path_concat to dynamic buffer allocation | Chris Bracken | 10 | +122 | -85 |
| 2025-12-15 00:58 | Use dynamic buffer allocation for paths | Chris Bracken | 2 | +10 | -6 |
| 2025-12-15 00:58 | Correct estrdup error message | Chris Bracken | 1 | +1 | -1 |
| 2025-11-17 12:17 | Improve error message for invalid git repos | Chris Bracken | 1 | +1 | -1 |
| 2025-11-17 11:41 | Prevent int overflow in print_time | Chris Bracken | 2 | +23 | -0 |
| 2025-11-17 09:37 | Remove unnecessary comment | Chris Bracken | 1 | +0 | -1 |
| 2025-11-17 09:37 | Remove . from readwrite paths for gout_index | Chris Bracken | 1 | +2 | -2 |
| 2025-11-17 09:37 | Add locking unveil call | Chris Bracken | 1 | +5 | -0 |
| 2025-11-17 09:37 | Security funcs should always succeed on non-OpenBSD | Chris Bracken | 1 | +6 | -2 |
| 2025-07-25 14:11 | Add tests for print_gopher_link_padded | Chris Bracken | 1 | +122 | -0 |
| 2025-07-26 15:48 | Add tests for print_gopher_link | Chris Bracken | 1 | +42 | -0 |
| 2025-07-26 14:34 | Rename from gitout to gout | Chris Bracken | 60 | +510 | -514 |
| 2025-07-26 14:45 | Delete git submodule instructions | Chris Bracken | 1 | +0 | -20 |
| 2025-07-25 02:21 | Add tests for print_gopher_text_len | Chris Bracken | 2 | +99 | -1 |
| 2025-07-24 21:50 | Add tests for print_xml_encoded_len | Chris Bracken | 1 | +88 | -0 |
| 2025-07-24 20:48 | Add tests for print_percent_encoded | Chris Bracken | 1 | +56 | -0 |
| 2025-07-24 20:45 | Add test for print_time_short | Chris Bracken | 1 | +17 | -0 |
| 2025-07-24 20:43 | Add test for print_time_z | Chris Bracken | 1 | +17 | -0 |
| 2025-07-24 20:37 | Add tests for print_time | Chris Bracken | 2 | +62 | -0 |
| 2025-07-24 02:36 | Validate URLs and email addresses | Chris Bracken | 5 | +70 | -10 |
| 2025-07-23 23:28 | Do not open files over 16MB in size | Chris Bracken | 4 | +22 | -3 |
| 2025-07-23 23:05 | Validate paths don't escape the repo | Chris Bracken | 5 | +55 | -0 |
| 2025-07-23 22:43 | Use gitfile_size_bytes in place of strlen | Chris Bracken | 2 | +29 | -21 |
| 2025-07-23 22:12 | Add git/ to include_dirs | Chris Bracken | 1 | +2 | -1 |
| 2025-06-29 16:17 | Use utest.h instead of googletest | Chris Bracken | 35 | +6969 | -420 |
| 2024-07-11 01:17 | Include errno.h in place of sys/errno.h | Chris Bracken | 3 | +3 | -3 |
| 2024-05-11 06:47 | Add HTML prefix to HTML writer identifiers | Chris Bracken | 12 | +162 | -157 |
| 2024-05-10 21:54 | Make git/*.h types opaque structures | Chris Bracken | 57 | +1375 | -959 |
| 2024-05-10 11:45 | html: Use consistent repowriter naming | Chris Bracken | 3 | +30 | -30 |
| 2024-05-10 11:34 | gitout_index: Add -m option to specify rel=me URL | Chris Bracken | 7 | +44 | -7 |
| 2024-05-09 12:51 | Add background to README.md | Chris Bracken | 1 | +31 | -3 |
| 2024-05-09 12:35 | Add gopher output support | Chris Bracken | 28 | +1394 | -2 |
| 2024-05-06 09:34 | Make output writer type configurable | Chris Bracken | 2 | +25 | -5 |
| 2024-01-02 13:01 | Initial commit | Chris Bracken | 78 | +4968 | -0 |