bitpill 0.3.5

A personal medication management TUI application built in Rust.
Documentation
# Changelog

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


## [Unreleased]


### <!-- 0 -->🚀 Features

- just task runner added to project ([7a27ebc]7a27ebc1613dea78e85b741b6a71a64a10f126dc)

- test coverage report now is exclusively in terminal ([d7a1dc9]d7a1dc96fc6ce36cc7fe26a00118641071fd3760)

- add Dosage, PillId, and PillName value objects ([34f584a]34f584ac1b5c7592507a89ccb197cefcc740fcc4)

- add domain module with value objects ([241fa8a]241fa8a680efa17df6f36c08a0b5b4c431baa8c0)

- add domain errors for dosage and pill name validation ([eebe8bd]eebe8bde1743fa1f5c9bbe35d3ad5e35f53e0140)

- impl Pill entity ([4c2be9b]4c2be9bc40d714cd2334124699c11c96a5138f61)

- renamed Pill to Medication and impl DoseRecord ([1650043]165004360efdee5917bbc9538605cafc893d2259)

- rename `Dose` to `DoseRecord` and add invariants ([5bc947f]5bc947fa74b1713f0c59abf5dc86f594cd72b60d)

- define app layer errors ([7830f93]7830f9375cd22c91afa7283ba357bd525a6e11a4)

- value objects for medication schedule and dose records ([03d4ab7]03d4ab7352b39935d4e4eecdc39a3bf125cdeda1)

- move medication creation logic to mapper ([13e9b5b]13e9b5b8a0b7ff902a891a6ef1a2a690591d9489)

- introduce generic Mapper<T> domain port ([43a0552]43a0552cd72659ba83ad7e4a397a5a846dab5c1c)

- add create/update mappers and TryFrom adapters ([1bf4c12]1bf4c129df43a444426caa3748947231ddc2d097)

- add mappers module for mapping between domain and DTOs ([989a8d2]989a8d282f90a6e581fc88f40faac9bde70ecab7)

- resolve data files from ~/.config/bitpill/ ([735913e]735913e43484d863f4f50bc2a9cb5a371046720a)

- enhance coverage report with file-level details and missing lines ([0bbaaad]0bbaaad96d8e617dc4550bc5cb2366dba29f3d58)

- add StockAmount value object ([8ce4961]8ce496168fadd4fc606b63a04a98fe3f78ebd12c)

- impl StockId vo for uniquely identify Stock entities ([57116f9]57116f9ac618c53524b5045780be0c46b8ede7df)

- add MedicationRefill entity to track medication purchase history ([95a15a3]95a15a3d73d811dbdb5a2a86e5307106ba186eba)


### <!-- 1 -->🐛 Bug Fixes

- remove coverage from default task ([125d997]125d9979f498935760e383934abc09ba0351c104)

- fix parsing and comparison of medication form fields ([ba233a7]ba233a723b334a476f4984de0a5c3bc6a3ba60ee)

- fix lints in medication details presenter ([3bbe64f]3bbe64f2622e8ae7ba35676dbecb998d176b6558)

- fix status message expiration logic ([7cade74]7cade74910b07035c5d871edc4fba078c0b3a889)

- correct syntax in match expression for dose_frequency ([6c25a45]6c25a4556c4997cd57cef5ccd8f3c965183beccf)

- now handle "Custom" dose frequency in medication edition ([8c56733]8c567334767614be199f581909f29328c6bd1c51)

- ensure rustup and cargo are properly set up in CI ([b03e3ca]b03e3ca529b402710603e32bc10fd168faf7af92)

- fix cargo llvm-cov version check ([f57af53]f57af5335645986696753dc472d14956d70a971a)

- fix coverage report path normalization for nested src/ directories ([3a8d7a5]3a8d7a5832b43d8d605e751173c1841cc0ba7bae)

- mark as taken check in ui ([8343d70]8343d707f1c4df32a2c1eb7d81aaa8a9242cd5b5)

- tui openning correctlyw ([6d5db3c]6d5db3c17a549f1951af0fc690c7df38b57a15b0)

- default test-helpers ([04fbf54]04fbf542847b4fb21df1ca45d12cca7be6be6086)


### <!-- 2 -->🚜 Refactor

- split medication and dose record repositories, add clock and notification ports ([d7390ff]d7390ff7df603ea45b4dccef09696ead7e1b39ea)

