- New commit_log matches original from API request ([3642b2c](https://git.kemitix.net/kemitix/git-next/commit/3642b2cdd11de2bf49c1214c9938a86517d6a7fd))
- Move forgejo branch test to forgejo crate ([7818b25](https://git.kemitix.net/kemitix/git-next/commit/7818b25a5c5b33c8a56cd597d48ded2296d1e7f3))
- Get commit log from local repo (step 1) ([7a0247e](https://git.kemitix.net/kemitix/git-next/commit/7a0247ea03b61b3b93a712db1db4aad52778d1c7))
### Testing
- Don't record coverage for mock forge ([d76be11](https://git.kemitix.net/kemitix/git-next/commit/d76be1197a7f96c4b5d6dd7d749d0cb07b45bf36))
### Build
- Forge only include forgejo crate when feature enabled ([4cd797a](https://git.kemitix.net/kemitix/git-next/commit/4cd797ac0a90516eabfb031132739614d87426fc))
- Display expected auth in logs in invalid request ([c6c8dce](https://git.kemitix.net/kemitix/git-next/commit/c6c8dcedc5d074f0c136c6ebef36d448ebe6af92))
### Miscellaneous Tasks
- Version set to 0.5.0 ([692a860](https://git.kemitix.net/kemitix/git-next/commit/692a860f6c68e202a5176f01a694a23ff3ea79bd))
### Refactor
- Split mock, real and open into their files ([155497c](https://git.kemitix.net/kemitix/git-next/commit/155497c97f0c56a531fe5dd1a8e8919e22b0c0a3))
- Only expose OpenRepository from repository::open ([c3c4c41](https://git.kemitix.net/kemitix/git-next/commit/c3c4c41c732db52758d8ea42c0e4b6bad8a78ae1))
### Testing
- Add more tests ([f4b8401](https://git.kemitix.net/kemitix/git-next/commit/f4b8401bb113c3d645ba81a8765577829b2f2cb6))
### Build
- Validate format locally ([7b1575e](https://git.kemitix.net/kemitix/git-next/commit/7b1575eb09ddbfa383ff12991b04c2810a88f10a))
- Version set to 0.4.1 ([d241273](https://git.kemitix.net/kemitix/git-next/commit/d241273345c73f7afb29bf1623b72b9680a5b7bb))
### Build
- Upgrade to clang-16 ([7b0d567](https://git.kemitix.net/kemitix/git-next/commit/7b0d56746fe559b44026d8b2144c1cd4967eb076))
### Revert
- "build(woodpecker): remove redundant build of a builder images" ([8e22a47](https://git.kemitix.net/kemitix/git-next/commit/8e22a472cb4e71e7bd49e4a89c7547af2133a24c))
- Deserialise gitdir as PathBuf, but expose it as GitDir ([ee8b1e9](https://git.kemitix.net/kemitix/git-next/commit/ee8b1e9fce87097548b0cc0544077c192c81bca5))
- Format path to clone into correctly ([555aada](https://git.kemitix.net/kemitix/git-next/commit/555aada7e99899ed53efcf51ecd13b37dc64e0b8))
- Use local repo or clone to allow git push ([5ba5a12](https://git.kemitix.net/kemitix/git-next/commit/5ba5a126c3d3ca74e64da370b22b14fa87b3b5fb))
- Don't try to reset next when dev is not based on main ([7e79f48](https://git.kemitix.net/kemitix/git-next/commit/7e79f4877a8a31e1a8610af5d9ca33a8bce7c651))
### Features
- Add recipe for exposing webhook server ([dfd7d32](https://git.kemitix.net/kemitix/git-next/commit/dfd7d32c948c7af3aec48927af9d7813e2fc2d04))
- Replace webhook if it already exists ([ec9571a](https://git.kemitix.net/kemitix/git-next/commit/ec9571a182598291a95357778870c8216b5cd7d8))
- User can specify git directory to use for a repo ([7048530](https://git.kemitix.net/kemitix/git-next/commit/704853017b1e63c73a96f52cbb4813dccc2e765a))
- User must specify a directory to store data ([16dc823](https://git.kemitix.net/kemitix/git-next/commit/16dc823f58aded0bcabaea46efd223f6e0ee6904))
- Add ability to clone a repo ([9187005](https://git.kemitix.net/kemitix/git-next/commit/91870055b0ec2ff487724adc1f48a23aa28e43c2))
- Add GitDir type ([56e253b](https://git.kemitix.net/kemitix/git-next/commit/56e253b545188c4a0a114bd4a75501ea19f3a248))
- Use GitDir in place of raw PathBuf ([a024c3d](https://git.kemitix.net/kemitix/git-next/commit/a024c3de5e04d3fd1d339c91dca2c8598b70e3c1))
- Add gitdir to RepoDetails type ([b71aece](https://git.kemitix.net/kemitix/git-next/commit/b71aece8c90144baee2820e180570cf3d8a7641a))
- Clone repo when starting repo ([17f5f62](https://git.kemitix.net/kemitix/git-next/commit/17f5f62e614e97fec696c6f0c62dcafeaeda1300))
- Impl Deref for GitDir ([7b46045](https://git.kemitix.net/kemitix/git-next/commit/7b46045737696328f4bd10197559374ff786e8f1))
- Validate repo if it already exists ([ff6e61b](https://git.kemitix.net/kemitix/git-next/commit/ff6e61b0eefb326092af97dcc44c6d5623acbd43))
- Use specified gitdir when supplied ([31ef0c1](https://git.kemitix.net/kemitix/git-next/commit/31ef0c19fbf10d0a91d830c6b1ec45208bdbed63))
- Remove redundant call to register webhook ([2c5f497](https://git.kemitix.net/kemitix/git-next/commit/2c5f497be2d6f6f175527ead3ebb7e988761c365))
- Avoid duplicate messages being passed for repo actor ([da5bc69](https://git.kemitix.net/kemitix/git-next/commit/da5bc6950817afb84a55b1e11a709ad199d1a2cd))
- Extract Server actor ([9b21117](https://git.kemitix.net/kemitix/git-next/commit/9b211179bf8c3a5a1273a7f343a56cf40628c733))
- Give Server an incremental generation counter ([b1638a6](https://git.kemitix.net/kemitix/git-next/commit/b1638a65fc6e41e1d1182974d4612ee003af4311))
- Restart server when config file is updated ([6d147ef](https://git.kemitix.net/kemitix/git-next/commit/6d147efe32f5591a84aff8780de03de2a28beee0))
- Don't load config from repo if repo config is in server config ([ec2ebe7](https://git.kemitix.net/kemitix/git-next/commit/ec2ebe70cf60ecfb2232729ef3ef2137f220c3a7))
- Reload .git-next.toml from repo when main branch updated ([e5a8051](https://git.kemitix.net/kemitix/git-next/commit/e5a8051a3160902b78f29b0e4fdf6dfbc1bbb295))
- Extract git::reset from gitforge::forgejo ([e806278](https://git.kemitix.net/kemitix/git-next/commit/e8062788a0a0195a4b16e7bdbb30ec331195b0ff))
- Include repo in missing handler logs ([b7aa417](https://git.kemitix.net/kemitix/git-next/commit/b7aa417831431c2fc835583daa2817d10056c9d4))
- Cache Repository in RepoActor ([992821d](https://git.kemitix.net/kemitix/git-next/commit/992821d563ade9ca109cd400614c28913b9ccf5e))
- Use cached Repository from RepoActor ([62bee38](https://git.kemitix.net/kemitix/git-next/commit/62bee38c85397bb4fcde8e05cca5872eed24843b))
- Allow specifying id address and port to bind to ([1cd56d9](https://git.kemitix.net/kemitix/git-next/commit/1cd56d953ef084a19c6013eeffe34030d6230ef7))
### Miscellaneous Tasks
- Version set to 0.3.0 ([c625105](https://git.kemitix.net/kemitix/git-next/commit/c6251052b78854c087e83d6907aefe976b8e4cca))
- Clean up and reformat logging ([7516ec1](https://git.kemitix.net/kemitix/git-next/commit/7516ec1dc17258fc2f362d53aaf39b2757e61433))
- More cleaning up of logging around fetch and reset ([709fde1](https://git.kemitix.net/kemitix/git-next/commit/709fde18d11c15c9ef51a3d8bdbf7c5052c6119a))
- Migrate some types from forge ([0d57ee7](https://git.kemitix.net/kemitix/git-next/commit/0d57ee7bc0f60b7edf8c73cfda0631ddbafeec9e))
- Delete dead code ([0bfa1df](https://git.kemitix.net/kemitix/git-next/commit/0bfa1df875f7dc8dfeeecc173db6e0239d1c1166))
- Move server config loading out of forgejo module ([50a969e](https://git.kemitix.net/kemitix/git-next/commit/50a969ede64af5115bba2807bf0481db34b6bd29))
- Use 'server_repo_config' consistently ([1170510](https://git.kemitix.net/kemitix/git-next/commit/1170510c440f1d8384f1d6741115d650cfa56850))
- Use 'repo_path' use consistently ([18143c1](https://git.kemitix.net/kemitix/git-next/commit/18143c17fd519e5c80e6ea2a37c0095ba76b7a30))
- Move tests into their own file ([e10561f](https://git.kemitix.net/kemitix/git-next/commit/e10561f853b993e3c295d4da318c63c067211ff8))
- Rename config variables,etc as repo_config ([32d54cf](https://git.kemitix.net/kemitix/git-next/commit/32d54cfc1c5aefd0378f60cfea7e2ba84824f811))
- Rename name to repo_alias for consistency ([8b56a18](https://git.kemitix.net/kemitix/git-next/commit/8b56a185d37028c343054c768b17d52e8db9f152))
- Rename name to forge_name for consistency ([fc1c796](https://git.kemitix.net/kemitix/git-next/commit/fc1c79620cfea7d34c531ebc4f3690240b05b3b5))
- Rename forge as forge_config ([3dfbd44](https://git.kemitix.net/kemitix/git-next/commit/3dfbd44b373bbd0bcfc5e3a0d732945319e6cb83))
- Extract Repository::open and clone ([daa40e7](https://git.kemitix.net/kemitix/git-next/commit/daa40e762196d276df271a219de47a0c0931752c))
### Build
- Renovate should avoid pointless patch PRs ([60af21d](https://git.kemitix.net/kemitix/git-next/commit/60af21d07e6e1ba4c7211d71b44c318a2081e54c))
- Specify clippy flags in Cargo.toml ([d42c8fb](https://git.kemitix.net/kemitix/git-next/commit/d42c8fb8900a396b972e0d70ad58b9b59fc1bce4))
- Avoid using terrors::OneOf across an await boundary ([0b427f1](https://git.kemitix.net/kemitix/git-next/commit/0b427f1d4cf6d46291520eb6d2b26334fc730ace))
- Don't reload config when updating next branch ([3735afb](https://git.kemitix.net/kemitix/git-next/commit/3735afb2f80d478573e8234fbc2507bec051ec7d))
- Prevent losing a task waker ([869935d](https://git.kemitix.net/kemitix/git-next/commit/869935dfc2a281f3c638c41812249390dbe78330))
- Treat a blank status check result as pending ([e8d174e](https://git.kemitix.net/kemitix/git-next/commit/e8d174ee846abe353d8859dfe0f822dbcab03c1b))
- Don't log url containing API token ([ee9cc53](https://git.kemitix.net/kemitix/git-next/commit/ee9cc53540c75e5c513b6204b28f5d7204770251))
- Visibility on methods ([af221f8](https://git.kemitix.net/kemitix/git-next/commit/af221f8a2f64f806a3699f60c410ab10527f3424))
- Always reschedule to validate repos ([e272ca2](https://git.kemitix.net/kemitix/git-next/commit/e272ca296bc1749865b284aeb66d39b5efebf56e))
- Add docs to types ([229d47f](https://git.kemitix.net/kemitix/git-next/commit/229d47f7c7d61f62033101f7b48f8eefbc581ba6))
### Features
- Wrap API Token in a secrect::Secret and avoid logging ([cedaf16](https://git.kemitix.net/kemitix/git-next/commit/cedaf16acf75d10f6f126906b586c358f201121c))
- Don't advance next branch if the target commit message is invalid ([4e6a306](https://git.kemitix.net/kemitix/git-next/commit/4e6a306a723a24ebc7f385daed90d688e2a092ae))
- Abstract Git command execution into injectable enum ([5fcf16e](https://git.kemitix.net/kemitix/git-next/commit/5fcf16ea753466b1f375648c2d59d39d9c84c890))
- Allow repo config to be specified in server config ([0105631](https://git.kemitix.net/kemitix/git-next/commit/0105631e3ac27eee13b456f9055371bd0d3f5a06))
- Add webhook URL field to server config ([069b313](https://git.kemitix.net/kemitix/git-next/commit/069b313fc33f17b1744f7c22a2c7df902fe58860))
- Update next branch when not based on main ([0622e60](https://git.kemitix.net/kemitix/git-next/commit/0622e6092bf05da949903c6c6159e3fd67b099aa))
- Add webhook server ([df2d9d6](https://git.kemitix.net/kemitix/git-next/commit/df2d9d684c5cca1e724d42d3c455ec194a1e876f))
- Handle messages received via webhook for ForgeJo ([24cb485](https://git.kemitix.net/kemitix/git-next/commit/24cb485410e2aa54bf60b9eb31644890cdfc3dfd))
- Reschedule ValidateRepo when checks are Pending ([b398ac3](https://git.kemitix.net/kemitix/git-next/commit/b398ac3fd303980070d6e7a9719e34337416c5c1))
- Only accept authorised messages ([64a6b84](https://git.kemitix.net/kemitix/git-next/commit/64a6b84ee4e803a2f73a6c8f657e826fd48ca7a5))
### Miscellaneous Tasks
- Clean up some logging ([8c4ad4b](https://git.kemitix.net/kemitix/git-next/commit/8c4ad4b5348acbbbd4ca529f47dd4f5041ca42cf))
- Stop logging all network requests ([0721b63](https://git.kemitix.net/kemitix/git-next/commit/0721b63448f0f075bc64343f0362b2fdda4e7fff))
- Doesn't properly detect when dev or next are ahead ([50a56aa](https://git.kemitix.net/kemitix/git-next/commit/50a56aadee435b2369a4f709ba939f838adf3216))
- Pause before checking CI status when just updated branch ([9469d27](https://git.kemitix.net/kemitix/git-next/commit/9469d274767d335e1eb95b2969643b071400651b))
- Reduce complexity of StartMonitoring handler ([7dab1da](https://git.kemitix.net/kemitix/git-next/commit/7dab1da44b9ad3d4ebfcee2241425e5fa78c0e13))
- Clean up instrumentation ([1c9f7cb](https://git.kemitix.net/kemitix/git-next/commit/1c9f7cb4ea3387518540f1cd6bb04ba012ef86e6))
- Restore lost sleep ([bb4d171](https://git.kemitix.net/kemitix/git-next/commit/bb4d171174f4e7372fa4648ef70cf2621daa8fb7))
- Validate branch head positions ([3203bbd](https://git.kemitix.net/kemitix/git-next/commit/3203bbd967d84d7dba0c43a7db7d857fecd55e48))
- Assess next action for repo ([70e0f94](https://git.kemitix.net/kemitix/git-next/commit/70e0f94042856c824127d97a55d89ffee699b205))
- Add stub for branch::advance_main ([7ed30fc](https://git.kemitix.net/kemitix/git-next/commit/7ed30fc382d95f2a4ad3dbd15d9a0fdaedd2f273))
- Add message and handler for AdvanceMainTo(Commit) ([ad7d513](https://git.kemitix.net/kemitix/git-next/commit/ad7d5134810c9ec2175f15494defc6bab6a586a9))
- Add deserialise types for commit status ([8ad84bc](https://git.kemitix.net/kemitix/git-next/commit/8ad84bc72b8e58eab208941503da47ac19ede551))
- Add stub for forge::forgejo::get_commit_status ([a7a3f8a](https://git.kemitix.net/kemitix/git-next/commit/a7a3f8a67b0b8ae9f58a17431cf3db59f440f432))
- Next commit status is returned as pass, fail ro pending ([546d915](https://git.kemitix.net/kemitix/git-next/commit/546d91554c7e1fe45f87ea0f9ef3d891436a75c7))
- Implement Display for forge::Commit ([d64024e](https://git.kemitix.net/kemitix/git-next/commit/d64024e1abb439283ae0f244efba506fccb54946))
- Add marker info logs for advance main and next ([5c4b745](https://git.kemitix.net/kemitix/git-next/commit/5c4b745c00a71af7d15e83d4a6ff679484709602))
- Log returned status for next branch ([e27b050](https://git.kemitix.net/kemitix/git-next/commit/e27b050a093df37719a966e18e49d940105202ed))
- Implement advancing main branch to the next commit ([3a761b5](https://git.kemitix.net/kemitix/git-next/commit/3a761b5b21f464eac889209234d0ff4a7cdd6661))
- Add branch::reset function ([ed1ab6f](https://git.kemitix.net/kemitix/git-next/commit/ed1ab6faa519969c39c054af560a0b7ee08c18c5))
- Force push next branch to main when it isn't a dev ancestor ([115b353](https://git.kemitix.net/kemitix/git-next/commit/115b353389365795afbc688c45578bf2bb04b4f2))
- Git command output is suppressed ([f7dc27f](https://git.kemitix.net/kemitix/git-next/commit/f7dc27f67ec3d452c7f4f7a3a8f919d9000076ba))
- When no action to take, wait 10 seconds then restart ([c9d52a5](https://git.kemitix.net/kemitix/git-next/commit/c9d52a5b7f230606449b6dc7b2b496ce4bc83dc7))
- Pass RepoDetails by reference ([d2d49f3](https://git.kemitix.net/kemitix/git-next/commit/d2d49f353c8cd09ca75646ccba6b585921ed0c8a))
- Reuse branch::reset to advance main branch to next ([ab58981](https://git.kemitix.net/kemitix/git-next/commit/ab58981f87cacfc971dc1f269d272f2023e4e3ad))
- Reuse branch::reset to advance main branch to next ([6bad8a2](https://git.kemitix.net/kemitix/git-next/commit/6bad8a27f70b68699c9deeb1d567d60cc12fcedb))
- Reuse branch::reset to advance next towards dev ([e0b1571](https://git.kemitix.net/kemitix/git-next/commit/e0b15712c2cfe5bf226055edf6b2ef7e04744f62))
- Rename ResetForce::Normal as None ([ec258bc](https://git.kemitix.net/kemitix/git-next/commit/ec258bca97eb79b8720dfa7cd4b44feaa3e548eb))