- Webhook secret doesn't need to be base64 encoded ([691a733](https://git.kemitix.net/kemitix/git-next/commit/691a733fc37cfba5d9be72b57e24c5b9d3c1218a))
- Remove requirement for RUSTFLAGS to be set ([e56d6a3](https://git.kemitix.net/kemitix/git-next/commit/e56d6a3ebbb4b4bfcaacc986269ba898ffbd1bc6))
- Make default server config example valid ([b7abe94](https://git.kemitix.net/kemitix/git-next/commit/b7abe949e2067e1c3663d45a520385d967f19af8))
- Support macOS ([a56c6df](https://git.kemitix.net/kemitix/git-next/commit/a56c6df3f1ad8943185941ca733a4d91069994c1))
- Avoid resetting next to main when dev is ahead of main ([d2ea93f](https://git.kemitix.net/kemitix/git-next/commit/d2ea93f05ec81f7b9af4e2a347fc0b324eb3770f))
- Enable configuration of a webhook for receiving notifications ([c86d890](https://git.kemitix.net/kemitix/git-next/commit/c86d890c2cbbbe87fde58664c68c91b698862044))
- Support sending messages to the user ([e9877ca](https://git.kemitix.net/kemitix/git-next/commit/e9877ca9fa0addf3f018527712355ca0c3d9eb77))
- Dispatch NotifyUser messages to server for user (1/2) ([bcf57bc](https://git.kemitix.net/kemitix/git-next/commit/bcf57bc728fd53f0abb9c4e94d9768fcce5e9dbe))
- Dispatch NotifyUser messages to server for user (2/2) ([288c20c](https://git.kemitix.net/kemitix/git-next/commit/288c20c24b59b2fa5054c81c22d42af2af06afc7))
- Post webhook notifications to user ([9e12f5e](https://git.kemitix.net/kemitix/git-next/commit/9e12f5eb5db5f3b150886b444af4c0ce3dbf2ed9))
- Reduce cognitive complexity of `WebhookNotification` handler. 1/2 ([06292c2](https://git.kemitix.net/kemitix/git-next/commit/06292c2711f3aca6bc369b78f67e1936fdba7eb8))
- Reduce cognitive complexity of `WebhookNotification` handler. 2/2 ([c104dfe](https://git.kemitix.net/kemitix/git-next/commit/c104dfedc1f41020b3468d73a52ae49e0050ebb2))
- Reduce cognitive complexity of 'validate_position' ([92ebd45](https://git.kemitix.net/kemitix/git-next/commit/92ebd453076015993d25102d262a4821fe416e06))
- Flag internally that dev not based on main will require used intervention ([ba67b1e](https://git.kemitix.net/kemitix/git-next/commit/ba67b1ebcba46308a44d3f6dccc16ed8b0acefe3))
- Extract messages and handlers modules from webhook-actor ([8f95ae0](https://git.kemitix.net/kemitix/git-next/commit/8f95ae0058a9f426c5d3f8f96990f6b0eb358b9e))
- Use Option<&T> over &Option<T> ([4978400](https://git.kemitix.net/kemitix/git-next/commit/4978400ece7c37ed51328da0667b2abb1b528fc7))
- Merge actor-macros into core ([48c968d](https://git.kemitix.net/kemitix/git-next/commit/48c968db2d166942ba1be0f09f729d5611cedf18))
- Merge config crate into core crate ([ab728c7](https://git.kemitix.net/kemitix/git-next/commit/ab728c7364caa0c8481cd2a10c3fa57bdc7f2d16))
- Merge git create into core crate ([fa5fa80](https://git.kemitix.net/kemitix/git-next/commit/fa5fa809d99b70970d8f0f2f910afb99837e3913))
- Move server-default.toml inside crate that uses it ([639e561](https://git.kemitix.net/kemitix/git-next/commit/639e561be60a6e22eda14e2b44764eee6afb6ae7))
- Move default.toml inside crate that uses it ([e2b545a](https://git.kemitix.net/kemitix/git-next/commit/e2b545ae396354cd009c12dc44daadac923f140b))
- Move main README into cli crate ([6981a7b](https://git.kemitix.net/kemitix/git-next/commit/6981a7b5e30c854ede6303958db9ab05600bca79))
- Add readmes to each crate to direct users to main crate ([6c92f64](https://git.kemitix.net/kemitix/git-next/commit/6c92f64f8bcec3306ef13a22e91939f555a9c77d))
- Add UnRegisterWebhook from RepoActor ([f44865f](https://git.kemitix.net/kemitix/git-next/commit/f44865fa92857c9c53c124e520a13cd10ce17a22))
- Update link from root README to cli README ([619e1d5](https://git.kemitix.net/kemitix/git-next/commit/619e1d517d07297fc1e9e0d89fafb93e9136cc07))
### Features
- Unregister webhooks form forge during shutdown ([b715755](https://git.kemitix.net/kemitix/git-next/commit/b715755b91cecd8fa6b67a58ac3e6fd322c9c005))
- Reload server config when file is touched ([33907a1](https://git.kemitix.net/kemitix/git-next/commit/33907a1d3284a2df27994f7da1ef65d3047f165f))
- Restore clean check and tag checkout to publish script ([95129dd](https://git.kemitix.net/kemitix/git-next/commit/95129ddeefa26db7cb538f2be2ab5b3609e9a175))
- Typo and missing repository entry in Cargo.toml files ([c289617](https://git.kemitix.net/kemitix/git-next/commit/c289617ba9d530fc04bb197745b75e0c852a7711))
- Don't modify config of external repos ([57a614b](https://git.kemitix.net/kemitix/git-next/commit/57a614bad351c13788b6209635578b082abddb4d))
### Documentation
- Add roadmap to readme ([6a8d1bf](https://git.kemitix.net/kemitix/git-next/commit/6a8d1bf817b69766e15380e9f21679c5ea5d3c39))
### Features
- GitDir tracks when repo is cloned by git-next ([df35244](https://git.kemitix.net/kemitix/git-next/commit/df352443b7e990aecf15ca91b08fef510c391f22))
- Update auth of interal repos when changed in config ([9c20e78](https://git.kemitix.net/kemitix/git-next/commit/9c20e780d02dea6ede51ace2ebcba033d5fbd8e3))
- Log as an error when webhook url ends with a slash ([7578ab3](https://git.kemitix.net/kemitix/git-next/commit/7578ab31443a752c8f3ba792e782294e9518698c))
- Perform controlled shutdown on ctrl-c ([fd762e2](https://git.kemitix.net/kemitix/git-next/commit/fd762e2bd2fa054988f7ff31a37fb9a1cf603fd0))
- Recheck failed status ([5f36282](https://git.kemitix.net/kemitix/git-next/commit/5f36282667c8c2034f7259db0053d5561788047a))
### Miscellaneous Tasks
- Lint fix for Dockerfile ([cbf6c3b](https://git.kemitix.net/kemitix/git-next/commit/cbf6c3b73c04f844c30a26ade7b2ebd30d4c1e12))
- Bump docker runtime os image ([f61c556](https://git.kemitix.net/kemitix/git-next/commit/f61c556f5bd5d7206657a1958df16398271fdccd))
- Remove unused GitDir::into_string() function ([65e9ddf](https://git.kemitix.net/kemitix/git-next/commit/65e9ddf5db05cf0ff2024ae70eb886475acf769a))
- Where repo config is in server should register webhook ([975c9e3](https://git.kemitix.net/kemitix/git-next/commit/975c9e315ce2a59ebb6742a0b1e42c1716dcec8c))
- Github: restarting server creates duplicate webhook for repo ([db90280](https://git.kemitix.net/kemitix/git-next/commit/db9028064188d766fc1ff872b81f63d1f6758fdd))
- Start validating repo after registering webhook ([68005d7](https://git.kemitix.net/kemitix/git-next/commit/68005d757d919a48bca3ac9d76583b9d98e3f89a))
- ReceiveRepoConfig tries to send two messages ([c9efbb9](https://git.kemitix.net/kemitix/git-next/commit/c9efbb993692a4a106d96eafb149e04f3aca0458))
- Don't retry validation when non-retryable error ([ae7933c](https://git.kemitix.net/kemitix/git-next/commit/ae7933c79ee6dc3190255282705ca030fd3d00a0))
- Github commit should use common headers ([73ab149](https://git.kemitix.net/kemitix/git-next/commit/73ab149aba4f6aac124b6a127514a443be91b914))
- Messages should always get delivered ([83ce957](https://git.kemitix.net/kemitix/git-next/commit/83ce95776e96639bfce09f5a6342f5d27eb0e8c6))
- Server: collapse tests to base of crate ([0fd3373](https://git.kemitix.net/kemitix/git-next/commit/0fd33739c108c22f7f8a36857dd04295a713fff7))
- Update macro signatures and add documentation support ([717cc8b](https://git.kemitix.net/kemitix/git-next/commit/717cc8b0bc19a5c02b6180521969a4fd7789644a))
- Remove dead code ([32fb92f](https://git.kemitix.net/kemitix/git-next/commit/32fb92fb8d14917c6ae82d42994b18770afeb025))
- CloneRepo use actor::do_send to send LoadConfigFromRepo ([c571e9e](https://git.kemitix.net/kemitix/git-next/commit/c571e9ee8ddad8333889846b59b612461248136f))
- Repo-actor: RepoActorLog: replace Mutex with RwLock ([3e137c6](https://git.kemitix.net/kemitix/git-next/commit/3e137c648099687a5faf52945650ec7325f8bc63))
- Tests: repo-actor: use methods on RepoActorLog ([52df211](https://git.kemitix.net/kemitix/git-next/commit/52df2114e5d6df2b150b64cd30e3c5a3c229fe28))
- Git: replace Mutex with RwLock in Repository ([73b416e](https://git.kemitix.net/kemitix/git-next/commit/73b416e3a010f9cd9522c01bca5e7b10dde1cb86))
- Repo-actor: replace Mutex with RwLock ([8fceafc](https://git.kemitix.net/kemitix/git-next/commit/8fceafc3e1f2d84299e4f2102881ec15c9688395))
- File-watcher doesn't debug log on each loop ([c85eee8](https://git.kemitix.net/kemitix/git-next/commit/c85eee85e94a6059efda1ac1ee3a0b3e59be17d1))
- Only start actor system when server starts ([dfc0c1d](https://git.kemitix.net/kemitix/git-next/commit/dfc0c1dc8097234daf5a9e44f40dc834778e4d5f))
### Testing
- Tidy up config, forgejo and git tests ([271f4ec](https://git.kemitix.net/kemitix/git-next/commit/271f4ec1dcb4fd0020221cbd600d3cb1dfdbf04c))
- Add more tests to git crate ([588666f](https://git.kemitix.net/kemitix/git-next/commit/588666ffe19d13c820c4f19dd162b9aea0a7f1b0))
- Make TestRepository from git crate available to other crates ([be78597](https://git.kemitix.net/kemitix/git-next/commit/be78597331380aded1f750bc11c5267ec492943f))
- Use println rather then eprintln in tests ([b9940cd](https://git.kemitix.net/kemitix/git-next/commit/b9940cd205678d8533f057e58e8d5ba1263e593f))
- Repo-actor: add more tests ([e585b07](https://git.kemitix.net/kemitix/git-next/commit/e585b07f6b987294a85107aa268b9083fa1495cc))
- Add more debug tracing ([40c61fa](https://git.kemitix.net/kemitix/git-next/commit/40c61fa9ff41c552aee7e08bc359113f47cc0515))
- Github: use correct url to check CI status ([46e2871](https://git.kemitix.net/kemitix/git-next/commit/46e2871e17677745ef6d11e7e3d50014d6da1e1d))
- Github: as soon as any check fails, ignore any pending ([7b280a2](https://git.kemitix.net/kemitix/git-next/commit/7b280a2a0a3090ad6726fe467d2c52d864a78fb9))
- Add grcov-coverage as an alternate report generation recipe ([d67b821](https://git.kemitix.net/kemitix/git-next/commit/d67b821130d1b73765ffcd60952a35141a4b8d3d))
- Remove old implementation of forgejo get all branches ([9f04b1a](https://git.kemitix.net/kemitix/git-next/commit/9f04b1ae6cd380318ab7b755d7adc6baf44f727a))
- 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))