- introduce ApplicationError to unify error handling ([a31018c]a31018c81ddc76bcfe90f2286736034bbfdc984a)

- switch MedicationId to UUID v7 ([dd35905]dd35905e31fe9824ef25927b746a9cd1c4b5cd29)

- switch to time-sortable UUID v7 for identifiers ([e5a47ae]e5a47aed1c6347ed63b901d4deb0c9f318e9e949)

- refactor aplication ports and services ([fefa8c7]fefa8c7010c4991ed39d7e5f155aaf845d00f2cc)

- rename ports to have consistent naming ([5fdcbe3]5fdcbe357586bf850bbb859002262284ff01a626)

- refactor app services ([fa171f0]fa171f0d08dadc2cd086ce49730f38eb83863f74)

- removed infrastructure and presentation implementations ([88e177d]88e177d8b4b93f573e7664fc12ac58a15e6f556f)

- remove presentation layer and main function ([c17f518]c17f518d6d0804f518804d1a7375dea3755d8372)

- add Send + Sync bounds to port trait ([e17c717]e17c7179a3dbc62751a95ada9ccf995474e74b7a)

- remove fake repositories from tests ([5081765]5081765b5c50327005419a1bb10eed76f700965b)

- replace from_uuid constructor with From<Uuid> impl ([49cbebe]49cbebe75ce866353d53682ea3fb6fb625575bcd)

- use fakes for testing application services ([96c15d2]96c15d2a73c7485c0b3c68c8c365e746322ed32e)

- Add DTOs for inbound ports and refactor services to use them ([45069fd]45069fd5d737cc772277f877ae5241f16ac90d99)

- add tests for container and settings repository ([491838e]491838e89461d13903557c0ddcb993112d823398)

- improve test coverage of TUI outer layers by adding integration tests that run the app with a fake in-memory service layer, and refactoring App to allow dependency injection of services and easier testing of the event loop. ([63bbe8d]63bbe8d08b2f0291c87e92618c5bf412e7548b6a)

- remove mark_medication_taken functionality and related code ([e3852b0]e3852b0a5d2b57eb7475b28ccb74466e0ec4abdb)

- remove mark_medication_taken functionality ([4704bbc]4704bbccc912c1559c1b303dc7c4740341424261)

- use Medication::try_from and add service tests ([4903ec8]4903ec8f1a5d89ae7ffb00970524c02b8d69dffa)

- make TUI input handling testable with injectable event source ([b74fb64]b74fb644526dc48e1e4c2373a1c4a4f38589cc32)

- introduce Key enum and from_code helper ([6f0fdb9]6f0fdb93772e39a88feb719f6f712e717a9b9e8b)

- make event source injectable to decouple tests from TTY ([7316ab3]7316ab35e29a13f8383d8ccfbf59170642118337)

- replace crossterm KeyEvent with Key in all handlers ([4223b55]4223b557252daa24ac4f49d4b288a49d1efc92bc)

- extract form state struct and helper methods for create/edit handlers ([8b1427f]8b1427fd773c0dcb043324ff0c6fa3c4641fadeb)

- responses to a single file ([edf104a]edf104a8f46187fd1347daddd432b5cf968f964b)

- move req dtos to single file ([076dbec]076dbec12d3acc0681b67c9f7f4f1769933f34f5)

- adjusting project to release ([651d16d]651d16d6b3797c41e65e008819684f1eda86ca72)


### <!-- 3 -->📚 Documentation

- update README with more context about the project ([16b8d49]16b8d49242d1c2df0af2d0ab4bff3691b4fd37e1)

- update example to clarify wiring ([5c534a4]5c534a42d93061c9d7184e54c104c0e09af31b7e)

- add detailed documentation for all domain entities, application services, and ports ([20f6a17]20f6a1785d52ed2a1b51736f35845669dfdc0229)

- update port and testing guidelines ([9780233]9780233f5d0e33ec6afc642af32f044c335d948d)

- update documentation to reflect current state of the project ([2d5234e]2d5234e3211bda41dc25577aca54289e966b81f8)

- update documentation with TUI keyboard shortcuts ([78e4802]78e4802f39b9b3dedf02902062d27b7a0711f855)

- add instructions for Copilot CLI agent ([509dfab]509dfabf764bf74dca01f757424146a9fb1328f0)

