Commit graph

25 commits

Author SHA1 Message Date
Víctor Martínez
dec5c76bfd
[refactor] Build next version of teatui (#8)
This pull request introduces significant improvements to the TeaTui framework, focusing on error handling, functional purity, and codebase simplification. Most notably, it removes the dependency on `color-eyre`, introduces custom error types for each actor (effects, events, update, view), and updates the API to encourage pure functions and more idiomatic Rust error handling. The example app and documentation are also updated to reflect these changes.

**Framework error handling and API improvements:**

* Introduced custom error types (`EffectsError`, `EventLoopError`, `UpdateError`, `ViewError`, and unified `ProgramError`) for each actor, replacing the use of `color-eyre` and providing clearer, structured error reporting throughout the framework. [[1]](diffhunk://#diff-1a8ddf10086f54de37be278b04f140fea42a9dd9314ebed509a03510b34a3043L2-R24) [[2]](diffhunk://#diff-dd43168709f1ba547c9dbe210d659222793384f540898dfa4159d3d28447ea59L2-R14) [[3]](diffhunk://#diff-717c070f88e33e75d62e17bcfb063657cc2cbba2198d8faf77fb3855206ba036L2-R51) [[4]](diffhunk://#diff-348239946b2211ffea21e1282dde8299ee0e5484616b8b2da9c97589719531e4L2-R23) [[5]](diffhunk://#diff-eaa72a947a5cb60aaed20788a77b8c3b94606a2b4bd9218fa2bbeeba0a98f726L34-R62)
* Updated the core `start` function to accept an `init_fn` initializer, and to use the new error types in its signature and internal logic, ensuring all errors are properly propagated and handled. [[1]](diffhunk://#diff-eaa72a947a5cb60aaed20788a77b8c3b94606a2b4bd9218fa2bbeeba0a98f726L61-R95) [[2]](diffhunk://#diff-eaa72a947a5cb60aaed20788a77b8c3b94606a2b4bd9218fa2bbeeba0a98f726L88-R157)
* Refactored the `Update` enum and related logic to use a single variant (`Next(M, Option<E>)`) for state transitions and side effects, simplifying the update pattern and removing the need for multiple variants.

**Example application and dependency updates:**

* Updated the counter example to remove `color-eyre`, use the new error types, and conform to the new pure function API (no more `Result` returns from user functions). [[1]](diffhunk://#diff-d1e739029fa7deef7dec36d183f1097a4ed266898520ddae449cff9c91f65a96L1-R10) [[2]](diffhunk://#diff-d1e739029fa7deef7dec36d183f1097a4ed266898520ddae449cff9c91f65a96L96-R111) [[3]](diffhunk://#diff-d1e739029fa7deef7dec36d183f1097a4ed266898520ddae449cff9c91f65a96L128-R129) [[4]](diffhunk://#diff-d1e739029fa7deef7dec36d183f1097a4ed266898520ddae449cff9c91f65a96R38-R42)
* Updated dependencies in `Cargo.toml` files: removed `color-eyre`, bumped `ratatui` version, and added `thiserror` for error handling. [[1]](diffhunk://#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542L11-R12) [[2]](diffhunk://#diff-c6fd35fe7c3e8bcfcf9e60f261503d791b528405f92b6ba99f7272e91939d861L9) [[3]](diffhunk://#diff-1cd61e14e7d516bb58a3b2607848174d38c432631899f34dbc88076158f3bf52L10-R12)

**Documentation:**

* Added a comprehensive project overview and architecture description for TeaTui in `AGENTS.md`, explaining the functional philosophy, actor model, and usage guidelines.
2026-01-29 13:19:46 +01:00
Víctor Martínez
29a1ecb5f3
Merge pull request #4 from JasterV/dependabot/github_actions/actions/checkout-5
build(deps): bump actions/checkout from 4 to 5
2025-09-24 10:14:10 +02:00
Víctor Martínez
5d54cef53a
Merge pull request #5 from JasterV/dependabot/github_actions/clechasseur/rs-clippy-check-5
build(deps): bump clechasseur/rs-clippy-check from 4 to 5
2025-09-24 10:13:48 +02:00
dependabot[bot]
4c5f1ace82
build(deps): bump clechasseur/rs-clippy-check from 4 to 5
Bumps [clechasseur/rs-clippy-check](https://github.com/clechasseur/rs-clippy-check) from 4 to 5.
- [Release notes](https://github.com/clechasseur/rs-clippy-check/releases)
- [Commits](https://github.com/clechasseur/rs-clippy-check/compare/v4...v5)

---
updated-dependencies:
- dependency-name: clechasseur/rs-clippy-check
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 15:35:08 +00:00
dependabot[bot]
e0d3c1a3d2
build(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-26 10:07:37 +00:00
JasterV
48802b9e98 Add README 2025-08-19 23:35:17 +02:00
JasterV
eb801e2771 fix: release workflow 2025-08-19 23:30:41 +02:00
JasterV
3b18e005ea Update name to TeaTui 2025-08-19 23:24:13 +02:00
JasterV
c4f3cf4759 update release workflow 2025-08-19 23:12:55 +02:00
JasterV
d6e5e7a063 add a release github action 2025-08-19 23:03:03 +02:00
JasterV
ec36094fee Update README 2025-08-19 22:47:53 +02:00
JasterV
520afe7183 chore: update docs 2025-08-19 22:43:49 +02:00
JasterV
d439efd2a3 chore: update docs 2025-08-19 19:26:59 +02:00
Víctor Martínez
fca956d6fa Update README.md 2025-08-19 19:12:20 +02:00
JasterV
f27020e7c8 refactor: make this repo into a library 2025-08-19 19:12:20 +02:00
JasterV
1b792e6ad0 refactor: abstracted the actors framework into a separate library 2025-08-19 18:49:42 +02:00
Víctor Martínez
1f655c336c
Merge pull request #1 from JasterV/dependabot/github_actions/clechasseur/rs-clippy-check-4
build(deps): bump clechasseur/rs-clippy-check from 3 to 4
2025-08-19 16:59:33 +02:00
Víctor Martínez
cfec4135aa
Merge pull request #2 from JasterV/dependabot/cargo/crossterm-0.29.0
build(deps): bump crossterm from 0.28.1 to 0.29.0
2025-08-19 16:59:20 +02:00
Víctor Martínez
a2b8c58116
Merge pull request #3 from JasterV/dependabot/github_actions/actions/checkout-5
build(deps): bump actions/checkout from 4 to 5
2025-08-19 16:59:00 +02:00
dependabot[bot]
ebf5a32068
build(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 12:38:58 +00:00
dependabot[bot]
9a5be4e892
build(deps): bump crossterm from 0.28.1 to 0.29.0
Bumps [crossterm](https://github.com/crossterm-rs/crossterm) from 0.28.1 to 0.29.0.
- [Release notes](https://github.com/crossterm-rs/crossterm/releases)
- [Changelog](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crossterm-rs/crossterm/commits/0.29)

---
updated-dependencies:
- dependency-name: crossterm
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 12:15:11 +00:00
dependabot[bot]
ff773217d7
build(deps): bump clechasseur/rs-clippy-check from 3 to 4
Bumps [clechasseur/rs-clippy-check](https://github.com/clechasseur/rs-clippy-check) from 3 to 4.
- [Release notes](https://github.com/clechasseur/rs-clippy-check/releases)
- [Commits](https://github.com/clechasseur/rs-clippy-check/compare/v3...v4)

---
updated-dependencies:
- dependency-name: clechasseur/rs-clippy-check
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 11:57:45 +00:00
JasterV
3dc08c450d refactor: truly event-driven functional style 2025-08-19 13:50:39 +02:00
Víctor Martínez
ef45e65784 Update README.md 2025-08-19 02:09:30 +02:00
JasterV
7ffec09d7b feat: build an elm-like TUI application 2025-08-19 02:09:30 +02:00