# Changelog

All notable changes to this project will be documented in this file.

## [3.1.0](https://github.com/nikolamilekic/keykeeper/compare/3.0.4..3.1.0) - 2026-07-03

### ⛰️ Features

- Add the ability to specify AWS region - ([9fea2fe](https://github.com/nikolamilekic/keykeeper/commit/9fea2feec6cdda4d276714cb216d88680807b8fe))

### 🐛 Bug Fixes

- Use path style when accessing buckets to make KeyKeeper work with Garage - ([0848ebc](https://github.com/nikolamilekic/keykeeper/commit/0848ebc81d29ff5918714ad769b71a721f424b5c))
- Fix file listing to make it work with Garage - ([f04d044](https://github.com/nikolamilekic/keykeeper/commit/f04d044e4850989400d00ee06084bbe2267b1861))

### 🚜 Refactor

- More project restructuring - ([127ba58](https://github.com/nikolamilekic/keykeeper/commit/127ba58ceaea5536e1a8d10004c1dbcd62c7df86))

### ⚙️ Miscellaneous Tasks

- Update dependencies - ([dbcf563](https://github.com/nikolamilekic/keykeeper/commit/dbcf563eb0164f9b1d0f25ae0234177d8a0e3a4e))
- Upgrade iced to 0.14 - ([e889322](https://github.com/nikolamilekic/keykeeper/commit/e88932281118d761121b1bb11865a194331ce689))
- Update dependencies - ([aa159a6](https://github.com/nikolamilekic/keykeeper/commit/aa159a645e8140f8e63451d304f15de86707256b))
- Update toolchain - ([b454e0d](https://github.com/nikolamilekic/keykeeper/commit/b454e0deefd29fabdfac334fdee7474c0b33aafd))
- Remove AGENTS.md file - ([733b344](https://github.com/nikolamilekic/keykeeper/commit/733b3444e709945802765f922b731ee2a98e5f02))
- Bring back cargo-dist - ([75f2025](https://github.com/nikolamilekic/keykeeper/commit/75f2025ea320fab0d77a1e39609daa8cc80f9f0d))

## [3.0.4](https://github.com/nikolamilekic/keykeeper/compare/3.0.3..3.0.4) - 2026-02-20

### ⚙️ Miscellaneous Tasks

- Update packages - ([bfba5dd](https://github.com/nikolamilekic/keykeeper/commit/bfba5dd8888e366071061ae3f0b860708c87798c))
- Switch to Release-plz - ([9795745](https://github.com/nikolamilekic/keykeeper/commit/9795745a6745fd97bdfe43d02e5498cbaa7aaf91))
- Remove stale dev files - ([5bc2db5](https://github.com/nikolamilekic/keykeeper/commit/5bc2db58b3cfecf4e2e6c709ded3ea7bbb985ef0))
- Remove nix and update dev readme - ([ff9d36e](https://github.com/nikolamilekic/keykeeper/commit/ff9d36ec73edea50d78e3c0422f048a1a00e24f3))
- Add .editorconfig - ([02c7f4d](https://github.com/nikolamilekic/keykeeper/commit/02c7f4dfbf3aba28ebde8185c739fcfb00d8159d))

## [3.0.3](https://github.com/nikolamilekic/keykeeper/compare/v3.0.2..v3.0.3) - 2025-10-19

### 🐛 Bug Fixes

- Ensure settings directory exists - ([d087a09](https://github.com/nikolamilekic/keykeeper/commit/d087a093a3c2e35f14a9e861e479860b715fbc2c))

### ⚙️ Miscellaneous Tasks

- Remove nix build - ([9c626cc](https://github.com/nikolamilekic/keykeeper/commit/9c626cc69bfc42613f9851b6e27f703a48425ec5))

## [3.0.2](https://github.com/nikolamilekic/keykeeper/compare/v3.0.1..v3.0.2) - 2025-08-24

### 🐛 Bug Fixes

- Correct Windows icon path - ([29ba773](https://github.com/nikolamilekic/keykeeper/commit/29ba7730eaa885c0d6991bc91160f542487c83ec))
- Fix typo in settings error message - ([54e7f66](https://github.com/nikolamilekic/keykeeper/commit/54e7f6603cb9e63db4f1ebf6494cb9debaf04576))
- Allow Decrypt output copy/paste - ([c4f913a](https://github.com/nikolamilekic/keykeeper/commit/c4f913a151a450fd4920777478a7e100cb2f14dc))
- Ensure all AWS server names are unique - ([cbd3b9c](https://github.com/nikolamilekic/keykeeper/commit/cbd3b9cd4e8b235f615e2adba23147c51cf4f308))
- Fix Base64 error reporting of bad characters - ([183d9a3](https://github.com/nikolamilekic/keykeeper/commit/183d9a33009954d02a32443fb28c3ed9f6fb79ae))
- Fix Bech32 error reporting of bad characters - ([1a3fc2f](https://github.com/nikolamilekic/keykeeper/commit/1a3fc2f59c30bd8a666520753d7f7b398eef9b25))
- Correct decryption error message - ([92c1659](https://github.com/nikolamilekic/keykeeper/commit/92c1659e68cb275687efb88451e003e7a86c0d72))
- Reject projects encrypted with a non-project key - ([7392f00](https://github.com/nikolamilekic/keykeeper/commit/7392f00460037bc03f0856d4e00143bef2e1d88a))

### 🚜 Refactor

- Improve project logic encapsulation - ([14c86e0](https://github.com/nikolamilekic/keykeeper/commit/14c86e0ad683789f1b4cfea5e5db3fec4628fcb5))
- Change ConfirmationDialog's strings to Cow<'static, str> - ([53ee07f](https://github.com/nikolamilekic/keykeeper/commit/53ee07f0faa437453ae36a39ebb2777f20be37f0))
- Simplify shell_update - ([e545a98](https://github.com/nikolamilekic/keykeeper/commit/e545a98e5085fedebefb8fc906e4d2e630af9cb9))
- Reorganize encrypt/decrypt logic - ([546d0db](https://github.com/nikolamilekic/keykeeper/commit/546d0db5e945f551daa2374da02d45fdf9406f5b))
- Combine Open and OpeningDialog - ([7c0a417](https://github.com/nikolamilekic/keykeeper/commit/7c0a417f4fcba2117377b043ee57acadc2ebb650))
- Combine ProjectView and Project - ([c1266c5](https://github.com/nikolamilekic/keykeeper/commit/c1266c58d7f29cb3ba530f0163b0914d97691106))
- Reorganize AWS logic - ([e52141c](https://github.com/nikolamilekic/keykeeper/commit/e52141c044102eb32e022038abfcea966ed434f1))
- Rename States, Messages, and UpdateResults - ([a1a4094](https://github.com/nikolamilekic/keykeeper/commit/a1a40941cf8e5e9cc768e1f194424c97c3236f5a))
- Remove unnecessary clones - ([d0bb7fa](https://github.com/nikolamilekic/keykeeper/commit/d0bb7fa28a8a59cbf487baeaffb0e58eac3d2345))
- Remove ProjectData - ([c202472](https://github.com/nikolamilekic/keykeeper/commit/c20247238bac1b8d155245b82c6a0e31bb5be46a))
- Reorganize files - ([317b6a7](https://github.com/nikolamilekic/keykeeper/commit/317b6a7d0fd4e64a2f049f2ae5a108fc8e51c430))
- Separate data storage from encryption - ([5ebca08](https://github.com/nikolamilekic/keykeeper/commit/5ebca08b85b4a9fba33f1f947c32138d09cc89f2))
- Make Project members private - ([c11ea10](https://github.com/nikolamilekic/keykeeper/commit/c11ea10b86af8a6c51c83ecc8530b2fe74916abf))

### 📚 Documentation

- Merge development notes into README - ([ecc4f9d](https://github.com/nikolamilekic/keykeeper/commit/ecc4f9d5d525f9e45ab8dbdd29864d3a745e83f7))

### ⚡ Performance

- Do not load files into memory twice - ([2983071](https://github.com/nikolamilekic/keykeeper/commit/29830717e4667e06a81f89bb5d62c9ab82f5b884))

### 🎨 Styling

- Reorganize use-s - ([f870d56](https://github.com/nikolamilekic/keykeeper/commit/f870d56a8ddda843cfd619ef4877f0904bac578b))
- Apply new Clippy recommendations - ([afec88e](https://github.com/nikolamilekic/keykeeper/commit/afec88e18347bc474f8384983b30a6162a119dc5))
- Apply new rustfmt rules - ([3734b80](https://github.com/nikolamilekic/keykeeper/commit/3734b8065d39fb472da2c62575898c8bb06c5820))

### 🧪 Testing

- Assert remaining key store ID after layer removal - ([5ba09ca](https://github.com/nikolamilekic/keykeeper/commit/5ba09ca9159ad5e6bee7327ca307a8af02b4dd63))
- Add support for cargo-insta - ([5fdf55e](https://github.com/nikolamilekic/keykeeper/commit/5fdf55ed463f6c4772ed646ae325eafe34c2c593))

### ⚙️ Miscellaneous Tasks

- Fix naersk build - ([4e9ec4c](https://github.com/nikolamilekic/keykeeper/commit/4e9ec4c9f7b55a187117503da0e2c75daf350fe2))
- Update packages - ([112f1bd](https://github.com/nikolamilekic/keykeeper/commit/112f1bd7b6edc175eff8a754ebe8fb19e8dcaa0e))
- Update to Rust 1.88 - ([13f8d91](https://github.com/nikolamilekic/keykeeper/commit/13f8d91ae2a4fe08a3dec51a1f4e95000d106220))
- Remove cargo-dist - ([fb0390e](https://github.com/nikolamilekic/keykeeper/commit/fb0390e182c9dfe0068fbf9a2c77ac7b784502b1))
- Add agent instructions - ([897c621](https://github.com/nikolamilekic/keykeeper/commit/897c621cf36b003ba8b1a8fe0f201a408ff80987))
- Make nix build pure - ([0694a17](https://github.com/nikolamilekic/keykeeper/commit/0694a17ebb8ba0f316140100d52aa56bb7b87d49))

## [3.0.1](https://github.com/nikolamilekic/keykeeper/compare/v3.0.0..v3.0.1) - 2024-12-16

### 🐛 Bug Fixes

- Improve error message when retrieving AWS files fails - ([6ccb231](https://github.com/nikolamilekic/keykeeper/commit/6ccb2318ac35a481ea98b1d472afd685db03b802))
- Output error when trying to make changes and project is locked - ([b409891](https://github.com/nikolamilekic/keykeeper/commit/b409891767383c42f4e4bf6c861fc9432c5a19e6))
- Fix several UI layout issues - ([381697f](https://github.com/nikolamilekic/keykeeper/commit/381697fb805a8f2fa729318cb9441bca1cf6ff8d))
- Fix button layouts broken by Iced 0.13 - ([ab16d4f](https://github.com/nikolamilekic/keykeeper/commit/ab16d4f0083c111e7abc60808d6ded19db547579))

### 🚜 Refactor

- Rename SPACING to DEFAULT_SPACING - ([0eff6e4](https://github.com/nikolamilekic/keykeeper/commit/0eff6e46cdf59d44711d801c4003aa18eea57193))
- Combine shell and main - ([a952beb](https://github.com/nikolamilekic/keykeeper/commit/a952bebeca7c1ac72942e9f92ced2a595b7fc3a7))
- Reorganize ui module - ([ff7380e](https://github.com/nikolamilekic/keykeeper/commit/ff7380e06c1dc2b8142fdb746e01ea1618144315))

### ⚙️ Miscellaneous Tasks

- Upgrade iced to 0.13 - ([5dcd05f](https://github.com/nikolamilekic/keykeeper/commit/5dcd05fbc67d5dbb6f5de3aabc936ec91bbd6dcb))
- Upgrade packages - ([2fa7e14](https://github.com/nikolamilekic/keykeeper/commit/2fa7e148659ee921bb969f75b4c27223dacb64d3))
- Update packages - ([4673099](https://github.com/nikolamilekic/keykeeper/commit/4673099a38f2f359816395d43f17644ed8fbfe3d))
- Exclude rust from environment - ([3838e78](https://github.com/nikolamilekic/keykeeper/commit/3838e78e76a0f8c58e85467080f1b250a829e8bf))
- Remove extra whitespace from changelog template - ([c88c967](https://github.com/nikolamilekic/keykeeper/commit/c88c967184d12444cd39eb6abad540e8ad663b53))
- Update cargo dist - ([1a15f77](https://github.com/nikolamilekic/keykeeper/commit/1a15f7724b171881a3cc933a1fb52ef353bf4f32))
- Improve build/dev process with nix - ([62f7266](https://github.com/nikolamilekic/keykeeper/commit/62f72662bd86d2b22a91e550a897f5e01ae991c7))
- Pin Rust toolchain - ([f949974](https://github.com/nikolamilekic/keykeeper/commit/f949974e78ca61fe353338c0c26525265fa86766))
- Git ignore unnecessary files - ([b227c58](https://github.com/nikolamilekic/keykeeper/commit/b227c58c115c934234a82c8795d15b794efebf64))

## [3.0.0](https://github.com/nikolamilekic/keykeeper/compare/v2.1.0..v3.0.0) - 2024-05-12

### ⛰️ Features

- Display two word IDs for layers - ([73c86b2](https://github.com/nikolamilekic/keykeeper/commit/73c86b2cae458e26ac11c1be8390c5cc1594a3b8))
- Decryption using custom keys - ([aa14f94](https://github.com/nikolamilekic/keykeeper/commit/aa14f942fb29336ee3c276c43c70d819e13a73d3))
- [**breaking**] Change storage encryption and structure - ([eed5da6](https://github.com/nikolamilekic/keykeeper/commit/eed5da66fd1932578e2d3721a06fbbb29d0d9420))

### 🐛 Bug Fixes

- Properly navigate to Encrypt after closing project - ([69f8273](https://github.com/nikolamilekic/keykeeper/commit/69f8273943db6e190175171af3fbefc06fb1e343))
- Corrected check that prevented adding key stores - ([9c186dd](https://github.com/nikolamilekic/keykeeper/commit/9c186dd42fb3bddd6f4c2ce3acb2c3835ffdec65))
- Initial AWS command should not cause "Please Wait" - ([0df0362](https://github.com/nikolamilekic/keykeeper/commit/0df0362144acbc0408100121bf4f0f1882a44a41))

### 🚜 Refactor

- Add message_wrapper for easier message Debug impl - ([d103e87](https://github.com/nikolamilekic/keykeeper/commit/d103e87ee5d5cb495a6267d0457ac9907e6994e3))
- Move layer and key store logic to separate modules - ([bb9966a](https://github.com/nikolamilekic/keykeeper/commit/bb9966a6122488fe3d099c428bd0b1e06257a234))
- Move test_helpers from sample_project - ([020d0ae](https://github.com/nikolamilekic/keykeeper/commit/020d0aee3c2e7d2d55ee9d202c5f9ab17828197f))

## [2.1.0](https://github.com/nikolamilekic/keykeeper/compare/v2.0.0..v2.1.0) - 2024-05-05

### ⛰️ Features

- Load AWS files automatically - ([56d671f](https://github.com/nikolamilekic/keykeeper/commit/56d671f13349cb4ff12247b86b3115421753f31e))
- Add input focus with tabs - ([7af49aa](https://github.com/nikolamilekic/keykeeper/commit/7af49aa4b9a7b8a168f23a66c69e9956d7bfd10a))
- Revamp AWS configuration - ([0f026d0](https://github.com/nikolamilekic/keykeeper/commit/0f026d0b07ef4426f14dfe9c2773513863d3af10))
- Save public key to settings when opening project - ([af0f049](https://github.com/nikolamilekic/keykeeper/commit/af0f049a76c4bbe409354529de31928409379c12))

### 🐛 Bug Fixes

- Allow importing layer with public key - ([7ea4ff8](https://github.com/nikolamilekic/keykeeper/commit/7ea4ff8552aba26f54af1f0e4e851b35827030de))

### 🚜 Refactor

- Switch key_presentation to Arc<[u8]> - ([d34e9c1](https://github.com/nikolamilekic/keykeeper/commit/d34e9c1d81839182573105b4aba93bf758a81645))
- Simplify AWS api - ([20faac2](https://github.com/nikolamilekic/keykeeper/commit/20faac240723225043573fb9a8e49fbb6ff92198))
- Switch to Box<str>, Arc<[t]> and alike - ([033c24f](https://github.com/nikolamilekic/keykeeper/commit/033c24f02d57dc28995ee70a5ebf54da3181658f))
- Replace &Option<T> with Option<&T> - ([1b83446](https://github.com/nikolamilekic/keykeeper/commit/1b83446cc0b8841c5f7f6c0cdb979abffd4a8a7c))
- Make project fields private - ([6da4095](https://github.com/nikolamilekic/keykeeper/commit/6da4095667f6a65c50e43cc0cb3ad365110b88e3))
- Remove ::* enum usings - ([5e2f676](https://github.com/nikolamilekic/keykeeper/commit/5e2f676b249e2b9b171d3b5b2043be5f5b14d75b))
- Separate shared state from UI states - ([7e81df1](https://github.com/nikolamilekic/keykeeper/commit/7e81df1933a1bb87ba793f6fc8e84d0cb0f43a1f))
- Change key_parsers to remove KeyParserInput - ([4e6c1bf](https://github.com/nikolamilekic/keykeeper/commit/4e6c1bfac62880a04b715d065e121485c310943c))
- Restructure project to use vertical slice architecture - ([66d7c93](https://github.com/nikolamilekic/keykeeper/commit/66d7c93dd5cb69d2f2bec926c73c699df779b10c))

### ⚙️ Miscellaneous Tasks

- Update zip to 1.1 - ([f20c254](https://github.com/nikolamilekic/keykeeper/commit/f20c254126606c83dd316ed3afedb365683d0cc8))
- Update iced to 0.12 - ([2c8c70c](https://github.com/nikolamilekic/keykeeper/commit/2c8c70c81c825d1c53564268fdb85b9b04cc4462))
- Update packages - ([d5acc91](https://github.com/nikolamilekic/keykeeper/commit/d5acc91ddaf27a8a9a996d56b195d8468e6d4a3d))

## [2.0.0] - 2024-02-10

### 🚜 Refactor

- [**breaking**] Complete rewrite in rust - ([20d3bec](https://github.com/nikolamilekic/keykeeper/commit/20d3bec7afb019c2d6ee39c08321d0ee1ee7ad20))

<!-- generated by git-cliff -->