- clarify testing guidelines and fake usage ([a208f3f]a208f3f05563cec5f68b2de7e9b60206d80faad7)

- update overview with note about Copilot CLI instructions ([7cb164e]7cb164eb6890c15a0cd504a5f25c2fdd8100b95d)

- add comments as docs to setup.sh ([41ef524]41ef5248c27f3be227dfd22ec3967b0a509c37b6)

- docs files to rest appear as wip ([b83ee85]b83ee851a2d9759d183093c854270dfbcb25e05b)

- update README to include screenshots ([5b28f11]5b28f1124c3895b90da93852a798844913c10dbc)

- remove a rest-specific readme line ([173c84f]173c84f092070aea2a4ba4cd4ef38c7d67fddf89)

- defined license ([b0efe2d]b0efe2d5f9513dd3addd5bf086af9001fa9f970e)

- updating docs dir ([692127d]692127d6e1a7eb5304f7145333f0271e006ed80c)


### <!-- 5 -->🎨 Styling

- fix lint issues across multiple modules ([734b11a]734b11a719133e504ca08dcace08c53acc16bd12)

- fix ([51fbb0b]51fbb0b7b7690edb3c6081b8bc151f48fd478d36)

- fix lints in medication form component ([1dd763c]1dd763ca444a3d063c4b86ad0bc749a446972bea)

- move tests into service files and remove additional_tests.rs ([2dc6761]2dc67618f3ef9d489778ff314b2f0d2edb6ada0c)

- improve architecture and test coverage ([6bf09b3]6bf09b368e6674cfedfc979d455a6bfb5f935fa9)

- reformat code and fix clippy warnings ([24c68e1]24c68e1ab035ade7e77685a9a244e9f19d445172)

- remove unused import ([1ac91a7]1ac91a7f607531fb017482a90182275836aac5fb)

- define path is now defined a single time in the setup script ([f10e991]f10e991300c80ad783d8997290b52f5e3e5dde4e)

- apply cargo fmt to infrastructure and integration tests ([ef48f7e]ef48f7ebe255030bc4d4f9b33d08978dab816cfa)

- improve imports style ([1b97caf]1b97caf728680b07047eb7db70bff704bcd84898)


### <!-- 6 -->🧪 Testing

- add fake implementations for testing application services ([2b72c96]2b72c96fe77ce185759de6b3e3d1176796ac26f6)

- Add infrastructure integration tests ([1eb4463]1eb44630c78e76f4bdd56ad5e7333cf81ea05267)

- Add presentation E2E tests ([cee9629]cee9629ea513241fda222a86623328c1b0e6e689)

- deleted unused test files ([6d476cd]6d476cd8a8cb3a1411da4e50525dac04de21461e)

- improve test coverage for domain entities and value objects ([79f9002]79f90021409f6aff2e49ac00449b8c426ee90dea)

- add helper functions to create test medications ([e1b8c93]e1b8c93e870dce141a062c82ff4ea90b056f4dc7)

- move service tests to `tests/application/services` ([730e9eb]730e9eb828f47fca7ce97fa4fb9226fa752297cc)

- improve test coverage in application layer ([f2e1078]f2e1078a8665d614cb5e8327172a08f4a96f4d98)

- wire harness and fix stale dormant tests ([5366f66]5366f669dba1ba92e571bf7d7d1f6aa2c9108160)

- add AppInitializer integration tests ([d8c997b]d8c997badc90cae57771fd17754dc71c3d78a5dc)

- update integration tests to use Key instead of crossterm KeyEvent ([2af6d0a]2af6d0a0b642e6e7bda828e2e5c54b62e5410973)


### <!-- 7 -->⚙️ Miscellaneous Tasks

- add initial project structure and copilot instructions ([e73bc96]e73bc96b5104e2bda0dfd78010a2f9982223c056)

- started work on bitpill ([64a403c]64a403cc110a26114331a38433282fb01197e934)

- copilot-instructions updated ([b7db2b7]b7db2b7b3862200748bceaab64df91192686f8fa)

- update instructions for coverage command ([558252e]558252ebe95129f8da23fb54e84c20bb58e10943)

- update copilot instructions with new architecture and testing guidelines ([96a0b8c]96a0b8c37a8f10224c08957c000c8084d0a90402)

- update Cargo.lock after refactoring application ports ([c11ebd3]c11ebd3dd67da9a63458371df0053deec82765d1)

- ignore fakes in coverage ([6af4672]6af467272767edd2e3c0cbb2f985bae47fa62b80)

- removed test-one and run-both ([ad2e088]ad2e0880b0ff74fe23c14920f65a21fb3a121edc)

- add commit message check workflow ([2ea378b]2ea378bf079bc1a275f62c676df5cb23954b9a46)

- add fake inbound ports for testing ([cc5a80e]cc5a80e6fbd36003a47ef519638b5acede572782)

- add *.info to ignore list ([e6bf407]e6bf407af136576f8ce354bcb153e18b85cc12dc)

- remove Cargo.lock ([86d56d2]86d56d2dc23ecf8f3bdda46e1e21df67d2b4ed80)

- update Cargo.lock ([1ee1850]1ee1850d06b109edc4fc9153c04ba81129f26d8c)

- remove old test files that have been moved to the tests directory ([f0399f4]f0399f48a104d9ba353c454c95f295aa565b65f6)

- apply cargo fmt across application and domain layers ([eeb1e93]eeb1e93d8f3fdde08cccb67f6e9401bd2c1b2962)

- removing github actions ([8ef79d8]8ef79d897fdcde9363d07baf9e8613e7d93f55da)

- add GitHub Actions workflow for commit message and branch name checks ([d694079]d6940791ec4feab170df786204b720480933ec7b)

- add CI workflow for tests and coverage ([a6f0b89]a6f0b8968d2d0980828a1f8632374f2e2b5c8b47)

- add coverage check script ([9b00254]9b0025461f5b6dc005677bd1975cd679dbf40cfb)

- improve test runner ([f80dba0]f80dba019394ae80dd63ae4f1ef8963cc125bca3)

- update commit message check workflow ([2895650]2895650aac4016e9c9bc43efa59089724f438ad3)

- add setup and coverage check scripts ([7668c87]7668c87125836ca92c714a6966204677ce534ac6)

- test command is now using check_coverage.sh script ([810ac9d]810ac9d9b7f4f3c96baea7737fe5262fe7e79c1f)

- update commit-check and run-tests workflows ([b5cd096]b5cd096d4adadd6f19086c8809d4b69788dead9e)

- removed .ci/setup.sh as it's no longer needed ([ffcc830]ffcc830c5fc2b65d75e24645562a34f06b44e74d)

- yodate workflows for Forgejo compatibility ([6db25b6]6db25b62daf60232b619026c2b88e804d8f60c19)

- fix forgejo actions ([21b316f]21b316f46ff3024526133608d56d9f715b703568)

- forgejo actions is now using just toolsm ([3a0a938]3a0a9386e4c17154c776022a46b326410a72bfff)

- trigger forgejo actions check ([acbf5b2]acbf5b27f6b649f8caff2a368d63bdf206477406)

- add lint-workflows recipe and document local validation ([ad1cae7]ad1cae7b4efd4df91f3bdb31fd5e41c8269e450e)

- extract workflow bash logic into scripts/ ([f9ff342]f9ff34251fbde3f1680dece572e0da5fde4f2f7a)

- split workflows into focused jobs and wire scripts ([037d169]037d169d526d0d13384b61dddfe4444eb5484077)

- improve commit modularization and readability ([ea8d662]ea8d6624eb0cf30061fe5c4421e93d7b9de81d13)

- improving check_commit_messages.sh to allow merge commits ([828b828]828b828cf5b2f524b8c47fe9761e17c53606e805)

- update setup script to remove temporary directory after installation ([bbae751]bbae751cce4d167cdba721ec43d3aca5cd0f1ebf)

- update CI workflow triggers ([cdbcbd6]cdbcbd6f4ecb66c4551982606fde62456431e54c)

- add test script for running tests by file path or module filter ([1c3031c]1c3031c400ecda3aa32fb359e4b772223ba4f1e9)

- completing cargo ([4b908a5]4b908a5565b0a941c5bc04f5675de6747ab8800d)

- fix lock file ([f31e799]f31e79994102d51a7cf47dec08d9489cccee545f)

- adjusting cargo and justfile to release ([fdfc875]fdfc8753781bd162cc734f4a15290d44d329781e)

- ci/cd workflows ([5c1ebce]5c1ebce1e44ac59c06029adba1df87b54181bae4)

### Compare