Compare commits

...

864 Commits

Author SHA1 Message Date
dependabot[bot]
9f6f1f52de build(deps): bump instability from 0.3.10 to 0.3.11
Bumps [instability](https://github.com/ratatui/instability) from 0.3.10 to 0.3.11.
- [Release notes](https://github.com/ratatui/instability/releases)
- [Changelog](https://github.com/ratatui/instability/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ratatui/instability/compare/instability-v0.3.10...instability-v0.3.11)

---
updated-dependencies:
- dependency-name: instability
  dependency-version: 0.3.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 15:21:50 +00:00
Colton Loftus
53d925a8ab docs: Add Documentation on the Map Projection / CRS (#2324) 2026-01-04 21:31:10 -08:00
0xferrous
1e0ab0c549 feat(ratatui-crossterm): add IntoCrossterm<ContentStyle> for Style (#2323) 2026-01-04 01:57:29 -08:00
Orhun Parmaksız
e82b3b77fe docs(buffer): run the doctests for Buffer (#2319)
addresses
https://github.com/ratatui/ratatui/pull/2314#pullrequestreview-3621576941

the doctest was not running at all... (due to `fn foo`)
2026-01-01 23:59:26 +03:00
Josh McKinney
b696ea37b2 test(core): Split Terminal into submodules and expand test coverage (#2315)
- Split the `Terminal` implementation into focused submodules to improve
readability and maintainability.
- Add characterization tests covering `Terminal` initialization, buffer
lifecycle, resizing and autoresize behavior, and rendering paths.
- Add inline viewport tests for `compute_inline_size` and
`insert_before` in both fallback and scrolling-regions modes, including
an end-to-end `draw -> insert_before -> draw scenario` scenario.
- Extend `TestBackend` cursor plumbing to support the new terminal tests
and assert cursor/ behavior.
2026-01-01 11:46:33 -08:00
Josh McKinney
64d964b259 docs: Update Terminal docs (#2312)
## Summary

- Improve `Terminal` Rustdocs to better explain typical app setup, the
rendering pipeline, and how
diff-based rendering works (including full redraw behavior on viewport
size changes).
- Clarify viewport concepts and behavior in `Viewport`/`Terminal` docs,
with a more complete inline
  section (anchoring, scrolling, resize behavior).
- Reorder `Terminal::draw` / `Terminal::try_draw` closer to constructors
so the primary rendering
  entry points are easier to find.

## Notes

- Docs-only change; no public API or runtime behavior changes.
- No new tests in this PR.

## Test Plan

- `cargo +nightly fmt`
- `cargo +nightly docs-rs -p ratatui-core`
- `cargo test -p ratatui-core --doc --features std`
2026-01-01 11:15:55 -08:00
homebrewmellow
8d73d4738e docs: Fix comment to reflect correct symbol in assertion (#2314) 2025-12-31 18:22:41 -08:00
n4n5
556cc7b543 feat: add comment for inner area to popup example (#2309) 2025-12-31 18:21:04 -08:00
cgzones
fbd562117b docs: fix misspellings (#2310) 2025-12-30 18:36:14 +03:00
Alan Somers
d2b0ce17a4 fix: Fix the dependency on time (#2306)
ratatui-widgets uses time's Month::length(), which requires time-0.3.37
or later.
2025-12-29 12:38:09 -08:00
Josh McKinney
01a15f9809 feat: Add AsRef impls for widget types (#2297) 2025-12-29 11:16:27 -08:00
dependabot[bot]
1c9f56aa4b build(deps): bump octocrab from 0.49.2 to 0.49.4 (#2305)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.49.2 to
0.49.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.49.4</h2>
<h3>Added</h3>
<ul>
<li>Add squash_merge_commit_title, squash_merge_commit_title to repo
model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/845">#845</a>)</li>
</ul>
<h2>v0.49.3</h2>
<h3>Added</h3>
<ul>
<li>Http caching &amp; Conditional requests (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/831">#831</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.49.3...v0.49.4">0.49.4</a>
- 2025-12-25</h2>
<h3>Added</h3>
<ul>
<li>Add squash_merge_commit_title, squash_merge_commit_title to repo
model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/845">#845</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.49.2...v0.49.3">0.49.3</a>
- 2025-12-21</h2>
<h3>Added</h3>
<ul>
<li>Http caching &amp; Conditional requests (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/831">#831</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4ffda40672"><code>4ffda40</code></a>
chore: release v0.49.4 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/846">#846</a>)</li>
<li><a
href="0c20a918d6"><code>0c20a91</code></a>
feat: Add squash_merge_commit_title, squash_merge_commit_title to repo
model ...</li>
<li><a
href="73799b212a"><code>73799b2</code></a>
chore: release v0.49.3 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/844">#844</a>)</li>
<li><a
href="c08ad2e894"><code>c08ad2e</code></a>
feat: Http caching &amp; Conditional requests (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/831">#831</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.49.2...v0.49.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.49.2&new-version=0.49.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-29 18:40:21 +03:00
dependabot[bot]
0e89e042e0 build(deps): bump serde_json from 1.0.146 to 1.0.148 (#2304)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.146 to
1.0.148.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.148</h2>
<ul>
<li>Update <code>zmij</code> dependency to 1.0</li>
</ul>
<h2>v1.0.147</h2>
<ul>
<li>Switch float-to-string algorithm from Ryū to Żmij for better f32 and
f64 serialization performance (<a
href="https://redirect.github.com/serde-rs/json/issues/1304">#1304</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8b291c4c56"><code>8b291c4</code></a>
Release 1.0.148</li>
<li><a
href="1aefe15273"><code>1aefe15</code></a>
Update to zmij 1.0</li>
<li><a
href="62d6e8d615"><code>62d6e8d</code></a>
Release 1.0.147</li>
<li><a
href="fd829a65be"><code>fd829a6</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1304">#1304</a>
from dtolnay/zmij</li>
<li><a
href="e757a3d881"><code>e757a3d</code></a>
Switch from ryu -&gt; zmij for float formatting</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.146...v1.0.148">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.146&new-version=1.0.148)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-29 18:39:32 +03:00
dependabot[bot]
2e73be7982 build(deps): bump taiki-e/install-action from 2.65.1 to 2.65.7 (#2303)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.65.1 to 2.65.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.65.7</h2>
<ul>
<li>
<p>Update <code>cargo-no-dev-deps@latest</code> to 0.2.19.</p>
</li>
<li>
<p>Update <code>cargo-minimal-versions@latest</code> to 0.1.34.</p>
</li>
<li>
<p>Update <code>cargo-insta@latest</code> to 1.45.1.</p>
</li>
<li>
<p>Update <code>cargo-hack@latest</code> to 0.6.40.</p>
</li>
<li>
<p>Update <code>dprint@latest</code> to 0.51.1.</p>
</li>
</ul>
<h2>2.65.6</h2>
<ul>
<li>
<p>Update <code>dprint@latest</code> to 0.51.0.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.22.0.</p>
</li>
</ul>
<h2>2.65.5</h2>
<ul>
<li>
<p>Update <code>tombi@latest</code> to 0.7.12.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.6.</p>
</li>
</ul>
<h2>2.65.4</h2>
<ul>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.116.</p>
</li>
<li>
<p>Update <code>prek@latest</code> to 0.2.25.</p>
</li>
</ul>
<h2>2.65.3</h2>
<ul>
<li>Update <code>tombi@latest</code> to 0.7.11.</li>
</ul>
<h2>2.65.2</h2>
<ul>
<li>
<p>Update <code>prek@latest</code> to 0.2.24.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 40.0.0.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.21.7.</p>
</li>
<li>
<p>Update <code>tombi@latest</code> to 0.7.10.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.39.0.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.5.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>Update <code>tombi@latest</code> to 0.7.13.</li>
</ul>
<h2>[2.65.7] - 2025-12-29</h2>
<ul>
<li>
<p>Update <code>cargo-no-dev-deps@latest</code> to 0.2.19.</p>
</li>
<li>
<p>Update <code>cargo-minimal-versions@latest</code> to 0.1.34.</p>
</li>
<li>
<p>Update <code>cargo-insta@latest</code> to 1.45.1.</p>
</li>
<li>
<p>Update <code>cargo-hack@latest</code> to 0.6.40.</p>
</li>
<li>
<p>Update <code>dprint@latest</code> to 0.51.1.</p>
</li>
</ul>
<h2>[2.65.6] - 2025-12-28</h2>
<ul>
<li>
<p>Update <code>dprint@latest</code> to 0.51.0.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.22.0.</p>
</li>
</ul>
<h2>[2.65.5] - 2025-12-27</h2>
<ul>
<li>
<p>Update <code>tombi@latest</code> to 0.7.12.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.6.</p>
</li>
</ul>
<h2>[2.65.4] - 2025-12-27</h2>
<ul>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.116.</p>
</li>
<li>
<p>Update <code>prek@latest</code> to 0.2.25.</p>
</li>
</ul>
<h2>[2.65.3] - 2025-12-26</h2>
<ul>
<li>Update <code>tombi@latest</code> to 0.7.11.</li>
</ul>
<h2>[2.65.2] - 2025-12-23</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4c6723ec9c"><code>4c6723e</code></a>
Release 2.65.7</li>
<li><a
href="9ff15877d9"><code>9ff1587</code></a>
Update <code>cargo-no-dev-deps@latest</code> to 0.2.19</li>
<li><a
href="4f0419fae3"><code>4f0419f</code></a>
Update <code>cargo-minimal-versions@latest</code> to 0.1.34</li>
<li><a
href="1eecdc5eb1"><code>1eecdc5</code></a>
Update <code>cargo-insta@latest</code> to 1.45.1</li>
<li><a
href="cff8e9966c"><code>cff8e99</code></a>
Update <code>cargo-hack@latest</code> to 0.6.40</li>
<li><a
href="080e4ee4f5"><code>080e4ee</code></a>
Update <code>dprint@latest</code> to 0.51.1</li>
<li><a
href="28a9d316db"><code>28a9d31</code></a>
Release 2.65.6</li>
<li><a
href="323c4aadcd"><code>323c4aa</code></a>
Update <code>dprint@latest</code> to 0.51.0</li>
<li><a
href="bfbd3b229c"><code>bfbd3b2</code></a>
Update <code>vacuum@latest</code> to 0.22.0</li>
<li><a
href="45a93d9c71"><code>45a93d9</code></a>
Release 2.65.5</li>
<li>Additional commits viewable in <a
href="b9c5db3aef...4c6723ec9c">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.65.1&new-version=2.65.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-29 18:39:08 +03:00
Kareem Khazem
f9d066f4d7 feat(table): let Cells span multiple columns (#2150)
Add a 'column_span' field to table cells. The default value
is 1; larger values will cause cells to span over multiple columns,
being rendered over all columns plus the spaces between them.

Fixes #1568.
2025-12-28 21:25:42 -08:00
Josh McKinney
65c520245a fix(changelog): fix typo (#2300) 2025-12-27 22:19:39 +03:00
Orhun Parmaksız
f8b42adb5f docs(breaking-changes): update header for 0.30.0 (#2295) 2025-12-26 13:20:21 +03:00
github-actions[bot]
0a2a7c0363 chore(ratatui): unleash the rats v0.30.0 (#2294)
## [v0.30.0](https://github.com/ratatui/ratatui/releases/tag/v0.30.0) -
2025-12-26

> _"Rats don't just survive; they discover; they create. ... I mean,
just look at what they do with
the terminal!" – Remy & Orhun_

We are excited to announce the biggest release of `ratatui` so far - a
Rust library that's all about cooking up TUIs 👨‍🍳🐀

🌠 Added "no_std" support for embedded targets, modularized architecture,
major widget & layout upgrades!

 **Release highlights**: <https://ratatui.rs/highlights/v030/>

⚠️ List of breaking changes can be found
[here](https://github.com/ratatui/ratatui/blob/main/BREAKING-CHANGES.md).

### Features

-
[90a77aa](90a77aaf8b)
*(direction)* Add `Direction::perpendicular(self)` by @b-guild in
[#2197](https://github.com/ratatui/ratatui/pull/2197)

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]
  >
> BREAKING CHANGE:label and text_value now accept `Into<>` types, which
  > breaks type inference.
  >
  > ```diff
  > - Bar::default().label("foo".into());
  > + Bar::default().label("foo");
  > ```
  >
  > ```diff
  > - Bar::default().text_value("bar".into());
  > + Bar::default().text_value("bar");
  > ```

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)
  >
  > Related:https://github.com/ratatui/ratatui/issues/683

-
[e15fefa](e15fefa922)
*(barchar)* Add BarChart::grouped constructor by @joshka in
[#1513](https://github.com/ratatui/ratatui/pull/1513)

> Add a new constructor to the `BarChart` widget that allows creating a
  > grouped barchart with multiple groups of bars.
  >
> Also add a new constructor to the `BarGroup` widget that allows
creating
  > a group of bars with a label.

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

  > Adds constructor methods for BarChart, BarGroup, and Bar

-
[1dc18bf](1dc18bf3cf)
*(calendar)* Add width and height functions by @joshka in
[#2198](https://github.com/ratatui/ratatui/pull/2198)

  > Fixes https://github.com/ratatui/ratatui/issues/2016
  >
  > ---------

-
[f18bcbf](f18bcbf06b)
*(canvas)* Add quadrant, sextant and octant markers by @sbarral in
[#2235](https://github.com/ratatui/ratatui/pull/2235) [**breaking**]

> The octant marker is an alternative to the Braille marker with the
same
> resolution, but offering densely packed, regular pseudo-pixels,
without
  > visible bands between rows and columns.
  >
  > Quadrant and Sextants are also added to support 2x2 and 2x3.
  >
> Sextant and Octant unicode characters that are less widely supported
at
  > the moment, which is why `Braille` was left as the default.
  >
  > BREAKING CHANGE:addition of new variants to `Marker` and removal of
  > no longer used constants in `ratatui::symbols::braille`.

-
[26b05de](26b05dee59)
*(chart)* Render Braille over Blocks in Charts and Canvas by @j-g00da in
[#2165](https://github.com/ratatui/ratatui/pull/2165)

> This makes it possible to stack charts, and write text over block
symbols in
> Charts and Canvas while still showing the block symbols behind the
text.

-
[bf84c62](bf84c6229b)
*(core)* Add a `has_modifier()` method to `Style` by @sxyazi in
[#2267](https://github.com/ratatui/ratatui/pull/2267)

  > Resolves https://github.com/ratatui/ratatui/issues/2264

-
[2d713d7](2d713d723d)
*(crossterm)* Allow multiple crossterm versions by @joshka in
[#1841](https://github.com/ratatui/ratatui/pull/1841)

  > This commit introduces feature flags to make it possible for widget
  > library authors to depend on a specific version of crossterm without
> causing version conflicts. This should make it easier for libraries
and
  > apps to update crossterm versions more easily.
  >
> The available feature flags are `crossterm_0_28` and `crossterm_0_29`.
> By default, the latest version is enabled. If a multiple features are
  > enabled we choose the latest version. We will in general support at
  > least the last two major (0.x) versions of crossterm, and will only
  > remove versions in a major version bump.

-
[d99984f](d99984f1e9)
*(layout)* Add `Flex::SpaceEvenly` by @kdheepak in
[#1952](https://github.com/ratatui/ratatui/pull/1952) [**breaking**]

  > Resolves https://github.com/ratatui/ratatui/issues/1951
  >
> BREAKING CHANGE:Old `Flex::SpaceAround` behavior is available by using
  >
  > `Flex::SpaceEvenly` and new
  >
  > `Flex::SpaceAround` now distributes space evenly around each element
  > except the middle spacers
  >     are twice the size of first and last elements
  >
  > With this change, the following variants of `Flex` are supported:
  >
> - `Flex::Start`: Aligns items to the start; excess space appears at
the
  > end.
  > - `Flex::End`: Aligns items to the end; excess space appears at the
  > start.
  > - `Flex::Center`: Centers items with equal space on both sides.
> - `Flex::SpaceAround` (**new**): Distributes space _around_ items;
space
  > between items is _twice_ the edge spacing.
> - `Flex::SpaceBetween`: Distributes space _evenly between_ items
except
  > no space at the edges.
> - `Flex::SpaceEvenly` (**previously `Flex::SpaceAround`**):
Distributes
  > space _evenly between_ items and edges.
> - `Flex::Legacy`: Preserves legacy behavior, placing all excess space
at
  > the end.
  >
  > This aligns behavior of `Flex` with CSS flexbox more closely.
  >
  > The following is a screenshot in action:
  >
  > <img width="1090" alt="image"
  >
>
src="https://github.com/user-attachments/assets/2c7cd797-27bd-4242-a824-4565d369227b"
  > />
  >
  > ---------

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[7ad9c29](7ad9c29eac)
*(linegauge)* Customized symbols by @sectore in
[#1601](https://github.com/ratatui/ratatui/pull/1601)

  > With this PR any symbol (`&str`) can be used to render `filled` and
  > `unfilled` parts of `LineGauge` now. Before that change, only
>
[`symbols::line::Set`](https://docs.rs/ratatui/latest/ratatui/symbols/line/struct.Set.html)
  > was accepted.
  >
  > Note:New methods are introduced to define those symbols:
  > `filled_symbol` and `unfilled_symbol`. The method
>
[`line_set`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.LineGauge.html#method.line_set)
  > is still there, but marked as `deprecated`.
  >
>
![line_gauge](https://github.com/user-attachments/assets/cae308b8-151b-461d-8af6-9a20012adf2f)

-
[92a19cb](92a19cb604)
*(list)* Highlight symbol styling by @airblast-dev in
[#1595](https://github.com/ratatui/ratatui/pull/1595) [**breaking**]

  > Allow styling for `List`'s highlight symbol
  >
  > This change makes it so anything that implements `Into<Line>` can be
  > used as a highlight symbol.
  >
> BREAKING CHANGE:`List::highlight_symbol` can no longer be used in
const
  > context
  >
  > BREAKING CHANGE:`List::highlight_symbol` accepted `&str`. Conversion
  > methods that rely on type inference will need to be rewritten as the
  > compiler cannot infer the type.
  >
  > closes:https://github.com/ratatui/ratatui/issues/1443
  >
  > ---------

-
[e89a526](e89a526aab)
*(no_std)* Portable-atomic integration for targets with no atomic types
by @j-g00da in [#2076](https://github.com/ratatui/ratatui/pull/2076)

  > Improves compatibility with no-std targets that don't support atomic
  > types.
  >
  > We support three different scenarios depending on the target:
  > 1. Terminal applications and other std targets (e.g. espidf):
  > - `std` enabled, `portable-atomic` disabled
  > 2. Embedded targets with atomic types, bare metal x86, etc.:
  > - `std` disabled `portable-atomic` disabled
  > 3. Embedded targets without atomic types (e.g. single-core MCUs):
  > - `std` disabled, `portable-atomic` enabled
  >
> Turning on `portable-atomic` together with `std` will fall back to
`std`
  > atomic.

-
[1399d95](1399d95ae0)
*(no_std)* Make palette and serde features depends on std by @j-g00da in
[#1919](https://github.com/ratatui/ratatui/pull/1919)

-
[b32f781](b32f78195b)
*(no_std)* Make `ratatui-macros` no-std by @j-g00da in
[#1865](https://github.com/ratatui/ratatui/pull/1865)

-
[3e1c72f](3e1c72fb27)
*(no_std)* Make ratatui compatible with `#![no_std]` by @j-g00da in
[#1794](https://github.com/ratatui/ratatui/pull/1794) [**breaking**]
  >
  > Resolves #1781
  >
  > This PR makes it possible to compile ratatui with `#![no_std]`.
  > Also makes me answer "We Are So Embedded" to "Are We Embedded Yet?"

-
[ab48c06](ab48c06171)
*(no_std)* Option to disable layout cache for `no_std` compatibility by
@j-g00da in [#1795](https://github.com/ratatui/ratatui/pull/1795)
[**breaking**]
  >
  > Resolves #1780
  >
  > BREAKING CHANGE:Disabling `default-features` will now disable layout
  > cache, which can have a negative impact on performance.
  >
  > `Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` are now only
  > available if `layout-cache` feature is enabled.

-
[09173d1](09173d1829)
*(no_std)* Make `TestBackend::Error` `Infallible` by @j-g00da in
[#1823](https://github.com/ratatui/ratatui/pull/1823) [**breaking**]
  >
> BREAKING CHANGE:`TestBackend` now uses `core::convert::Infallible` for
  > error handling instead of `std::io::Error`

-
[007713e](007713e50a)
*(no_std)* Replace `Backend`'s `io::Error` usages with associated
`Error` type by @j-g00da in
[#1778](https://github.com/ratatui/ratatui/pull/1778) [**breaking**]
  >
  > Resolves #1775
  >
> BREAKING CHANGE:Custom backends now have to implement `Backend::Error`
> and `Backend::clear_region`. Additionally some generic `Backend` usage
  > will have to explicitly set trait bounds for `Backend::Error`.

-
[a42a17e](a42a17e184)
*(no_std)* Make `ratatui-widgets` `no_std` by @j-g00da in
[#1779](https://github.com/ratatui/ratatui/pull/1779)
  >
  > Resolves #1776

-
[5a232a3](5a232a3115)
*(no_std)* Remove redundant `std` usages in `ratatui-widgets` by
@j-g00da in [#1762](https://github.com/ratatui/ratatui/pull/1762)

-
[ebe10cd](ebe10cd81f)
*(no_std)* Remove redundant `std` usages in `ratatui-core` by @j-g00da
in [#1753](https://github.com/ratatui/ratatui/pull/1753)

  > Resolves https://github.com/ratatui/ratatui/issues/1751

-
[08b08cc](08b08cc45b)
*(rect)* Centering by @janTatesa in
[#1814](https://github.com/ratatui/ratatui/pull/1814)
  >
  > Resolves #617

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

> As of now it is possible to change the position of the Scrollbar but
not
  > possible to retrieve the position for further use. e.g.
  >
  > ```rust
  > let mut state = ScrollbarState::default();
  > state.next();
  > ```
  >
> This commit adds a new method "`current_position`" (since `position`
is
  > already taken by the fluent setter) for that purpose:
  >
  > ```rust
  > let index = state.get_position(); // yay
  > ```
  >
  > See #1545 for the concrete usage of this.

-
[4c3c054](4c3c0540cd)
*(serde)* Handle null modifiers in serde Style by @joshka in
[#2172](https://github.com/ratatui/ratatui/pull/2172)

  > Allow `Style`'s `add_modifier` and `sub_modifier` fields to
  > deserialize from `null`

-
[b9da192](b9da1926a0)
*(serde)* Derive Serialize/Deserialize for alignment enums by @j-g00da
in [#1957](https://github.com/ratatui/ratatui/pull/1957)
  >
  > Resolves #1954

-
[89b7421](89b74214d9)
*(serde)* Derive Serialize/Deserialize for additional structs/enums by
@aurreland in [#1883](https://github.com/ratatui/ratatui/pull/1883)

  > This PR adds `#[derive(Serialize, Deserialize)]` to the following
  > structs:
  > - `Constraint`
  > - `Direction`
  > - `Spacing`
  > - `Layout`
  > - `AccentedPalette`
  > - `NonAccentedPalette`
  > - `Palette`
  > - `Padding`
  > - `Borders`
  > - `BorderType`
  > - `ListDirection`
  > - `ScrollbarOrientation`
  > - `ScrollDirection`
  > - `RenderDirection`
  > - `HighlightSpacing`
  >
  > Fixes #1877

-
[03f3f6d](03f3f6df35)
*(style)* Allow add/sub modifiers to be omitted in Style serialization.
by @rcorre in [#2057](https://github.com/ratatui/ratatui/pull/2057)

  > It's really useful that Style supports Deserialize, this allows TUI
  > apps to have configurable theming without much extra code.
  >
  > However, deserializing a style currently fails if `add_modifier` and
  > `sub_modifier` are
  > not specified. That means the following TOML config:
  >
  > ```toml
  > [theme.highlight]
  > fg = "white"
  > bg = "black"
  > ```
  >
> Will fail to deserialize with "missing field `add_modifier`". It
should
  > be possible
  > to omit modifiers and have them default to "none".

-
[ee67347](ee673476d3)
*(symbols)* Make `Marker` non-exhaustive by @j-g00da in
[#2236](https://github.com/ratatui/ratatui/pull/2236) [**breaking**]

> This will allow us to add new markers without causing further breaking
  > changes.
  >
  > BREAKING CHANGE:`Marker` is now non-exhaustive

-
[985cd05](985cd05573)
*(symbols)* Add dashed borders by @theotchlx in
[#1573](https://github.com/ratatui/ratatui/pull/1573)

  > Adds several new border sets:
  > - ratatui::symbols::border::LIGHT_DOUBLE_DASHED
  > - ratatui::symbols::border::HEAVY_DOUBLE_DASHED
  > - ratatui::symbols::border::LIGHT_TRIPLE_DASHED
  > - ratatui::symbols::border::HEAVY_TRIPLE_DASHED
  > - ratatui::symbols::border::LIGHT_QUADRUPLE_DASHED
  > - ratatui::symbols::border::HEAVY_QUADRUPLE_DASHED
  >
  > And corresponding variants to the ratatui::widgets::BorderType enum
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1355

-
[4c301e8](4c301e891d)
*(text)* Implement `AddAssign` for `Text` by @acuteenvy in
[#1956](https://github.com/ratatui/ratatui/pull/1956)

> This makes it possible to add a second `Text` instance to a first one
using the += operator.
  >
  > ```rust
  > let mut text = Text::from("line 1");
  > text += Text::from("line 2");
  > ```
  >
> Style and alignment applied to the second text is ignored (though
styles and alignment of lines and spans are copied).

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

> Allows constructing `Rectangle`, `Points` and `Circle` using the `new`
  > method instead of initializing with the public fields directly.

-
[22610b0](22610b019b)
*(uncategorized)* Support adding an Offset to Position by @joshka in
[#2239](https://github.com/ratatui/ratatui/pull/2239)

  > Adds Position::offset() and arithmentic ops (Position + Offset and
  > Position - Offset)
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/2018

-
[24e3133](24e3133456)
*(uncategorized)* Add Rect::resize() method by @joshka in
[#2240](https://github.com/ratatui/ratatui/pull/2240)
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1440

-
[96d097e](96d097ef76)
*(uncategorized)* Implement Rect ops for moving by @joshka in
[#1596](https://github.com/ratatui/ratatui/pull/1596)
  >
  > feat:implement Rect ops for moving
  >
  > Implemented `Add`, `AddAssign`, `Sub`, and `SubAssign` on `Rect` for
  > `Offset`. This makes it possible to move rects
  >
  > ```rust
  > let rect = Rect::new(1, 2, 3, 4);
  > let moved = rect + Offset(1, 2);
  > let moved = rect - Offset(1, 2);
  > let moved = rect + Offset(-1, -2);
  > ```
  >
> Additionally Rect, Size, Offset, and Position now all have MIN and MAX
  > consts.

-
[e869cb9](e869cb9750)
*(uncategorized)* Add Size::area() by @joshka in
[#2226](https://github.com/ratatui/ratatui/pull/2226)

  > Add Size::area() returning u32 to avoid u16 overflow
  > Fixes https://github.com/ratatui/ratatui/issues/2204

-
[b6588fd](b6588fd1fa)
*(uncategorized)* Implement `From<Size>` for `(u16, u16)` by @0xb002f0
in [#2223](https://github.com/ratatui/ratatui/pull/2223)

-
[75b78be](75b78be09f)
*(uncategorized)* Add width() impl for tabs by @joshka in
[#2049](https://github.com/ratatui/ratatui/pull/2049)

> The purpose of this is to make it easy for apps to easily calculate
the
  > total tab width including all dividers and padding.

-
[8188ed3](8188ed3950)
*(uncategorized)* Implement UnicodeWidthStr for Text/Line/Span by
@joshka in [#2030](https://github.com/ratatui/ratatui/pull/2030)

  > You can now calculate the width of any Text/Line/Span using the
> UnicodeWidthStr trait instead of the width method on the type. This
also
  > makes it possible to use the width_cjk() method if needed.

-
[c845fec](c845fec765)
*(uncategorized)* Add conversion from Size to Rect by @joshka in
[#2028](https://github.com/ratatui/ratatui/pull/2028)
  >
  > `Rect::from(size)` returns a new Rect at the origin (0, 0) with the
  > specified `Size`

-
[017af11](017af11b2b)
*(uncategorized)* Preserve block titles when merging borders by @j-g00da
in [#1977](https://github.com/ratatui/ratatui/pull/1977)
  >
  > Resolves #1939

-
[6dcd53b](6dcd53bc6b)
*(uncategorized)* Add ergonomic methods for layouting Rects by @joshka
in [#1909](https://github.com/ratatui/ratatui/pull/1909)

> This commit introduces new methods for the `Rect` struct that simplify
> the process of splitting a `Rect` into sub-rects according to a given
> `Layout`. By putting these methods on the `Rect` struct, we make it a
> bit more natural that a layout is applied to the `Rect` itself, rather
  > than passing a `Rect` to the `Layout` struct to be split.
  >
> Adds:- `Rect::layout` and `Rect::try_layout` methods that allow
splitting a
  >   `Rect` into an array of sub-rects according to a given `Layout`.
  > - `Rect::layout_vec` method that returns a `Vec` of sub-rects.
> - `Layout::try_areas` method that returns an array of sub-rects, with
  >   compile-time checks for the number of constraints. This is added
  >   mainly for consistency with the new `Rect` methods.
  >
  > ```rust
  > use ratatui_core::layout::{Layout, Constraint, Rect};
  > let area = Rect::new(0, 0, 10, 10);
  > let layout = Layout::vertical([Constraint::Fill(1); 2]);
  >
  > // Rect::layout() infers the number of constraints at compile time:
  > let [top, main] = area.layout(&layout);
  >
> // Rect::try_layout() and Layout::try_areas() do the same, but return
a
  > // Result:
  > let [top, main] = area.try_layout(&layout)?;
  > let [top, main] = layout.try_areas(area)?;
  >
  > // Rect::layout_vec() returns a Vec of sub-rects:
  > let areas_vec = area.layout_vec(&layout);
  >
  > // you can also explicitly specify the number of constraints:
  > let areas = area.layout::<2>(&layout);
  > let areas = area.try_layout::<2>(&layout)?;
  > let areas = layout.try_areas::<2>(area)?;
  > ```

-
[0c3872f](0c3872f1c5)
*(uncategorized)* Add Rect::outer() by @joshka in
[#1929](https://github.com/ratatui/ratatui/pull/1929)
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/211

-
[7bc78bc](7bc78bca1b)
*(uncategorized)* Add ratatui::run() method by @joshka in
[#1707](https://github.com/ratatui/ratatui/pull/1707)

> This introduces a new `ratatui::run()` method which runs a closure
with
> a terminal initialized with reasonable defaults for most applications.
  > This calls `ratatui::init()` before running the closure and
> `ratatui::restore()` after the closure completes, and returns the
result
  > of the closure.
  >
  > A minimal hello world example using the new `ratatui::run()` method:
  >
  > ```rust
  > fn main() -> Result<(), Box<dyn std::error::Error>> {
  >     ratatui::run(|terminal| {
  >         loop {
> terminal.draw(|frame| frame.render_widget("Hello World!",
frame.area()))?;
  >             if crossterm::event::read()?.is_key_press() {
  >                 break Ok(());
  >             }
  >         }
  >     })
  > }
  > ```
  >
  > Of course, this also works both with apps that use free methods and
  > structs:
  >
  > ```rust
> fn run(terminal: &mut DefaultTerminal) -> Result<(), AppError> { ... }
  >
  > ratatui::run(run)?;
  > ```
  >
  > ```rust
  > struct App { ... }
  >
  > impl App {
  >     fn new() -> Self { ... }
> fn run(mut self, terminal: &mut DefaultTerminal) -> Result<(),
AppError> { ... }
  > }
  >
  > ratatui::run(|terminal| App::new().run(terminal))?;
  > ```

-
[b6fbfcd](b6fbfcdd1c)
*(uncategorized)* Add lifetime to symbol sets by @joshka in
[#1935](https://github.com/ratatui/ratatui/pull/1935)

> This makes it possible to create symbol sets at runtime with
non-static
  > lifetimes.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1722

-
[488e5f0](488e5f020f)
*(uncategorized)* Make `border!` work without importing `Borders` by
@j-g00da in [#1918](https://github.com/ratatui/ratatui/pull/1918)

> Currently using `border!` macro requires explicit import of `Borders`
  > which is unnecessary.

-
[671c2b4](671c2b4fd4)
*(uncategorized)* Support merging the borders of blocks by @j-g00da

> When two borders overlap, they will automatically merge into a single,
  > clean border instead of overlapping.
  >
> This improves visual clarity and reduces rendering glitches around
corners.
  >
  > For example:
  >
  > ```
> assert_eq!(Cell::new("┘").merge_symbol("┏",
MergeStrategy::Exact).symbol(), "╆");
  > ```

-
[702fff5](702fff501c)
*(uncategorized)* Implement stylize methods directly on Style by @joshka
in [#1572](https://github.com/ratatui/ratatui/pull/1572) [**breaking**]

> This makes it possible to create constants using the shorthand
methods.
  >
  > ```rust
  > const MY_STYLE: Style = Style::new().blue().on_black();
  > ```
  >
  > Rather than implementing Styled for Style and then adding extension
  > methods that implement the Stylize shorthands, this implements the
  > methods as const functions directly on Style.
  >
  > BREAKING CHANGE:`Style` no longer implements `Styled`. Any calls to
  > methods implemented by the blanket implementation of Stylize are now
> defined directly on Style. Remove the Stylize import if it is no
longer
  > used by your code.
  >
> The `reset()` method does not have a direct replacement, as it clashes
  > with the existing `reset()` method. Use `Style::reset()` rather than
  > `some_style.reset()`
  >
  > Fixes:#1158

-
[4fcd238](4fcd238e1e)
*(uncategorized)* Support no-std for calendar widget by @joshka in
[#1852](https://github.com/ratatui/ratatui/pull/1852)

> Removes the CalendarEventStore::today() function in no-std
environments

-
[53cdbbc](53cdbbccd5)
*(uncategorized)* Enable serde propagation to backend crates (crossterm,
termion) by @ArjunKrish7356 in
[#1812](https://github.com/ratatui/ratatui/pull/1812)

> This PR propagates the serde feature from the main ratatui crate to
the
  > ratatui-crossterm and ratatui-termion backend crates. Solves #1805

-
[6836a69](6836a6903e)
*(uncategorized)* Implement styled for other primitives by @aschey in
[#1684](https://github.com/ratatui/ratatui/pull/1684)

-
[fcb47d6](fcb47d60f3)
*(uncategorized)* Rename Alignment to HorizontalAlignment and add
VerticalAlignment by @joshka in
[#1735](https://github.com/ratatui/ratatui/pull/1735) [**breaking**]

> We don't anticipate removing or deprecating the type alias in the near
  > future, but it is recommended to update your imports to use the new
  > name.
  >
> Added a VerticalAlignment enum to make the API more consistent. We
don't
> have a specific use case for it yet, but it's better to add it now and
  > be able to use it in the future.
  >
  > BREAKING-CHANGE:The `Alignment` enum has been renamed to
> `HorizontalAlignment` to better reflect its purpose. A type alias has
> been added to maintain backwards compatibility, however there are some
  > cases where type aliases are not enough to maintain backwards
  > compatibility. E.g. when using glob imports to import all the enum
> variants. This should not affect most users, but it is recommended to
  > update your imports to use the new name.
  >
  > ```diff
  > - use ratatui::layout::Alignment;
  > + use ratatui::layout::HorizontalAlignment;
  >
  > - use Alignment::*;
  > + use HorizontalAlignment::*;
  > ```

-
[2714d6b](2714d6b9c3)
*(uncategorized)* Add array and tuple RGB color conversion methods by
@joshka in [#1703](https://github.com/ratatui/ratatui/pull/1703)

> Other crates (e.g. colorgrad) that deal with colors can convert colors
> to a tuple of 3 or 4 u8 values. This commit adds conversion methods
from
  > these types to a `Color::Rgb` instance. Any alpha value is ignored.
  >
  > ```rust
  > Color::from([255, 0, 0]);
  > Color::from((255, 0, 0));
  > Color::from([255, 0, 0, 255]);
  > Color::from((255, 0, 0, 255));
  > ```

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

  > Move the Mascot from Demo2 into a new widget.
  > Make the Rat grey and adjust the other colors.
  >
  > ```rust
  > frame.render_widget(RatatuiMascot::default(), frame.area());
  > ```

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)
  >
> https://crates.io/crates/anstyle makes it possible to define colors in
> an interoperable way. This makes it possible for applications to
easily
  > load colors from a variety of formats.
  >
> This is gated by the anstyle feature flag which is disabled by
default.
  >
  > ---------

### Bug Fixes

-
[a89d3d6](a89d3d62ff)
*(buffer)* Clear behavior with VS16 wide emojis by @nornagon in
[#2063](https://github.com/ratatui/ratatui/pull/2063)

  > This fixes a bug where certain emojis like ⌨️ would sometimes be
> "overlaid" onto existing content from the buffer, instead of properly
  > clearing.
  >
  > [example demonstrating
>
bug](https://gist.github.com/nornagon/11a79d7a1f2e98aa129fedb4abccc530)
  >
  > This PR was generated by Codex, and validated by me:
> 1. Behavior of the above example code was buggy before this fix
(showed
  > overlaying "b" on top of the keyboard emoji), and fixed after.
> 2. The U+FE0F check is not strictly required, but I did note that
emoji
  > without this char don't exhibit the buggy behavior, even without the
  > fix.
  >
  > ---------

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

  > Previously the canvas coordinates were rounded towards zero, which
> causes the rendering to be off by one pixel in some cases. It also
meant
> that pixels at the extreme edges of the canvas can only be drawn if
the
  > point was exactly on the edge of the canvas. This commit rounds the
> coordinates to the nearest integer instead. This may change the output
  > for some apps using Canvas / Charts.

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

> Previously lines with points that were outside the canvas bounds were
> not drawn at all. Now they are clipped to the bounds of the canvas so
  > that the portion of the line within the canvas is draw.
  >
> To facilitate this, a new `Painter::bounds()` method which returns the
  > bounds of the canvas is added.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1489

-
[2b0a044](2b0a044ced)
*(ci)* Add contents write permission to release-plz PR by @marcoieni in
[#2119](https://github.com/ratatui/ratatui/pull/2119)
  >
  > https://release-plz.dev/docs/github/quickstart#3-setup-the-workflow
  >
  > Fixes https://github.com/release-plz/release-plz/issues/2439

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

  > The Dim removal should behave the same as the logic for Bold removal
> that sends NormalIntensity sequence and then restores Dim when needed.

-
[16b76e3](16b76e36ee)
*(demo)* Update the width of demo2 tape by @orhun in
[#2164](https://github.com/ratatui/ratatui/pull/2164)

>
![](https://github.com/ratatui/ratatui/blob/images/examples/demo2.gif?raw=true)
  >
  > fixes #1721

-
[dca331c](dca331c748)
*(demo)* Support tab key in demo2 example by @orhun in
[#1726](https://github.com/ratatui/ratatui/pull/1726)
  >
  > see #1721
  >
> Not sure what caused this - it's been there for a while probably and
we
  > didn't realize it since we used `demo2-destroy` mostly.

-
[0fd4753](0fd4753e6b)
*(examples)* Run the correct example for chart by @orhun in
[#1679](https://github.com/ratatui/ratatui/pull/1679)
  >
  > fixes #1678

-
[39479e2](39479e298c)
*(examples)* Ensure that example projects are not published by @orhun in
[#1672](https://github.com/ratatui/ratatui/pull/1672)

-
[9314312](93143126b3)
*(layout)* Feature flag cache related types by @joshka in
[#1842](https://github.com/ratatui/ratatui/pull/1842)

-
[2dd1977](2dd1977c59)
*(layout-cache)* Import `NonZeroUsize` only when `layout-cache` is
enabled by @j-g00da in
[#1839](https://github.com/ratatui/ratatui/pull/1839)

> This silences unused import warning, when `layout-cache` is disabled.

-
[564a9d7](564a9d76fc)
*(line-gauge)* Pad default label to display 3 numbers by @martinetd in
[#2053](https://github.com/ratatui/ratatui/pull/2053)

> Display the default label of the LineGauge widget padded to fill 3
cells.
> This makes it so that the label doesn't shift around when going from a
  > single digit to double / triple digits.
  >
> To maintain the existing behavior, use a custom label by calling
`.label()`
  > on the LineGauge.

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

  > The canvas map constants are now statics instead.
  > Fixes
>
https://rust-lang.github.io/rust-clippy/master/index.html\#large_const_arrays

-
[2e54d5e](2e54d5e22c)
*(macros)* Use $crate re-export in text macro by @airblast-dev in
[#1832](https://github.com/ratatui/ratatui/pull/1832)

-
[79d5165](79d5165cae)
*(no_std)* Propagate `std` feature flag to dependencies by @j-g00da in
[#1838](https://github.com/ratatui/ratatui/pull/1838)

> Disables `std` feature flags in dependencies and only enables them
with
> `ratatui` and `ratatui-core`'s `std` feature flag. This partially
fixes the
> issue of still depending on `std`, when `std` feature flag is
disabled.

-
[00da8c6](00da8c6203)
*(no_std)* Provide `f64` polyfills for `no_std` compatibility by
@j-g00da in [#1840](https://github.com/ratatui/ratatui/pull/1840)
  >
  > Related:https://github.com/rust-lang/rust/issues/137578

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

> This adds the `area.is_empty()` back into the scrollbar render method.
  > Without it, the widget panics if the height is 0.

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[0a25bc1](0a25bc166d)
*(tests)* Update the stderr snapshot for ratatui-macros by @orhun in
[#2161](https://github.com/ratatui/ratatui/pull/2161)

  > New 🦀 broke the CI

-
[5fa342c](5fa342cc52)
*(widgets)* Fix centered block title truncation by @ognis1205 in
[#1973](https://github.com/ratatui/ratatui/pull/1973)

  > Previously block titles that were aligned center were
  > truncated poorly (aligned to the left, and the last
  > non-fitting title would be truncated on the left and right.
  > This now truncates the titles more obviously centered.

-
[f919b25](f919b25ea6)
*(uncategorized)* String_to_string lint is now part of implicit_clone by
@joshka in [#2173](https://github.com/ratatui/ratatui/pull/2173)

-
[1fe64de](1fe64de09a)
*(uncategorized)* Include underline color in anstyle conversion by
@aschey in [#2004](https://github.com/ratatui/ratatui/pull/2004)

  > Underline color wasn't included in the style conversion logic.

-
[c1b8528](c1b8528b69)
*(uncategorized)* Panic when rendering widgets on too small buffer by
@j-g00da in [#1996](https://github.com/ratatui/ratatui/pull/1996)

> Fixes panic on overflow on horizontal `Barchart` and `RatatuiMascot`
and adds proper tests to all widgets.
  >
  > ---------

-
[08b21fa](08b21fa55c)
*(uncategorized)* Fix panic when rendering a `Paragraph` out of bounds
by @jwodder in [#1670](https://github.com/ratatui/ratatui/pull/1670)
  >
  > Fixes #1667.

-
[80bc818](80bc818723)
*(uncategorized)* Fix truncation of left aligned block titles by @joshka
in [#1931](https://github.com/ratatui/ratatui/pull/1931)

> truncate the right side of left aligned titles rather than the left
side
> of right aligned titles. This is more obvious as the left side of text
  > often contains more important information. And we generally read
  > left to right.
  >
  > This change makes centered titles overwrite left aligned titles and
  > right aligned titles overwrite centered or left aligned titles.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/358

-
[21e3b59](21e3b598ce)
*(uncategorized)* Fix handling of multi-byte chars in bar chart by
@joshka in [#1934](https://github.com/ratatui/ratatui/pull/1934)

  > The split_at method requires that the split point is at a valid utf8
  > character boundary.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1928

-
[e1e4004](e1e400406c)
*(uncategorized)* Derive copy for list state by @janTatesa in
[#1921](https://github.com/ratatui/ratatui/pull/1921)

-
[12cb5a2](12cb5a28fe)
*(uncategorized)* Allow canvas area to exceed u16::MAX by @Daksh14 in
[#1891](https://github.com/ratatui/ratatui/pull/1891)

> This allows Canvas grids where the width * height exceeds u16::MAX by
  > converting values to usize earlier in several methods.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1449

-
[09cc9ef](09cc9ef57d)
*(uncategorized)* Typo in changelog by @joshka in
[#1857](https://github.com/ratatui/ratatui/pull/1857)

-
[c238aca](c238aca83a)
*(uncategorized)* `padding_right()` should set right padding instead of
left by @sxyazi in [#1837](https://github.com/ratatui/ratatui/pull/1837)

  > Fixes https://github.com/ratatui/ratatui/issues/1836

-
[c90ba97](c90ba9781e)
*(uncategorized)* Avoid unnecessary imports in minimal build by @cgzones
in [#1787](https://github.com/ratatui/ratatui/pull/1787)
  >
  > core::ops::Range is only used with the feature `scrolling-regions`.
  > Ensure a minimal `cargo check` reports no warnings.

-
[416ebdf](416ebdf8c8)
*(uncategorized)* Correct clippy errors introduced by rust 1.86.0 update
by @j-g00da in [#1755](https://github.com/ratatui/ratatui/pull/1755)

  > New version of rust (1.86.0) caused CI to fail.

-
[4eac5b2](4eac5b2849)
*(uncategorized)* Make deprecation notes more helpful by @joshka in
[#1702](https://github.com/ratatui/ratatui/pull/1702)

> AI coding assistants use the deprecation notes to automatically
suggest
> fixes. This commit updates the deprecation notes to push those tools
to
  > suggest the correct replacement methods and types.
  >
> Specifically, AI tools often suggest using `Buffer::get(x, y)`,
because
  > of their training data where this was prevalent. When fixing these
> deprecations, they often incorrectly suggest using `Buffer::get(x, y)`
  > instead of `Buffer[(x, y)]`.

-
[35a8642](35a86427ab)
*(uncategorized)* `Rect::positions()` should be empty when width is 0
and height is nonzero by @jwodder in
[#1669](https://github.com/ratatui/ratatui/pull/1669)
  >
  > Fixes #1666.

-
[f5fc819](f5fc8197ff)
*(uncategorized)* Avoid extra line break on whitespace only lines when
wrapping paragraphs by @dotdash in
[#1636](https://github.com/ratatui/ratatui/pull/1636)

  > Currently whitespace only lines produces an extra line break when
  > trimming is disabled, because both the trimmed as well as the
  > non-trimmed line get inserted. Fix this by only inserting the
  > non-trimmed one.

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)
  >
>
https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)
  >
  > StatefulWidget::State and StatefulWidgetRef::State are now ?Sized.
  >
> This allows implementations of the traits to use unsized types for the
  > State associated type. This is turn is useful when doing things like
  > boxing different stateful widget types with State which implements
  > `Any`, are slices or any other dynamically sized type.

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[8d60e96](8d60e96b2b)
*(examples)* Use crossterm event methods by @joshka in
[#1792](https://github.com/ratatui/ratatui/pull/1792)

> Crossterm 0.29 introduced methods to easily check / extract the event
  > type. E.g. as_key_press_event() and is_key_press(). This commit
  > updates the examples to use these methods instead of matching on
  > the event type. This makes the code cleaner and easier to read.
  >
> Also does a general cleanup of the event handling code in the
examples.

-
[07bec55](07bec55b7d)
*(no_std)* Make usages of std explicit in ratatui-core. by @ed-2100 in
[#1782](https://github.com/ratatui/ratatui/pull/1782)

  > ### This commit does the following:
  >
  > - Adds `#[no_std]` to `lib.rs`.
  > - Adds `extern crate std;` to `lib.rs`.
> - Updates `ratatui-core` to explicitly `use` items from std and alloc.
  > - Prefers `use`-ing alloc over std when possible.
  >
  > ### Explanation:
  >
> This allows usages of `std` in `ratatui-core` to be clearly pointed
out
  > and dealt with individually.
  >
  > Eventually, when `std` is to be feature gated, the associated commit
  > will be much cleaner.

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[c7c3498](c7c3498025)
*(uncategorized)* Use saturating_add in Rect::new by @pharrison31415 in
[#2216](https://github.com/ratatui/ratatui/pull/2216)

-
[02e53de](02e53de0f8)
*(uncategorized)* Make use of iter::repeat_n() by @cgzones in
[#1788](https://github.com/ratatui/ratatui/pull/1788)

  > Applied via clippy --fix.
  > Available since 1.82.0.

-
[a195d59](a195d59a47)
*(uncategorized)* Move xtask commands to small modules by @joshka in
[#1620](https://github.com/ratatui/ratatui/pull/1620)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

> Backend code is now moved to `ratatui-crossterm`, `ratatui-termion`
and
> `ratatui-termwiz`. This should be backwards compatible with existing
code.

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

> This is a preparatory refactoring for modularization. No user visible
  > changes.

### Documentation

-
[40e96a2](40e96a2a04)
*(block)* Add collapsed border example by @joshka in
[#1899](https://github.com/ratatui/ratatui/pull/1899)

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

  > - Moves the block example from `ratatui` to `ratatui-widgets`
  > - Simplifies the example (bordered, styled, custom borders)
  >
  > see #1512

-
[0951da5](0951da52f9)
*(breaking-changes)* Improve migration guide for `Backend::Error` by
@j-g00da in [#1908](https://github.com/ratatui/ratatui/pull/1908)
  >
  > Related:https://github.com/fujiapple852/trippy/pull/1588

-
[bbe1cf9](bbe1cf9497)
*(breaking-changes)* Change MSRV to 1.85 by @j-g00da in
[#1896](https://github.com/ratatui/ratatui/pull/1896)

> The minimum supported Rust version is now for `ratatui` v0.30 is 1.85

-
[c7912f3](c7912f3990)
*(breaking-changes)* Fix header level by @j-g00da in
[#1825](https://github.com/ratatui/ratatui/pull/1825)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[73488ab](73488abb45)
*(contributing)* Fix link to `widgets_block_renders` test by @ognis1205
in [#2101](https://github.com/ratatui/ratatui/pull/2101)

  > The `CONTRIBUTING.md` referenced `tests/widgets_block.rs`, but the
> correct path is `ratatui/tests/widgets_block.rs`. Updated the link so
  > that readers can navigate to the test example without 404 error.
  >
  > ---------

-
[0b025db](0b025db72b)
*(contributing)* Fix grammar by @j-g00da in
[#1958](https://github.com/ratatui/ratatui/pull/1958)

-
[1197b2a](1197b2a02c)
*(contributing)* Add note about using nightly for formatting by @joshka
in [#1816](https://github.com/ratatui/ratatui/pull/1816)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

  > - Updates `CONTRIBUTING.md` about the usage of `xtask`
  > - Removes `Makefile.toml`

-
[22e3e84](22e3e84de8)
*(core)* Remove link to Paragraph widget by @orhun in
[#1683](https://github.com/ratatui/ratatui/pull/1683)

-
[b65788c](b65788ce14)
*(examples)* Remove duplicated link by @matthiasbeyer in
[#2212](https://github.com/ratatui/ratatui/pull/2212)

-
[200b217](200b217722)
*(examples)* Add VHS tapes and docs for widget examples by @orhun in
[#2114](https://github.com/ratatui/ratatui/pull/2114)
  >
  > fixes #1982
  >
> Later on I'll figure out an easy way to regenerate this in the CI and
  > possibly do the same for the app examples' VHS tapes. That's why I
  > haven't added a script or mentioned anything in the docs yet (hint:
  > #1721)
  >
  > ---------

-
[861fbdf](861fbdf5cf)
*(examples)* Fix a typo by @j-g00da in
[#1890](https://github.com/ratatui/ratatui/pull/1890)

  > Makes CI typos check pass again

-
[882cc3c](882cc3c6c6)
*(examples)* Update app examples with tapes by @orhun in
[#1673](https://github.com/ratatui/ratatui/pull/1673)

-
[4393fae](4393fae54c)
*(examples)* Move scrollbar example to examples folder by @orhun in
[#1665](https://github.com/ratatui/ratatui/pull/1665)

-
[9ea70e2](9ea70e28c6)
*(examples)* Move widget-impl example to examples folder by @orhun in
[#1663](https://github.com/ratatui/ratatui/pull/1663)

-
[774ab78](774ab788d4)
*(examples)* Move widget-ref-container example to examples folder by
@orhun in [#1664](https://github.com/ratatui/ratatui/pull/1664)
  >
  > see #1512

-
[910d16e](910d16e63a)
*(examples)* Move user-input example to examples folder by @orhun in
[#1659](https://github.com/ratatui/ratatui/pull/1659)

-
[dbfb7da](dbfb7da9e3)
*(examples)* Move table example to examples folder by @orhun in
[#1657](https://github.com/ratatui/ratatui/pull/1657)

-
[cb2a58a](cb2a58aaa0)
*(examples)* Move tracing example to examples folder by @orhun in
[#1658](https://github.com/ratatui/ratatui/pull/1658)

-
[7e00b64](7e00b646fc)
*(examples)* Move panic example to examples folder by @orhun in
[#1655](https://github.com/ratatui/ratatui/pull/1655)

-
[8127590](8127590812)
*(examples)* Move modifiers example to examples folder by @orhun in
[#1654](https://github.com/ratatui/ratatui/pull/1654)

-
[7c40c0b](7c40c0bbdd)
*(examples)* Move popup example to examples folder by @orhun in
[#1656](https://github.com/ratatui/ratatui/pull/1656)
  >
  > see #1512

-
[d87354f](d87354f400)
*(examples)* Move list example to examples folder by @orhun in
[#1653](https://github.com/ratatui/ratatui/pull/1653)
  >
  > see #1512
  >
  > also renames it to todo-list

-
[621226f](621226f2e2)
*(examples)* Move inline example to examples folder by @orhun in
[#1651](https://github.com/ratatui/ratatui/pull/1651)

-
[9ba7d25](9ba7d25b71)
*(examples)* Move hyperlink example to examples folder by @orhun in
[#1650](https://github.com/ratatui/ratatui/pull/1650)

-
[bb94d1c](bb94d1c0fa)
*(examples)* Move minimal example to examples folder by @orhun in
[#1649](https://github.com/ratatui/ratatui/pull/1649)

-
[9f399ac](9f399ac7a6)
*(examples)* Move gauge example to examples folder by @orhun in
[#1646](https://github.com/ratatui/ratatui/pull/1646)

-
[104d6a6](104d6a6c2b)
*(examples)* Move custom-widget example to examples folder by @orhun in
[#1644](https://github.com/ratatui/ratatui/pull/1644)

-
[fa8ca01](fa8ca0121a)
*(examples)* Move flex example to examples folder by @orhun in
[#1642](https://github.com/ratatui/ratatui/pull/1642)

-
[f5fde0e](f5fde0ef53)
*(examples)* Move constraints example to examples folder by @orhun in
[#1641](https://github.com/ratatui/ratatui/pull/1641)

-
[fc70288](fc70288954)
*(examples)* Move constraint-explorer example to examples folder by
@orhun in [#1640](https://github.com/ratatui/ratatui/pull/1640)

-
[325f961](325f96102a)
*(examples)* Move hello-world example to examples folder by @orhun in
[#1647](https://github.com/ratatui/ratatui/pull/1647)

-
[867c4bc](867c4bc4e9)
*(examples)* Move colors-rgb example to examples folder by @joshka in
[#1582](https://github.com/ratatui/ratatui/pull/1582)

  > - **docs: move colors-rgb example to examples folder**
  > - **docs: update main examples README**
  >
  > ---------

-
[72334ed](72334ed61c)
*(layout)* Update documentation to point to `kasuari` solver by @a-kenji
in [#2003](https://github.com/ratatui/ratatui/pull/2003)

-
[2be9ccb](2be9ccb120)
*(layout)* Remove unnecessary path prefix by @j-g00da in
[#1766](https://github.com/ratatui/ratatui/pull/1766)

-
[b669ceb](b669cebcaf)
*(layout)* Change `cassowary` to `kasuari` crate reference by @j-g00da
in [#1765](https://github.com/ratatui/ratatui/pull/1765)

-
[f907c74](f907c74bb3)
*(license)* Update copyright years by @LVivona in
[#1639](https://github.com/ratatui/ratatui/pull/1639)

  > Update MIT Licence to copyright year 2025

-
[68b9f67](68b9f67f59)
*(readme)* Add `Built with Ratatui` badge for downstream projects by
@harilvfs in [#1905](https://github.com/ratatui/ratatui/pull/1905)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

> This is the result of the re-imagination of a more suitable README.md.
It
  > is simpler and shorter: not giving more information to the user than
  > they actually need.
  >
> Also updates the quickstart code with the up-to-date version and adds
  > link to templates which was missing.
  >
  > ---------

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[8e5151f](8e5151f83d)
*(rect)* Fix typo in the Rect::outer function comments by @orhun in
[#2123](https://github.com/ratatui/ratatui/pull/2123)

-
[40f13c6](40f13c6a6c)
*(rect)* Update the outdated comment for Rect::area() by @isgin01 in
[#2100](https://github.com/ratatui/ratatui/pull/2100)

> The return value of Rect.area() is no longer of u16 type, and the
value
  > is not being clumped anymore.

-
[ce16692](ce16692b9a)
*(release)* Fix typo by @j-g00da in
[#1754](https://github.com/ratatui/ratatui/pull/1754)

-
[9a930a6](9a930a6e99)
*(terminal)* Made usage of Terminal::get_frame() clearer by @Blaeriz in
[#2071](https://github.com/ratatui/ratatui/pull/2071)

  > Closes : https://github.com/ratatui/ratatui/issues/1200
  >
  > ---------

-
[b08b4cb](b08b4cbd5e)
*(terminal)* Add disclaimer about panics to Terminal::new by
@lolbinarycat in [#2088](https://github.com/ratatui/ratatui/pull/2088)

  >
  > part of #2087
  >
  > cc @orhun
  >
  > ---------

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)
  >
  > related #1512
  >
  > ---------

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)
  >
  > related #1512
  >
> Also removes the tabs example from ratatui crate since it overlaps
with
> this new example in terms of functionality and it was not following
the
  > general theme of other examples.

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

  > Related to: #1512

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

  > Related to: #1512

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)
  >
  > related #1512
  >
> Also removes the sparkline example from ratatui crate since this
example
  > is a simplified and easier to understand version of that

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)
  >
  > related #1512

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

  > better stonks

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)
  >
  > related #1512
  >
> Also removes the paragraph example from `ratatui` since these examples
  > are more or less the same.

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)
  >
  > related #1512
  >
  > Also updates the code to make it consistent with the other examples

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)
  >
  > related #1512

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)
  >
  > related #1512

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

  > stonks

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)
  >
  > related #1512

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[b1d47e7](b1d47e7718)
*(uncategorized)* Discourage use of `Buffer`'s `pos_of`, `index_of` by
@pharrison31415 in [#2225](https://github.com/ratatui/ratatui/pull/2225)

> These methods assume that the backing store of any buffer / area is
linearly indexable. There are other ways that we might want to
experiment in the future with how to store the values (trees, 2D
allocated areas that are non-contiguous etc.). The index <-> pos
conversion there isn't particularly useful. This should be an internal
implementation detail of the buffer, rather than something that we
expose, but we're not deprecating this for now at least.

-
[f8b0594](f8b0594363)
*(uncategorized)* Fix: fix typos by @j-g00da in
[#2129](https://github.com/ratatui/ratatui/pull/2129)

  > This fixes the pipeline after bumping typos.

-
[9998000](9998000e36)
*(uncategorized)* Use shields.io badge by @LitoMore in
[#2040](https://github.com/ratatui/ratatui/pull/2040)

  > Related to:
  > - https://github.com/simple-icons/simple-icons/pull/13593
  > - https://github.com/ratatui/ratatui/pull/1967
  >
  > The Ratatui icon is available on shields.io now ✌️
  >
  > And it's customizable. There are more configurations at
  > https://shields.io/badges.
  >
  > Here are some examples:
  >
  > ```markdown
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
>
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)
>
![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)
  > ```
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
>
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)
  >
>
![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)
  >
> I also created a PR to the ratatui-website project to update the
badge.
  > Here is the PR:
  >
  > - https://github.com/ratatui/ratatui-website/pull/924

-
[71ef65b](71ef65b624)
*(uncategorized)* Add section on collaborative development to
contributing doc by @joshka in
[#2029](https://github.com/ratatui/ratatui/pull/2029)

-
[cba5cca](cba5cca2bd)
*(uncategorized)* Update heading image for Ratatui 0.30.0 release 🎉 by
@j-g00da in [#2000](https://github.com/ratatui/ratatui/pull/2000)

-
[9836f07](9836f0760d)
*(uncategorized)* Add AI contribution guidelines by @joshka in
[#2013](https://github.com/ratatui/ratatui/pull/2013)

-
[98f85b8](98f85b8650)
*(uncategorized)* Update link to scrollable widgets RFC by @MatrixFrog
in [#1994](https://github.com/ratatui/ratatui/pull/1994)

-
[055522e](055522ef7b)
*(uncategorized)* Add docs for authoring widget crates by @j-g00da in
[#1955](https://github.com/ratatui/ratatui/pull/1955)

  > - added Authoring Widget Libraries sub-section
  > - moved built-in and third-party widgets sections higher

-
[617d318](617d31851a)
*(uncategorized)* Improve Block docs by @joshka in
[#1953](https://github.com/ratatui/ratatui/pull/1953)

-
[8e2d568](8e2d568428)
*(uncategorized)* Improve layout related docs by @joshka in
[#1948](https://github.com/ratatui/ratatui/pull/1948)

> Adds module level docs and more comprehensive docs on all the types in
  > the layout module
  >
  > Fixes #1937

-
[4c708dd](4c708ddf8a)
*(uncategorized)* Improve docs for run/init/restore etc. by @joshka in
[#1947](https://github.com/ratatui/ratatui/pull/1947)

  > - **docs: document the init module**
  > - **docs: use the ratatui::run() methods in the main doc**
> - **docs: add more intradoc / website links and historical perspective
  > on Terminal / backend**
  > - **docs: add notes about new run/init/restore methods and the
  > defaultterminal type to terminal docs**

-
[5620e06](5620e06b1a)
*(uncategorized)* Add crate organization sections to workspace by
@joshka in [#1946](https://github.com/ratatui/ratatui/pull/1946)

  > Adds summary-level crate organization documentation to all crates
> explaining the modular workspace structure and when to use each crate.
  > Links to ARCHITECTURE.md for detailed information.

-
[cfb65e6](cfb65e64ba)
*(uncategorized)* Add examples for handling state by @joshka in
[#1849](https://github.com/ratatui/ratatui/pull/1849)

> Added comprehensive state management examples covering both immutable
  > and mutable patterns and documentation to help developers choose the
  > right approach for their applications.

-
[3de41a8](3de41a8249)
*(uncategorized)* Document widgets module by @joshka in
[#1932](https://github.com/ratatui/ratatui/pull/1932)

  > Adds a good overview of the use and implementation of widget traits.
  >
  > Goals with the doc rewrite:
> - document the rationale for the ratatui-widgets crate with info for
app
  > builders and widget makers.
  > - Show how to use the widgets for rendering as well as implement the
  > traits- document the differences and reasons for each trait
  > - document the historical perspective (to make it easy to understand
  > older Ratatui apps as well as migrate to newer approaches
  > - give recommended approaches to implementing traits
  > - explain the differences between Consuming and Shared / Mutable
  > Reference implementations of Widget
  > - explain the differences between using StatefulWidget and Mutable
  > References
  > - Explain the use case for WidgetRef and StatefulWidgetRef
  > - Link out to third part widget lists
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/366
  >
  > ---------

-
[ca2ad4a](ca2ad4a1f9)
*(uncategorized)* Simplify ratatui-macro docs by @joshka in
[#1923](https://github.com/ratatui/ratatui/pull/1923)

-
[92b6a16](92b6a16bde)
*(uncategorized)* Fix grammar in ratatui-widgets README by @sevki in
[#1885](https://github.com/ratatui/ratatui/pull/1885)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

  > Implements ideas alluded to by
>
<https://discord.com/channels/1070692720437383208/1072907135664529508/1323061053990637640>
  > and followup conversations.

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

  > Fix wording in `user_input.rs` example.

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

  > Fix end of sentence punctuation in canvas.rs docs.

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

  > Demonstrates how to manage the cursor and input focus with a simple
  > form. Uses an enum to track the current input field and passes the
  > input events to the active field.
  >
> This is similar to the json tutorial on the website, but a bit simpler

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

  > Demonstrates how to handle mouse events

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

> Overall makes improvements in the documentation of the workspace
crates and checking them.

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Performance

-
[1f41a61](1f41a61008)
*(paragraph)* Avoid unnecessary work when rendering by @alexpasmantier
in [#1622](https://github.com/ratatui/ratatui/pull/1622)

  > Improve render times for paragraphs that are scrolled.
  >
> Currently all `LineComposer`s are considered to be state machines
which
> means rendering a paragraph with a given Y offset requires computing
the
  > entire state up to Y before being able to render from Y onwards.
  >
> While this makes sense for Composers such as the `WordWrapper` (where
> one needs to consider all previous lines to determine where a given
line
> will end up), it means it also penalizes Composers which can render a
> given line "statelessely" (such as the `LineTruncator`) which actually
> end up doing a lot of unnecessary work (and on the critical rendering
  > path) when the offset gets high.

-
[ba9eed7](ba9eed7742)
*(table)* Replace while loop with simple min operation by @EdJoPaTo in
[#1747](https://github.com/ratatui/ratatui/pull/1747)

### Styling

-
[345f47e](345f47e044)
*(rect)* Use plus operator for offset by @pharrison31415 in
[#2251](https://github.com/ratatui/ratatui/pull/2251)

  > ## Summary
  > Use `+` operator to move `Rect` by an `Offset` as added
  > [here](https://github.com/ratatui/ratatui/pull/1596).
  >
  > Includes change to use `Offset::new()` in place of `Offset { ... }`

-
[ac60de3](ac60de3960)
*(uncategorized)* Fix wrapping in doc comment by @joshka in
[#2104](https://github.com/ratatui/ratatui/pull/2104)

-
[2739391](2739391950)
*(uncategorized)* Use Module imports_granularity by @joshka in
[#1728](https://github.com/ratatui/ratatui/pull/1728)

> I was swayed by the arguments about this made by the compiler team In
> <https://github.com/rust-lang/compiler-team/issues/750> and decided to
> look at how this organization affects ratatui. I found this reduces
the
> number of lines across the codebase by about 350 and makes the imports
  > more readable and definitely more greppable as you usually only have
> to read a single line. I've found in the past that maintaining imports
  > regularly leads to merge conflicts which have to be resolved by hand
  > and this change should reduce the likelihood of that happening.
  >
  > Main change is in rustfmt.toml, and the rest is just the result of
  > running `cargo xtask format`.
  >
  > While implementing this, cargo machete brings up that the various
  > backend crates are unused by the example crates.
  >
> The re-export of each backend crate under ratatui is to make it
possible
  > for libs that rely on a specific version of ratatui to use the same
  > version of the backend crate. Apps in general should use the backend
> crate directly rather than through ratatui as this is less confusing.
  >
> - Removes all usages of `ratatui::{crossterm, termion, termwiz}`` in
the
  >   examples.
> - Adds the backend crate to the dependencies of the examples that use
  >   the backend crate directly.

### Testing

-
[db65aa0](db65aa0ef7)
*(bench)* Add benchmark for text by @orhun in
[#2160](https://github.com/ratatui/ratatui/pull/2160)

  > #2138
  >
  > ---------

-
[a21501f](a21501f7f4)
*(bench)* Added a benchmark for constraints by @kashregister in
[#2043](https://github.com/ratatui/ratatui/pull/2043)

  > I've added a new benchmark for constraints, which only takes into
> account the time it takes to generate a full layout using a single
type
  > of constraints only. Avoided rendering here as it resulted in more
> inaccurate benchmarks, and i believe it should be separated
nonetheless.

-
[94ba82e](94ba82e9ca)
*(gauge)* Add benchmarks for gauge by @WaterWhisperer in
[#2221](https://github.com/ratatui/ratatui/pull/2221)

-
[39cd313](39cd313b3b)
*(layout)* Add visual buffer tests for Rect methods by @orhun in
[#2124](https://github.com/ratatui/ratatui/pull/2124)

-
[8aefc06](8aefc06a90)
*(macros)* Regenerate trybuild stderr by @ognis1205 in
[#2093](https://github.com/ratatui/ratatui/pull/2093)

  > ### Overview
  >
  > Updated the `.stderr` file corresponding to the
  > `ratatui-macros/tests/ui/fails.rs` compile-fail test.
  >
  > ### Changes
  >
  > - Updated `tests/ui/fails.stderr` to match the new compiler output.
  >
  > ### Impact
  >
  > - Affects only the trybuild UI tests
  > - No impact on production code
  >
  > ### Notes
  >
  > - The `.stderr` was generated using `TRYBUILD=overwrite cargo test`.
  >
  > Closes https://github.com/ratatui/ratatui/issues/2094

-
[55a95e6](55a95e67bc)
*(rect)* Mutual intersection agreement by @pharrison31415 in
[#2252](https://github.com/ratatui/ratatui/pull/2252)

-
[deb1b8e](deb1b8ec43)
*(uncategorized)* Ensure Style::new() and Style::default() are
equivalent by @cgzones in
[#1789](https://github.com/ratatui/ratatui/pull/1789)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

  > Adds two traits `IntoCrossterm` and `FromCrossterm` for converting
> between ratatui and crossterm types. This is necessary in order to
avoid
> the orphan rule when implementing `From` for crossterm types once the
  > crossterm types are moved to a separate crate.
  >
> Similarly Termwiz and Termwiz gain FromTermion, IntoTermion,
FromTermwiz
  > and IntoTermwiz traits.
  >
> BREAKING CHANGE:The `From` and `Into` impls for backend types are now
  > replaced
  > with specific backend traits.
  >
  > ```diff
  > + use ratatui::backend::{FromCrossterm, IntoCrossterm};
  >
  > let crossterm_color = crossterm::style::Color::Black;
  > - let ratatui_color = crossterm_color.into();
  > - let ratatui_color = ratatui::style::Color::from(crossterm_color);
> + let ratatui_color =
ratatui::style::Color::from_crossterm(crossterm_color);
  > - let crossterm_color = ratatui_color.into();
> - let crossterm_color = crossterm::style::Color::from(ratatui_color);
  > + let crossterm_color = ratatui_color.into_crossterm();
  >
  > let crossterm_attribute = crossterm::style::types::Attribute::Bold;
  > - let ratatui_modifier = crossterm_attribute.into();
> - let ratatui_modifier =
ratatui::style::Modifier::from(crossterm_attribute);
> + let ratatui_modifier =
ratatui::style::Modifier::from_crossterm(crossterm_attribute);
  > - let crossterm_attribute = ratatui_modifier.into();
> - let crossterm_attribute =
crossterm::style::types::Attribute::from(ratatui_modifier);
  > + let crossterm_attribute = ratatui_modifier.into_crossterm();
  > ```
  >
> Similar conversions for `ContentStyle` -> `Style` and `Attributes` ->
  > `Modifier` exist for Crossterm,
  > and all the Termion and Termwiz types.
  >
  > ---------

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[b46778d](b46778dd1d)
*(breaking-changes)* Add details to `no_std`-related breaking changes by
@j-g00da in [#1828](https://github.com/ratatui/ratatui/pull/1828)

  > Some corrections and added details to BREAKING-CHANGES.md.
  >
  > I decided to remove:
  >
  > - `Backend` now uses `Self::Error` for error handling instead of
  > `std::io::Error`
  > - `Terminal<B>` now uses `B::Error` for error handling instead of
  > `std::io::Error`
  >
> ...as we are still using `std::io::Error` in built-in backends, so
this
> will only be breaking if a third-party backend decides to use a custom
> error other than `std::io::Error`, which would be a breaking change in
  > downstream and not `ratatui`.
  >
  > The exception to that is `TestBackend`, which uses `Infallible`, but
  > this already has its own breaking changes entry.

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

  > Duplicate crate lint is too noisy and sensitive to upstream changes

-
[3812f69](3812f69997)
*(cargo)* Update the documentation metadata for crates by @orhun in
[#2170](https://github.com/ratatui/ratatui/pull/2170)

  > also follows the same format for the entries (`name` -> `version` ->
  > `description` -> etc. in order)

-
[ae43ea7](ae43ea796a)
*(cell)* Use Option instead of space (" ") for symbol by @joshka

> This change makes the `Cell::symbol` field an `Option<CompactString>`,
  > allowing it to represent an empty cell as `None` instead of an empty
  > string. The rationale for this is to later allow the merge symbol
> functionality to act differently based on whether a cell has
previously
> held a symbol or not, rather than always merging with an empty string.
> This will help make it possible to merge borders with titles with
spaces
  > and other symbols, without assuming that an empty string is always
  > equivalent to no symbol.
  >
  > - Default is now derived as `Option::None` works correctly.
> - PartialEq and Eq implementations are updated to treat `None` the
same
  >   as an empty string.
  > - merge_symbol against an empty cell will now just set the symbol
  >   rather than calling MergeStrategy::merge with an empty string.
  > - PartialEq, and Hash are manually implemented instead of being
  >   derived, and are updated to treat `None` equal to an empty string.

-
[0fbefe9](0fbefe9389)
*(ci)* Don't fail on cargo-deny advisories by @joshka in
[#2237](https://github.com/ratatui/ratatui/pull/2237)

> Instead of failing on advisories, run the cargo-deny check, and report
  > the failure.
  >
  > Uses the cargo-deny-action instead of installing this manually.
  >
>
https://github.com/EmbarkStudios/cargo-deny-action/tree/v2?tab=readme-ov-file#recommended-pipeline-if-using-advisories-to-avoid-sudden-breakages
  > (bumped to use rust stable, and log level info)

-
[887a636](887a6366e5)
*(ci)* Override RUSTUP_TOOLCHAIN for the check step by @ognis1205 in
[#2116](https://github.com/ratatui/ratatui/pull/2116)

  > Summary
  > Fixes an issue where the "check" CI jobs for MSRV and stable were
> unintentionally using the stable toolchain from `rust-toolchain.toml`
  > instead of the matrix-specified toolchain.
  >
  > Details
> - Added `RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}` to the "check" job
  > in CI configuration.
  >
  > Additional Context
  > - https://github.com/ratatui/ratatui/pull/2106
  > -
>
https://discord.com/channels/1070692720437383208/1072879985762762812/1422345357131780177
  > - https://rust-lang.github.io/rustup/overrides.html#overrides

-
[34baaf1](34baaf1137)
*(ci)* Override the toolchain for CI runs by @ognis1205 in
[#2106](https://github.com/ratatui/ratatui/pull/2106)

  > ### Summary
  > Fixes an issue where the beta CI jobs were unintentionally using the
  > stable
  > toolchain from `rust-toolchain.toml` instead of the matrix-specified
  > toolchain.
  > This caused clippy to run against the wrong version.
  >
  > ### Details
  > - Added `RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}` to the CI
  > configuration
  >
  > ### Additional Context
  > -
>
https://discord.com/channels/1070692720437383208/1072879985762762812/1421990770482745415
  > - https://rust-lang.github.io/rustup/overrides.html#overrides

-
[e48aa9e](e48aa9ec09)
*(ci)* Stop publish-alpha from running on forks by @j-g00da in
[#1916](https://github.com/ratatui/ratatui/pull/1916)

> I can't sleep because every Saturday alpha release fails on my ratatui
  > fork. This should fix my insomnia.

-
[b3f3c9b](b3f3c9bfd5)
*(ci)* Disable running release-plz on forked repositories by @orhun in
[#1730](https://github.com/ratatui/ratatui/pull/1730)

  > See https://github.com/jdssl/ratatui/pull/1#issuecomment-2739366609

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

> `install-action` uses `cargo-binstall` to install the pre-built
binaries
  > of `cargo-rdme` (which was released in
  > https://github.com/orium/cargo-rdme/releases/tag/v1.4.7).
  >
> This will make the `check-readme` step faster in CI (now takes only 10
  > seconds).

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

> This removes the need for cargo-make and replaces it with a custom
xtask
  > binary. See <https://github.com/matklad/cargo-xtask> for info.
  >
  > Rearranges the CI workflow to use the new xtask and simplify which
  > workflows that run.
  >
  > ---------

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

> The buffer, layout, style, symbols, text, and the top level of widgets
  > modules are moved to ratatui-core. This is the first step in
  > modularizing the library so that the core types can be used in other
  > projects without the need for the backend / widgets types.
  >
  > This helps reduce the need for updating other crates as often due to
  > semver changes outside of the core types.
  >
  > ---------

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)
  >
  > related #1512
  >
  > Moves the colors examples to apps

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)
  >
  > related #1512
  >
  > Moves the chart example to apps

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)
  >
  > related #1512
  >
> This moves the canvas example to the apps and adds some interactivity
  > via changing the marker by pressing enter.

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

  > Related to #1512
  >
  > As discussed, this moves the calendar example from ratatui to app
> examples as an "explorer" example. It also adds interactivity where
you
  > can press s to toggle between different styles of calendars.
  >
  > ---------

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

  > related to #1512

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

  > Move async example to examples/apps/async as full project.
  > Simplify a little by removing the need for the github api token.

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d02995f](d02995fda1)
*(gitignore)* Add `.env` to `.gitignore` by @j-g00da in
[#1949](https://github.com/ratatui/ratatui/pull/1949)

-
[b4a71e5](b4a71e5fd5)
*(lint)* Add `std` instead of `core`/`alloc` lints to `ratatui-widgets`
by @j-g00da in [#1763](https://github.com/ratatui/ratatui/pull/1763)
  >
  > Resolves #1761

-
[cef617c](cef617cc35)
*(lint)* Add `std` instead of `core`/`alloc` lints to `ratatui-core` by
@j-g00da in [#1759](https://github.com/ratatui/ratatui/pull/1759)
  >
  > Resolves #1752

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

  > - Move lints to workspace manifest
  > - Add lint config to backend crates
  > - Fix one small lint error

-
[9fb0544](9fb054453d)
*(release)* Initialize release-plz by @orhun in
[#1550](https://github.com/ratatui/ratatui/pull/1550)

  > See https://github.com/ratatui/ratatui/pull/1550

-
[60a8191](60a81913ed)
*(widgets)* Move crossterm to dev-dependencies by @j-g00da in
[#1834](https://github.com/ratatui/ratatui/pull/1834)

  > Crossterm in widgets is used only in tests.

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

  > We now expect that you disable the default features if you want less
  > dependencies

-
[714c658](714c6584c3)
*(workspace)* Use ratatui dependency from the workspace by @orhun in
[#2169](https://github.com/ratatui/ratatui/pull/2169)
  >
  > Fix #2166

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

  > Makes it possible to filter workspace packages by their targets.
> (e.g. when we want to retrieve all the binary targets / examples,
etc.)

-
[b7ecef0](b7ecef086d)
*(uncategorized)* Expose crossterm 0.28/0.29 feature flags in Ratatui by
@orhun in [#2270](https://github.com/ratatui/ratatui/pull/2270)

> In docs we currently say that individual versions of crossterm could
be
  > enabled like this:
  >
  > ```toml
  > ratatui = { version = "0.30.0-beta", features = ["crossterm_0_28"] }
  > ```
  >
  > However this wasn't actually possible:
  >
  > ```
> package `x` depends on `ratatui` with feature `crossterm_0_28` but
`ratatui` does not have that feature.
  >
> failed to select a version for `ratatui` which could resolve this
conflict
  > ```
  >
  > This PR fixes that by exposing respective feature flags.
  > (Tested locally)
  >
  > ---------

-
[297d264](297d264c6b)
*(uncategorized)* Update maintainers by @orhun in
[#2122](https://github.com/ratatui/ratatui/pull/2122)

-
[91fa249](91fa249cd4)
*(uncategorized)* Remove obsolete doc_auto_cfg feature by @ognis1205 in
[#2103](https://github.com/ratatui/ratatui/pull/2103)

  > The doc_auto_cfg feature was incorporated into the doc_cfg feature
  > in https://github.com/rust-lang/rust/pull/138907
  >
  > Closes #2102

-
[46e7c6c](46e7c6cbbf)
*(uncategorized)* Document rustfmt options by @joshka in
[#2055](https://github.com/ratatui/ratatui/pull/2055)

-
[719badb](719badb5b8)
*(uncategorized)* Skip `alpha` and `beta` tags in `cliff.toml` by
@j-g00da in [#2026](https://github.com/ratatui/ratatui/pull/2026)
  >
  > https://github.com/ratatui/ratatui/pull/2025#issuecomment-3135177683

-
[0afb1a9](0afb1a99af)
*(uncategorized)* Ignore `beta` and `rc` tags in `cliff.toml` by
@j-g00da in [#2025](https://github.com/ratatui/ratatui/pull/2025)

-
[5ae224b](5ae224b244)
*(uncategorized)* Prepare for beta release by @j-g00da in
[#2022](https://github.com/ratatui/ratatui/pull/2022)

-
[cfebd68](cfebd68e18)
*(uncategorized)* Fix typo in CONTRIBUTING.md by @kdheepak in
[#2001](https://github.com/ratatui/ratatui/pull/2001)

  > Removes a hanging opening code block:
  >
  > ````
  > ```suggestion
  > ````

-
[572749f](572749f388)
*(uncategorized)* Update contributing guidelines and add
copilot-instructions by @joshka in
[#1998](https://github.com/ratatui/ratatui/pull/1998)

  > See
>
https://docs.github.com/en/copilot/how-tos/agents/copilot-code-review/using-copilot-code-review
  >
> These instructions will be used by copilot when it performs automated
PR
> reviews, and helps provide guardrails for our standards. Over time we
> might grow these to capture any consistent problems that we start
seeing
  > when reviewing.
  >
  > ---------

-
[0148b62](0148b62f0c)
*(uncategorized)* Remove cargo_metadata dep from xtask by @joshka in
[#1993](https://github.com/ratatui/ratatui/pull/1993)

  > Removed due to hard N-2 MSRV requirement, whereas we use a soft N-2
> (only update when necessary). This makes it painful to be able to test
> our actual msrv (as the xtask has to be built with the version that
its
> deps support, while still wanting to check the msrv version, so we'd
end
  > up with 2 versions in the one CI task and this would get annoying to
  > check).
  >
> See https://github.com/rust-lang/cargo/issues/15746 for more details.
  >
> Partially implements #1820 - mainly as a problem solution rather than
a
  > specific goal to use cargo-hack

-
[9bc5739](9bc573931c)
*(uncategorized)* Remove clap-cargo from xtask by @joshka in
[#1992](https://github.com/ratatui/ratatui/pull/1992)

  > Removed to avoid needing to bump our msrv. See
>
https://github.com/rust-lang/cargo/issues/15746\#issuecomment-3071774343
  > for more details.

-
[0e10170](0e10170e19)
*(uncategorized)* Change Borders::NONE to a proper const by @joshka in
[#1985](https://github.com/ratatui/ratatui/pull/1985)
  >
  > https://docs.rs/bitflags/latest/bitflags/#zero-bit-flags
  >
  > > Flags with no bits set should be avoided because they interact
  > strangely with
  >
>
[Flags::contains](https://docs.rs/bitflags/latest/bitflags/trait.Flags.html#method.contains)
  > and
  >
>
[Flags::intersects](https://docs.rs/bitflags/latest/bitflags/trait.Flags.html#method.intersects).
> A zero-bit flag is always contained, but is never intersected. The
names
  > of zero-bit flags can be parsed, but are never formatted.
  >
> Removing this simplifies the manual Debug impl that previously had to
  > check for Borders::NONE and now does not.

-
[8e3bd11](8e3bd11d60)
*(uncategorized)* Add svg logo asset by @LitoMore in
[#1967](https://github.com/ratatui/ratatui/pull/1967)

> Added a shields.io style svg logo and a nicer version of the original
logo.
> The simplified icon will be added and available directly from
shields.io via:
  > - https://github.com/simple-icons/simple-icons/pull/13593

-
[92bb9b2](92bb9b2219)
*(uncategorized)* Remove `Title` references by @j-g00da in
[#1943](https://github.com/ratatui/ratatui/pull/1943)

-
[d6647db](d6647db744)
*(uncategorized)* Remove some allow attributes for fixed clippy bugs by
@joshka in [#1944](https://github.com/ratatui/ratatui/pull/1944)

-
[3f48bde](3f48bde3c6)
*(uncategorized)* Remove OpenSSL license by @joshka in
[#1942](https://github.com/ratatui/ratatui/pull/1942)

  > Only keep licenses in the allow list that are actually used

-
[4c86513](4c86513790)
*(uncategorized)* Remove block::Title by @joshka in
[#1926](https://github.com/ratatui/ratatui/pull/1926)

> The title alignment is better expressed in the `Line` as this fits
more
  > coherently with the rest of the library.
  >
  > BREAKING CHANGES:
  > - `widgets::block` is no longer exported
  > - `widgets::block::Title` no longer exists
  > - `widgets::block::Position` is now `widgets::TitlePosition`
> - `Block::title()` now accepts `Into::<Line>` instead of `Into<Title>`
  > - `BlockExt` is now exported at widgets::`BlockExt`
  >
  > Closes:https://github.com/ratatui/ratatui/issues/738

-
[272f5c0](272f5c05dc)
*(uncategorized)* Fix new lints by @joshka in
[#1922](https://github.com/ratatui/ratatui/pull/1922)

-
[770cb7c](770cb7c3c3)
*(uncategorized)* Add tests for combining list styles by @joshka in
[#1884](https://github.com/ratatui/ratatui/pull/1884)

-
[dbfb2c3](dbfb2c3399)
*(uncategorized)* Upgrade to Rust Edition 2024 by @MatrixFrog in
[#1863](https://github.com/ratatui/ratatui/pull/1863)
  >
  > https://doc.rust-lang.org/edition-guide/rust-2024/index.html
  >
  > Fixes #1727

-
[7cb35d4](7cb35d4be1)
*(uncategorized)* Update to Rust version 1.85.0 by @MatrixFrog in
[#1860](https://github.com/ratatui/ratatui/pull/1860)

  > This is a small step toward fixing #1727

-
[a07f5be](a07f5bec20)
*(uncategorized)* Move dependency management to workspace by @joshka in
[#1858](https://github.com/ratatui/ratatui/pull/1858)

  > Move all dependency management to the workspace level. This makes it
> easier to manage dependencies across multiple crates in the workspace.
  >
> This also changes the versions of each dependency to track based on
the
> semver compatible version of the dependency (e.g. 0.1 instead of 0.1.0
  > or 2.9 instead of 2.9.0 to avoid having to regularly update the toml
  > files and to communicate that Ratatui will still generally work with
> versions of the dependencies that are not the fully latest version.
The
  > exact version of the dependencies is still tracked in the Cargo.lock
  > file.
  >
> Several dependencies that are fairly stable are changed to track a
less
  > specific version (e.g. serde 1 instead of 1.0.x).
  >
  > The following dependencies are updated to their latest versions:
  > - bitflags (2.3 -> 2.9)
  > - strum (0.26 -> 0.27)
  > - strum_macros (0.26 -> 0.27)
  > - all other semver compatible updates

-
[1874b9d](1874b9dd55)
*(uncategorized)* Move time to dev-dependencies by @j-g00da in
[#1835](https://github.com/ratatui/ratatui/pull/1835)

-
[d88cd29](d88cd29079)
*(uncategorized)* Add 'const' to functions where possible. by
@MatrixFrog in [#1802](https://github.com/ratatui/ratatui/pull/1802)

> The Clippy check for this (missing_const_for_fn) is already enabled,
but
  > catches more cases in upcoming toolchain versions.
  >
  > This is part of the work to unblock #1727

-
[bb06889](bb068892c9)
*(uncategorized)* Fix io_other_error clippy lints by @joshka in
[#1756](https://github.com/ratatui/ratatui/pull/1756)

> Pre-emptive fix for new lint to be added in 1.87 (currently in beta).
  >
>
https://rust-lang.github.io/rust-clippy/master/index.html\#io_other_error

-
[0f80c5e](0f80c5e87e)
*(uncategorized)* Use expect() instead of allow() for lint overrides by
@cgzones in [#1786](https://github.com/ratatui/ratatui/pull/1786)
[**breaking**]
  >
  > BREAKING CHANGE:MSRV is now 1.81

-
[fe8577c](fe8577c070)
*(uncategorized)* Remove paste dependency by @joshka in
[#1713](https://github.com/ratatui/ratatui/pull/1713)

> The paste crate is no longer maintained. Replaces the usages of this
in
> the Stylize declarative macros with hard coded values. These macros
are
> internal implementation detail to ratatui and so the changes should
have
  > no impact on users.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1712

-
[255e466](255e4661a8)
*(uncategorized)* Cargo update - pull in fixed version of ring crate by
@joshka in [#1710](https://github.com/ratatui/ratatui/pull/1710)

-
[f05feac](f05feac337)
*(uncategorized)* Sort dependencies in Cargo.toml by @canac in
[#1662](https://github.com/ratatui/ratatui/pull/1662)

-
[7eab88f](7eab88fe9a)
*(uncategorized)* Remove unused deps by @joshka in
[#1661](https://github.com/ratatui/ratatui/pull/1661)

-
[37a1c6f](37a1c6f89b)
*(uncategorized)* Remove some examples by @orhun in
[#1645](https://github.com/ratatui/ratatui/pull/1645)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

> These will eventually be moved / consolidated elsewhere, but this
clears
  > the warnings while building for now.

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

  > ```bash
> find . -type f -not -path './.git/*' -not -name '*.bash' -exec chmod
644 {} +
  > ```
  >
  > fixes #1576

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

  > - Move Terminal, TerminalOptions, ViewPort, CompletedFrame, Frame to
  >   ratatui-core crate
> - Move render_widget_ref() and render_stateful_widget_ref() to
extension
  >   trait (FrameExt) due as the Ref types are unstable and kept in the
  >   main lib instead of -core
  > - Fix rustdoc errors / feature config issues
  >
  > BREAKING CHANGE:to call `Frame::render_widget_ref()` or
  >
  > `Frame::render_stateful_widget_ref()` you now need to import the
  > FrameExt trait from `ratatui::widgets` and enable the
  > `unstable-widget-ref` feature.

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

  > Add a top level examples folder for more app-ish examples
  > Move the demo example into the top level folder.
  >
  > ---------

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

> This is the first modularization -alpha release. It captures the
changes
  > necessary to manual publish. And ensures all the crates are properly
> setup and to set a baseline for comparison in future release checks
etc.
  >
  > This does not update / check the git-cliff setup / changelog
  >
  > Part of: #1388

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

  > No longer necessary as of bacon 3.3

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

  > These are less stable than the non-ref traits as we have not yet
  > committed to the exact API. This change moves them to ratatui from
  > ratatui-core.
  >
  > To facilitate this:
> - implementations of WidgetRef for all internal widgets are removed
and
  >   replaced with implementations of Widget for references to those
  >   widgets.
> - Widget is now implemented for Option<W> where W: Widget, allowing
for
  >   rendering of optional widgets.
> - The blanket implementation of Widget for WidgetRef is reversed, to
be
  >   a blanket implementation of WidgetRef for all &W where W: Widget.
  >
> BREAKING CHANGE:implementations of WidgetRef no longer have a blanket
  > implementation of Widget, so Widgets should generally implement the
  > Widget trait on a reference to the widget rather than implementing
  > WidgetRef directly. This has the advantage of not requiring unstable
  > features to be enabled.
  >
  > Part of: https://github.com/ratatui/ratatui/issues/1388

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

> All the widgets now live in their own ratatui-widgets crate, but are
re-exported in the main ratatui crate.
> This makes it easier to use portions of the ratatui library and is
part of the effort to modularize
  >
  > Part of: #1388
  >
  > ---------

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

  > This is the first step towards modularization. Handling the move
  > as a separate step rather than combining it should make it easier
  > to rebase other PRs when necessary.
  >
  > ---------

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[c01b7d4](c01b7d43ea)
*(uncategorized)* Remove old release workflows by @joshka in
[#2015](https://github.com/ratatui/ratatui/pull/2015)

-
[02ca587](02ca5870c5)
*(uncategorized)* Add environment to release workflow by @joshka in
[#1983](https://github.com/ratatui/ratatui/pull/1983)
  >
>
https://github.com/rust-lang/crates.io/issues/11564#issuecomment-3066696820

-
[821611f](821611f76f)
*(uncategorized)* Use trusted publishing by @joshka in
[#1981](https://github.com/ratatui/ratatui/pull/1981)
  >
>
https://blog.rust-lang.org/2025/07/11/crates-io-development-update-2025-07/
  >
  > https://crates.io/docs/trusted-publishing

-
[1f0c2ee](1f0c2ee18e)
*(uncategorized)* Audit github workflows with zizmor by @joshka in
[#1961](https://github.com/ratatui/ratatui/pull/1961)

  > Fixes https://github.com/ratatui/ratatui/issues/1950

-
[a0746ba](a0746bad7e)
*(uncategorized)* Add job to check no-std build by @joshka in
[#1851](https://github.com/ratatui/ratatui/pull/1851)

> Uses x86_64-unknown-none as an arbitrary target that does not support
  > the std library
  >
  > Resolves:https://github.com/ratatui/ratatui/issues/1843

-
[5a3be12](5a3be12ebd)
*(uncategorized)* Run clippy using rust stable and beta by @joshka in
[#1757](https://github.com/ratatui/ratatui/pull/1757)

> This makes it possible to pre-emptively catch upcoming clippy issues.
We
  > should not block PRs on these generally (unless the PR introduces a
> valid clippy warning), so the workflow is set up to not fail on beta.

-
[e7defb3](e7defb36de)
*(uncategorized)* Remove bencher workflows by @joshka in
[#1719](https://github.com/ratatui/ratatui/pull/1719)

  > These actions are currently unused as we haven't
  > invested the time necessary to understand how best
  > to use them. We can always re-add them later if we
  > find them useful.

-
[9398a25](9398a2550a)
*(uncategorized)* Add workflow_dispatch trigger for release-plz by
@joshka in [#1693](https://github.com/ratatui/ratatui/pull/1693)

-
[57c2326](57c2326574)
*(uncategorized)* Run cargo-deny directly rather than via action by
@joshka in [#1621](https://github.com/ratatui/ratatui/pull/1621)

  > Improves CI time

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

  > - format toml files using taplo
  > - add toml formatting check to CI
  > - use xtask consistently from bacon
> - refactor xtask commands to take params instead of multiple commands

### Reverted Commits

-
[cace1e0](cace1e099c)
*(release)* Prepare for beta release by @orhun in
[#2117](https://github.com/ratatui/ratatui/pull/2117)

  > This reverts commit 5ae224b244 so that
  > `release-plz` is being triggered again.
  >
> See
https://github.com/ratatui/ratatui/pull/2022#issuecomment-3349094310
  > for rationale.
  >
  >

### New Contributors

* @sxyazi made their first contribution in
[#2267](https://github.com/ratatui/ratatui/pull/2267)
* @pharrison31415 made their first contribution in
[#2252](https://github.com/ratatui/ratatui/pull/2252)
* @sbarral made their first contribution in
[#2235](https://github.com/ratatui/ratatui/pull/2235)
* @j-g00da made their first contribution in
[#2236](https://github.com/ratatui/ratatui/pull/2236)
* @WaterWhisperer made their first contribution in
[#2221](https://github.com/ratatui/ratatui/pull/2221)
* @0xb002f0 made their first contribution in
[#2223](https://github.com/ratatui/ratatui/pull/2223)
* @matthiasbeyer made their first contribution in
[#2212](https://github.com/ratatui/ratatui/pull/2212)
* @b-guild made their first contribution in
[#2197](https://github.com/ratatui/ratatui/pull/2197)
* @github-actions[bot] made their first contribution in
[#2162](https://github.com/ratatui/ratatui/pull/2162)
* @marcoieni made their first contribution in
[#2119](https://github.com/ratatui/ratatui/pull/2119)
* @Blaeriz made their first contribution in
[#2071](https://github.com/ratatui/ratatui/pull/2071)
* @ognis1205 made their first contribution in
[#2116](https://github.com/ratatui/ratatui/pull/2116)
* @isgin01 made their first contribution in
[#2100](https://github.com/ratatui/ratatui/pull/2100)
* @nornagon made their first contribution in
[#2063](https://github.com/ratatui/ratatui/pull/2063)
* @lolbinarycat made their first contribution in
[#2088](https://github.com/ratatui/ratatui/pull/2088)
* @rcorre made their first contribution in
[#2057](https://github.com/ratatui/ratatui/pull/2057)
* @martinetd made their first contribution in
[#2053](https://github.com/ratatui/ratatui/pull/2053)
* @kashregister made their first contribution in
[#2043](https://github.com/ratatui/ratatui/pull/2043)
* @LitoMore made their first contribution in
[#2040](https://github.com/ratatui/ratatui/pull/2040)
* @aschey made their first contribution in
[#2004](https://github.com/ratatui/ratatui/pull/2004)
* @dtolnay made their first contribution in
[#1999](https://github.com/ratatui/ratatui/pull/1999)
* @MatrixFrog made their first contribution in
[#1994](https://github.com/ratatui/ratatui/pull/1994)
* @jwodder made their first contribution in
[#1670](https://github.com/ratatui/ratatui/pull/1670)
* @acuteenvy made their first contribution in
[#1956](https://github.com/ratatui/ratatui/pull/1956)
* @harilvfs made their first contribution in
[#1905](https://github.com/ratatui/ratatui/pull/1905)
* @Daksh14 made their first contribution in
[#1891](https://github.com/ratatui/ratatui/pull/1891)
* @sevki made their first contribution in
[#1885](https://github.com/ratatui/ratatui/pull/1885)
* @aurreland made their first contribution in
[#1883](https://github.com/ratatui/ratatui/pull/1883)
* @ArjunKrish7356 made their first contribution in
[#1812](https://github.com/ratatui/ratatui/pull/1812)
* @cgzones made their first contribution in
[#1789](https://github.com/ratatui/ratatui/pull/1789)
* @ed-2100 made their first contribution in
[#1782](https://github.com/ratatui/ratatui/pull/1782)
* @musicinmybrain made their first contribution in
[#1783](https://github.com/ratatui/ratatui/pull/1783)
* @LecrisUT made their first contribution in
[#1777](https://github.com/ratatui/ratatui/pull/1777)
* @canac made their first contribution in
[#1662](https://github.com/ratatui/ratatui/pull/1662)
* @LVivona made their first contribution in
[#1639](https://github.com/ratatui/ratatui/pull/1639)
* @alexpasmantier made their first contribution in
[#1622](https://github.com/ratatui/ratatui/pull/1622)
* @theotchlx made their first contribution in
[#1573](https://github.com/ratatui/ratatui/pull/1573)
* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...v0.30.0

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-12-26 12:41:00 +03:00
Orhun Parmaksız
8c620d64ae docs(widgets): add link to no-std concept page (#2288)
closes #1959
2025-12-26 11:12:46 +03:00
github-actions[bot]
686d95574e chore: re-release 0.30.0-beta.1 (#2292)
## 🤖 New release

* `ratatui-widgets`: 0.3.0-beta.0 -> 0.3.0-beta.1
* `ratatui-macros`: 0.7.0-beta.0 -> 0.7.0-beta.1
* `ratatui-termwiz`: 0.1.0-beta.0 -> 0.1.0-beta.1
* `ratatui-termion`: 0.1.0-beta.0 -> 0.1.0-beta.1
* `ratatui`: 0.30.0-beta.0 -> 0.30.0-beta.1

<details><summary><i><b>Changelog</b></i></summary><p>

## `ratatui-widgets`

<blockquote>

##
[v0.30.0-beta.0](https://github.com/ratatui/ratatui/releases/tag/v0.30.0-beta.0)
- 2025-12-23

> _"Rats don't just survive; they discover; they create. ... I mean,
just look at what they do with
the terminal!" – Remy & Orhun_

We are excited to announce the biggest release of `ratatui` so far - a
Rust library that's all about cooking up TUIs 👨‍🍳🐀

📢 Please note that this is a beta release, and we encourage you to try
it out and provide feedback!

 **WIP Release highlights**:
<https://github.com/ratatui/ratatui-website/blob/ratatui-0.30/src/content/docs/highlights/v0.30.md>

⚠️ List of breaking changes can be found
[here](https://github.com/ratatui/ratatui/blob/main/BREAKING-CHANGES.md).

### Features

-
[90a77aa](90a77aaf8b)
*(direction)* Add `Direction::perpendicular(self)` by @b-guild in
[#2197](https://github.com/ratatui/ratatui/pull/2197)

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]
  >
> BREAKING CHANGE:label and text_value now accept `Into<>` types, which
  > breaks type inference.
  >
  > ```diff
  > - Bar::default().label("foo".into());
  > + Bar::default().label("foo");
  > ```
  >
  > ```diff
  > - Bar::default().text_value("bar".into());
  > + Bar::default().text_value("bar");
  > ```

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)
  >
  > Related:https://github.com/ratatui/ratatui/issues/683

-
[e15fefa](e15fefa922)
*(barchar)* Add BarChart::grouped constructor by @joshka in
[#1513](https://github.com/ratatui/ratatui/pull/1513)

> Add a new constructor to the `BarChart` widget that allows creating a
  > grouped barchart with multiple groups of bars.
  >
> Also add a new constructor to the `BarGroup` widget that allows
creating
  > a group of bars with a label.

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

  > Adds constructor methods for BarChart, BarGroup, and Bar

-
[1dc18bf](1dc18bf3cf)
*(calendar)* Add width and height functions by @joshka in
[#2198](https://github.com/ratatui/ratatui/pull/2198)

  > Fixes https://github.com/ratatui/ratatui/issues/2016
  >
  > ---------

-
[f18bcbf](f18bcbf06b)
*(canvas)* Add quadrant, sextant and octant markers by @sbarral in
[#2235](https://github.com/ratatui/ratatui/pull/2235) [**breaking**]

> The octant marker is an alternative to the Braille marker with the
same
> resolution, but offering densely packed, regular pseudo-pixels,
without
  > visible bands between rows and columns.
  >
  > Quadrant and Sextants are also added to support 2x2 and 2x3.
  >
> Sextant and Octant unicode characters that are less widely supported
at
  > the moment, which is why `Braille` was left as the default.
  >
  > BREAKING CHANGE:addition of new variants to `Marker` and removal of
  > no longer used constants in `ratatui::symbols::braille`.

-
[26b05de](26b05dee59)
*(chart)* Render Braille over Blocks in Charts and Canvas by @j-g00da in
[#2165](https://github.com/ratatui/ratatui/pull/2165)

> This makes it possible to stack charts, and write text over block
symbols in
> Charts and Canvas while still showing the block symbols behind the
text.

-
[bf84c62](bf84c6229b)
*(core)* Add a `has_modifier()` method to `Style` by @sxyazi in
[#2267](https://github.com/ratatui/ratatui/pull/2267)

  > Resolves https://github.com/ratatui/ratatui/issues/2264

-
[2d713d7](2d713d723d)
*(crossterm)* Allow multiple crossterm versions by @joshka in
[#1841](https://github.com/ratatui/ratatui/pull/1841)

  > This commit introduces feature flags to make it possible for widget
  > library authors to depend on a specific version of crossterm without
> causing version conflicts. This should make it easier for libraries
and
  > apps to update crossterm versions more easily.
  >
> The available feature flags are `crossterm_0_28` and `crossterm_0_29`.
> By default, the latest version is enabled. If a multiple features are
  > enabled we choose the latest version. We will in general support at
  > least the last two major (0.x) versions of crossterm, and will only
  > remove versions in a major version bump.

-
[d99984f](d99984f1e9)
*(layout)* Add `Flex::SpaceEvenly` by @kdheepak in
[#1952](https://github.com/ratatui/ratatui/pull/1952) [**breaking**]

  > Resolves https://github.com/ratatui/ratatui/issues/1951
  >
> BREAKING CHANGE:Old `Flex::SpaceAround` behavior is available by using
  >
  > `Flex::SpaceEvenly` and new
  >
  > `Flex::SpaceAround` now distributes space evenly around each element
  > except the middle spacers
  >     are twice the size of first and last elements
  >
  > With this change, the following variants of `Flex` are supported:
  >
> - `Flex::Start`: Aligns items to the start; excess space appears at
the
  > end.
  > - `Flex::End`: Aligns items to the end; excess space appears at the
  > start.
  > - `Flex::Center`: Centers items with equal space on both sides.
> - `Flex::SpaceAround` (**new**): Distributes space _around_ items;
space
  > between items is _twice_ the edge spacing.
> - `Flex::SpaceBetween`: Distributes space _evenly between_ items
except
  > no space at the edges.
> - `Flex::SpaceEvenly` (**previously `Flex::SpaceAround`**):
Distributes
  > space _evenly between_ items and edges.
> - `Flex::Legacy`: Preserves legacy behavior, placing all excess space
at
  > the end.
  >
  > This aligns behavior of `Flex` with CSS flexbox more closely.
  >
  > The following is a screenshot in action:
  >
  > <img width="1090" alt="image"
  >
>
src="https://github.com/user-attachments/assets/2c7cd797-27bd-4242-a824-4565d369227b"
  > />
  >
  > ---------

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[7ad9c29](7ad9c29eac)
*(linegauge)* Customized symbols by @sectore in
[#1601](https://github.com/ratatui/ratatui/pull/1601)

  > With this PR any symbol (`&str`) can be used to render `filled` and
  > `unfilled` parts of `LineGauge` now. Before that change, only
>
[`symbols::line::Set`](https://docs.rs/ratatui/latest/ratatui/symbols/line/struct.Set.html)
  > was accepted.
  >
  > Note:New methods are introduced to define those symbols:
  > `filled_symbol` and `unfilled_symbol`. The method
>
[`line_set`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.LineGauge.html#method.line_set)
  > is still there, but marked as `deprecated`.
  >
>
![line_gauge](https://github.com/user-attachments/assets/cae308b8-151b-461d-8af6-9a20012adf2f)

-
[92a19cb](92a19cb604)
*(list)* Highlight symbol styling by @airblast-dev in
[#1595](https://github.com/ratatui/ratatui/pull/1595) [**breaking**]

  > Allow styling for `List`'s highlight symbol
  >
  > This change makes it so anything that implements `Into<Line>` can be
  > used as a highlight symbol.
  >
> BREAKING CHANGE:`List::highlight_symbol` can no longer be used in
const
  > context
  >
  > BREAKING CHANGE:`List::highlight_symbol` accepted `&str`. Conversion
  > methods that rely on type inference will need to be rewritten as the
  > compiler cannot infer the type.
  >
  > closes:https://github.com/ratatui/ratatui/issues/1443
  >
  > ---------

-
[e89a526](e89a526aab)
*(no_std)* Portable-atomic integration for targets with no atomic types
by @j-g00da in [#2076](https://github.com/ratatui/ratatui/pull/2076)

  > Improves compatibility with no-std targets that don't support atomic
  > types.
  >
  > We support three different scenarios depending on the target:
  > 1. Terminal applications and other std targets (e.g. espidf):
  > - `std` enabled, `portable-atomic` disabled
  > 2. Embedded targets with atomic types, bare metal x86, etc.:
  > - `std` disabled `portable-atomic` disabled
  > 3. Embedded targets without atomic types (e.g. single-core MCUs):
  > - `std` disabled, `portable-atomic` enabled
  >
> Turning on `portable-atomic` together with `std` will fall back to
`std`
  > atomic.

-
[1399d95](1399d95ae0)
*(no_std)* Make palette and serde features depends on std by @j-g00da in
[#1919](https://github.com/ratatui/ratatui/pull/1919)

-
[b32f781](b32f78195b)
*(no_std)* Make `ratatui-macros` no-std by @j-g00da in
[#1865](https://github.com/ratatui/ratatui/pull/1865)

-
[3e1c72f](3e1c72fb27)
*(no_std)* Make ratatui compatible with `#![no_std]` by @j-g00da in
[#1794](https://github.com/ratatui/ratatui/pull/1794) [**breaking**]
  >
  > Resolves #1781
  >
  > This PR makes it possible to compile ratatui with `#![no_std]`.
  > Also makes me answer "We Are So Embedded" to "Are We Embedded Yet?"

-
[ab48c06](ab48c06171)
*(no_std)* Option to disable layout cache for `no_std` compatibility by
@j-g00da in [#1795](https://github.com/ratatui/ratatui/pull/1795)
[**breaking**]
  >
  > Resolves #1780
  >
  > BREAKING CHANGE:Disabling `default-features` will now disable layout
  > cache, which can have a negative impact on performance.
  >
  > `Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` are now only
  > available if `layout-cache` feature is enabled.

-
[09173d1](09173d1829)
*(no_std)* Make `TestBackend::Error` `Infallible` by @j-g00da in
[#1823](https://github.com/ratatui/ratatui/pull/1823) [**breaking**]
  >
> BREAKING CHANGE:`TestBackend` now uses `core::convert::Infallible` for
  > error handling instead of `std::io::Error`

-
[007713e](007713e50a)
*(no_std)* Replace `Backend`'s `io::Error` usages with associated
`Error` type by @j-g00da in
[#1778](https://github.com/ratatui/ratatui/pull/1778) [**breaking**]
  >
  > Resolves #1775
  >
> BREAKING CHANGE:Custom backends now have to implement `Backend::Error`
> and `Backend::clear_region`. Additionally some generic `Backend` usage
  > will have to explicitly set trait bounds for `Backend::Error`.

-
[a42a17e](a42a17e184)
*(no_std)* Make `ratatui-widgets` `no_std` by @j-g00da in
[#1779](https://github.com/ratatui/ratatui/pull/1779)
  >
  > Resolves #1776

-
[5a232a3](5a232a3115)
*(no_std)* Remove redundant `std` usages in `ratatui-widgets` by
@j-g00da in [#1762](https://github.com/ratatui/ratatui/pull/1762)

-
[ebe10cd](ebe10cd81f)
*(no_std)* Remove redundant `std` usages in `ratatui-core` by @j-g00da
in [#1753](https://github.com/ratatui/ratatui/pull/1753)

  > Resolves https://github.com/ratatui/ratatui/issues/1751

-
[08b08cc](08b08cc45b)
*(rect)* Centering by @janTatesa in
[#1814](https://github.com/ratatui/ratatui/pull/1814)
  >
  > Resolves #617

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

> As of now it is possible to change the position of the Scrollbar but
not
  > possible to retrieve the position for further use. e.g.
  >
  > ```rust
  > let mut state = ScrollbarState::default();
  > state.next();
  > ```
  >
> This commit adds a new method "`current_position`" (since `position`
is
  > already taken by the fluent setter) for that purpose:
  >
  > ```rust
  > let index = state.get_position(); // yay
  > ```
  >
  > See #1545 for the concrete usage of this.

-
[4c3c054](4c3c0540cd)
*(serde)* Handle null modifiers in serde Style by @joshka in
[#2172](https://github.com/ratatui/ratatui/pull/2172)

  > Allow `Style`'s `add_modifier` and `sub_modifier` fields to
  > deserialize from `null`

-
[b9da192](b9da1926a0)
*(serde)* Derive Serialize/Deserialize for alignment enums by @j-g00da
in [#1957](https://github.com/ratatui/ratatui/pull/1957)
  >
  > Resolves #1954

-
[89b7421](89b74214d9)
*(serde)* Derive Serialize/Deserialize for additional structs/enums by
@aurreland in [#1883](https://github.com/ratatui/ratatui/pull/1883)

  > This PR adds `#[derive(Serialize, Deserialize)]` to the following
  > structs:
  > - `Constraint`
  > - `Direction`
  > - `Spacing`
  > - `Layout`
  > - `AccentedPalette`
  > - `NonAccentedPalette`
  > - `Palette`
  > - `Padding`
  > - `Borders`
  > - `BorderType`
  > - `ListDirection`
  > - `ScrollbarOrientation`
  > - `ScrollDirection`
  > - `RenderDirection`
  > - `HighlightSpacing`
  >
  > Fixes #1877

-
[03f3f6d](03f3f6df35)
*(style)* Allow add/sub modifiers to be omitted in Style serialization.
by @rcorre in [#2057](https://github.com/ratatui/ratatui/pull/2057)

  > It's really useful that Style supports Deserialize, this allows TUI
  > apps to have configurable theming without much extra code.
  >
  > However, deserializing a style currently fails if `add_modifier` and
  > `sub_modifier` are
  > not specified. That means the following TOML config:
  >
  > ```toml
  > [theme.highlight]
  > fg = "white"
  > bg = "black"
  > ```
  >
> Will fail to deserialize with "missing field `add_modifier`". It
should
  > be possible
  > to omit modifiers and have them default to "none".

-
[ee67347](ee673476d3)
*(symbols)* Make `Marker` non-exhaustive by @j-g00da in
[#2236](https://github.com/ratatui/ratatui/pull/2236) [**breaking**]

> This will allow us to add new markers without causing further breaking
  > changes.
  >
  > BREAKING CHANGE:`Marker` is now non-exhaustive

-
[985cd05](985cd05573)
*(symbols)* Add dashed borders by @theotchlx in
[#1573](https://github.com/ratatui/ratatui/pull/1573)

  > Adds several new border sets:
  > - ratatui::symbols::border::LIGHT_DOUBLE_DASHED
  > - ratatui::symbols::border::HEAVY_DOUBLE_DASHED
  > - ratatui::symbols::border::LIGHT_TRIPLE_DASHED
  > - ratatui::symbols::border::HEAVY_TRIPLE_DASHED
  > - ratatui::symbols::border::LIGHT_QUADRUPLE_DASHED
  > - ratatui::symbols::border::HEAVY_QUADRUPLE_DASHED
  >
  > And corresponding variants to the ratatui::widgets::BorderType enum
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1355

-
[4c301e8](4c301e891d)
*(text)* Implement `AddAssign` for `Text` by @acuteenvy in
[#1956](https://github.com/ratatui/ratatui/pull/1956)

> This makes it possible to add a second `Text` instance to a first one
using the += operator.
  >
  > ```rust
  > let mut text = Text::from("line 1");
  > text += Text::from("line 2");
  > ```
  >
> Style and alignment applied to the second text is ignored (though
styles and alignment of lines and spans are copied).

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

> Allows constructing `Rectangle`, `Points` and `Circle` using the `new`
  > method instead of initializing with the public fields directly.

-
[22610b0](22610b019b)
*(uncategorized)* Support adding an Offset to Position by @joshka in
[#2239](https://github.com/ratatui/ratatui/pull/2239)

  > Adds Position::offset() and arithmentic ops (Position + Offset and
  > Position - Offset)
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/2018

-
[24e3133](24e3133456)
*(uncategorized)* Add Rect::resize() method by @joshka in
[#2240](https://github.com/ratatui/ratatui/pull/2240)
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1440

-
[96d097e](96d097ef76)
*(uncategorized)* Implement Rect ops for moving by @joshka in
[#1596](https://github.com/ratatui/ratatui/pull/1596)
  >
  > feat:implement Rect ops for moving
  >
  > Implemented `Add`, `AddAssign`, `Sub`, and `SubAssign` on `Rect` for
  > `Offset`. This makes it possible to move rects
  >
  > ```rust
  > let rect = Rect::new(1, 2, 3, 4);
  > let moved = rect + Offset(1, 2);
  > let moved = rect - Offset(1, 2);
  > let moved = rect + Offset(-1, -2);
  > ```
  >
> Additionally Rect, Size, Offset, and Position now all have MIN and MAX
  > consts.

-
[e869cb9](e869cb9750)
*(uncategorized)* Add Size::area() by @joshka in
[#2226](https://github.com/ratatui/ratatui/pull/2226)

  > Add Size::area() returning u32 to avoid u16 overflow
  > Fixes https://github.com/ratatui/ratatui/issues/2204

-
[b6588fd](b6588fd1fa)
*(uncategorized)* Implement `From<Size>` for `(u16, u16)` by @0xb002f0
in [#2223](https://github.com/ratatui/ratatui/pull/2223)

-
[75b78be](75b78be09f)
*(uncategorized)* Add width() impl for tabs by @joshka in
[#2049](https://github.com/ratatui/ratatui/pull/2049)

> The purpose of this is to make it easy for apps to easily calculate
the
  > total tab width including all dividers and padding.

-
[8188ed3](8188ed3950)
*(uncategorized)* Implement UnicodeWidthStr for Text/Line/Span by
@joshka in [#2030](https://github.com/ratatui/ratatui/pull/2030)

  > You can now calculate the width of any Text/Line/Span using the
> UnicodeWidthStr trait instead of the width method on the type. This
also
  > makes it possible to use the width_cjk() method if needed.

-
[c845fec](c845fec765)
*(uncategorized)* Add conversion from Size to Rect by @joshka in
[#2028](https://github.com/ratatui/ratatui/pull/2028)
  >
  > `Rect::from(size)` returns a new Rect at the origin (0, 0) with the
  > specified `Size`

-
[017af11](017af11b2b)
*(uncategorized)* Preserve block titles when merging borders by @j-g00da
in [#1977](https://github.com/ratatui/ratatui/pull/1977)
  >
  > Resolves #1939

-
[6dcd53b](6dcd53bc6b)
*(uncategorized)* Add ergonomic methods for layouting Rects by @joshka
in [#1909](https://github.com/ratatui/ratatui/pull/1909)

> This commit introduces new methods for the `Rect` struct that simplify
> the process of splitting a `Rect` into sub-rects according to a given
> `Layout`. By putting these methods on the `Rect` struct, we make it a
> bit more natural that a layout is applied to the `Rect` itself, rather
  > than passing a `Rect` to the `Layout` struct to be split.
  >
> Adds:- `Rect::layout` and `Rect::try_layout` methods that allow
splitting a
  >   `Rect` into an array of sub-rects according to a given `Layout`.
  > - `Rect::layout_vec` method that returns a `Vec` of sub-rects.
> - `Layout::try_areas` method that returns an array of sub-rects, with
  >   compile-time checks for the number of constraints. This is added
  >   mainly for consistency with the new `Rect` methods.
  >
  > ```rust
  > use ratatui_core::layout::{Layout, Constraint, Rect};
  > let area = Rect::new(0, 0, 10, 10);
  > let layout = Layout::vertical([Constraint::Fill(1); 2]);
  >
  > // Rect::layout() infers the number of constraints at compile time:
  > let [top, main] = area.layout(&layout);
  >
> // Rect::try_layout() and Layout::try_areas() do the same, but return
a
  > // Result:
  > let [top, main] = area.try_layout(&layout)?;
  > let [top, main] = layout.try_areas(area)?;
  >
  > // Rect::layout_vec() returns a Vec of sub-rects:
  > let areas_vec = area.layout_vec(&layout);
  >
  > // you can also explicitly specify the number of constraints:
  > let areas = area.layout::<2>(&layout);
  > let areas = area.try_layout::<2>(&layout)?;
  > let areas = layout.try_areas::<2>(area)?;
  > ```

-
[0c3872f](0c3872f1c5)
*(uncategorized)* Add Rect::outer() by @joshka in
[#1929](https://github.com/ratatui/ratatui/pull/1929)
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/211

-
[7bc78bc](7bc78bca1b)
*(uncategorized)* Add ratatui::run() method by @joshka in
[#1707](https://github.com/ratatui/ratatui/pull/1707)

> This introduces a new `ratatui::run()` method which runs a closure
with
> a terminal initialized with reasonable defaults for most applications.
  > This calls `ratatui::init()` before running the closure and
> `ratatui::restore()` after the closure completes, and returns the
result
  > of the closure.
  >
  > A minimal hello world example using the new `ratatui::run()` method:
  >
  > ```rust
  > fn main() -> Result<(), Box<dyn std::error::Error>> {
  >     ratatui::run(|terminal| {
  >         loop {
> terminal.draw(|frame| frame.render_widget("Hello World!",
frame.area()))?;
  >             if crossterm::event::read()?.is_key_press() {
  >                 break Ok(());
  >             }
  >         }
  >     })
  > }
  > ```
  >
  > Of course, this also works both with apps that use free methods and
  > structs:
  >
  > ```rust
> fn run(terminal: &mut DefaultTerminal) -> Result<(), AppError> { ... }
  >
  > ratatui::run(run)?;
  > ```
  >
  > ```rust
  > struct App { ... }
  >
  > impl App {
  >     fn new() -> Self { ... }
> fn run(mut self, terminal: &mut DefaultTerminal) -> Result<(),
AppError> { ... }
  > }
  >
  > ratatui::run(|terminal| App::new().run(terminal))?;
  > ```

-
[b6fbfcd](b6fbfcdd1c)
*(uncategorized)* Add lifetime to symbol sets by @joshka in
[#1935](https://github.com/ratatui/ratatui/pull/1935)

> This makes it possible to create symbol sets at runtime with
non-static
  > lifetimes.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1722

-
[488e5f0](488e5f020f)
*(uncategorized)* Make `border!` work without importing `Borders` by
@j-g00da in [#1918](https://github.com/ratatui/ratatui/pull/1918)

> Currently using `border!` macro requires explicit import of `Borders`
  > which is unnecessary.

-
[671c2b4](671c2b4fd4)
*(uncategorized)* Support merging the borders of blocks by @j-g00da

> When two borders overlap, they will automatically merge into a single,
  > clean border instead of overlapping.
  >
> This improves visual clarity and reduces rendering glitches around
corners.
  >
  > For example:
  >
  > ```
> assert_eq!(Cell::new("┘").merge_symbol("┏",
MergeStrategy::Exact).symbol(), "╆");
  > ```

-
[702fff5](702fff501c)
*(uncategorized)* Implement stylize methods directly on Style by @joshka
in [#1572](https://github.com/ratatui/ratatui/pull/1572) [**breaking**]

> This makes it possible to create constants using the shorthand
methods.
  >
  > ```rust
  > const MY_STYLE: Style = Style::new().blue().on_black();
  > ```
  >
  > Rather than implementing Styled for Style and then adding extension
  > methods that implement the Stylize shorthands, this implements the
  > methods as const functions directly on Style.
  >
  > BREAKING CHANGE:`Style` no longer implements `Styled`. Any calls to
  > methods implemented by the blanket implementation of Stylize are now
> defined directly on Style. Remove the Stylize import if it is no
longer
  > used by your code.
  >
> The `reset()` method does not have a direct replacement, as it clashes
  > with the existing `reset()` method. Use `Style::reset()` rather than
  > `some_style.reset()`
  >
  > Fixes:#1158

-
[4fcd238](4fcd238e1e)
*(uncategorized)* Support no-std for calendar widget by @joshka in
[#1852](https://github.com/ratatui/ratatui/pull/1852)

> Removes the CalendarEventStore::today() function in no-std
environments

-
[53cdbbc](53cdbbccd5)
*(uncategorized)* Enable serde propagation to backend crates (crossterm,
termion) by @ArjunKrish7356 in
[#1812](https://github.com/ratatui/ratatui/pull/1812)

> This PR propagates the serde feature from the main ratatui crate to
the
  > ratatui-crossterm and ratatui-termion backend crates. Solves #1805

-
[6836a69](6836a6903e)
*(uncategorized)* Implement styled for other primitives by @aschey in
[#1684](https://github.com/ratatui/ratatui/pull/1684)

-
[fcb47d6](fcb47d60f3)
*(uncategorized)* Rename Alignment to HorizontalAlignment and add
VerticalAlignment by @joshka in
[#1735](https://github.com/ratatui/ratatui/pull/1735) [**breaking**]

> We don't anticipate removing or deprecating the type alias in the near
  > future, but it is recommended to update your imports to use the new
  > name.
  >
> Added a VerticalAlignment enum to make the API more consistent. We
don't
> have a specific use case for it yet, but it's better to add it now and
  > be able to use it in the future.
  >
  > BREAKING-CHANGE:The `Alignment` enum has been renamed to
> `HorizontalAlignment` to better reflect its purpose. A type alias has
> been added to maintain backwards compatibility, however there are some
  > cases where type aliases are not enough to maintain backwards
  > compatibility. E.g. when using glob imports to import all the enum
> variants. This should not affect most users, but it is recommended to
  > update your imports to use the new name.
  >
  > ```diff
  > - use ratatui::layout::Alignment;
  > + use ratatui::layout::HorizontalAlignment;
  >
  > - use Alignment::*;
  > + use HorizontalAlignment::*;
  > ```

-
[2714d6b](2714d6b9c3)
*(uncategorized)* Add array and tuple RGB color conversion methods by
@joshka in [#1703](https://github.com/ratatui/ratatui/pull/1703)

> Other crates (e.g. colorgrad) that deal with colors can convert colors
> to a tuple of 3 or 4 u8 values. This commit adds conversion methods
from
  > these types to a `Color::Rgb` instance. Any alpha value is ignored.
  >
  > ```rust
  > Color::from([255, 0, 0]);
  > Color::from((255, 0, 0));
  > Color::from([255, 0, 0, 255]);
  > Color::from((255, 0, 0, 255));
  > ```

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

  > Move the Mascot from Demo2 into a new widget.
  > Make the Rat grey and adjust the other colors.
  >
  > ```rust
  > frame.render_widget(RatatuiMascot::default(), frame.area());
  > ```

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)
  >
> https://crates.io/crates/anstyle makes it possible to define colors in
> an interoperable way. This makes it possible for applications to
easily
  > load colors from a variety of formats.
  >
> This is gated by the anstyle feature flag which is disabled by
default.
  >
  > ---------

### Bug Fixes

-
[a89d3d6](a89d3d62ff)
*(buffer)* Clear behavior with VS16 wide emojis by @nornagon in
[#2063](https://github.com/ratatui/ratatui/pull/2063)

  > This fixes a bug where certain emojis like ⌨️ would sometimes be
> "overlaid" onto existing content from the buffer, instead of properly
  > clearing.
  >
  > [example demonstrating
>
bug](https://gist.github.com/nornagon/11a79d7a1f2e98aa129fedb4abccc530)
  >
  > This PR was generated by Codex, and validated by me:
> 1. Behavior of the above example code was buggy before this fix
(showed
  > overlaying "b" on top of the keyboard emoji), and fixed after.
> 2. The U+FE0F check is not strictly required, but I did note that
emoji
  > without this char don't exhibit the buggy behavior, even without the
  > fix.
  >
  > ---------

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

  > Previously the canvas coordinates were rounded towards zero, which
> causes the rendering to be off by one pixel in some cases. It also
meant
> that pixels at the extreme edges of the canvas can only be drawn if
the
  > point was exactly on the edge of the canvas. This commit rounds the
> coordinates to the nearest integer instead. This may change the output
  > for some apps using Canvas / Charts.

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

> Previously lines with points that were outside the canvas bounds were
> not drawn at all. Now they are clipped to the bounds of the canvas so
  > that the portion of the line within the canvas is draw.
  >
> To facilitate this, a new `Painter::bounds()` method which returns the
  > bounds of the canvas is added.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1489

-
[2b0a044](2b0a044ced)
*(ci)* Add contents write permission to release-plz PR by @marcoieni in
[#2119](https://github.com/ratatui/ratatui/pull/2119)
  >
  > https://release-plz.dev/docs/github/quickstart#3-setup-the-workflow
  >
  > Fixes https://github.com/release-plz/release-plz/issues/2439

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

  > The Dim removal should behave the same as the logic for Bold removal
> that sends NormalIntensity sequence and then restores Dim when needed.

-
[16b76e3](16b76e36ee)
*(demo)* Update the width of demo2 tape by @orhun in
[#2164](https://github.com/ratatui/ratatui/pull/2164)

>
![](https://github.com/ratatui/ratatui/blob/images/examples/demo2.gif?raw=true)
  >
  > fixes #1721

-
[dca331c](dca331c748)
*(demo)* Support tab key in demo2 example by @orhun in
[#1726](https://github.com/ratatui/ratatui/pull/1726)
  >
  > see #1721
  >
> Not sure what caused this - it's been there for a while probably and
we
  > didn't realize it since we used `demo2-destroy` mostly.

-
[0fd4753](0fd4753e6b)
*(examples)* Run the correct example for chart by @orhun in
[#1679](https://github.com/ratatui/ratatui/pull/1679)
  >
  > fixes #1678

-
[39479e2](39479e298c)
*(examples)* Ensure that example projects are not published by @orhun in
[#1672](https://github.com/ratatui/ratatui/pull/1672)

-
[9314312](93143126b3)
*(layout)* Feature flag cache related types by @joshka in
[#1842](https://github.com/ratatui/ratatui/pull/1842)

-
[2dd1977](2dd1977c59)
*(layout-cache)* Import `NonZeroUsize` only when `layout-cache` is
enabled by @j-g00da in
[#1839](https://github.com/ratatui/ratatui/pull/1839)

> This silences unused import warning, when `layout-cache` is disabled.

-
[564a9d7](564a9d76fc)
*(line-gauge)* Pad default label to display 3 numbers by @martinetd in
[#2053](https://github.com/ratatui/ratatui/pull/2053)

> Display the default label of the LineGauge widget padded to fill 3
cells.
> This makes it so that the label doesn't shift around when going from a
  > single digit to double / triple digits.
  >
> To maintain the existing behavior, use a custom label by calling
`.label()`
  > on the LineGauge.

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

  > The canvas map constants are now statics instead.
  > Fixes
>
https://rust-lang.github.io/rust-clippy/master/index.html\#large_const_arrays

-
[2e54d5e](2e54d5e22c)
*(macros)* Use $crate re-export in text macro by @airblast-dev in
[#1832](https://github.com/ratatui/ratatui/pull/1832)

-
[79d5165](79d5165cae)
*(no_std)* Propagate `std` feature flag to dependencies by @j-g00da in
[#1838](https://github.com/ratatui/ratatui/pull/1838)

> Disables `std` feature flags in dependencies and only enables them
with
> `ratatui` and `ratatui-core`'s `std` feature flag. This partially
fixes the
> issue of still depending on `std`, when `std` feature flag is
disabled.

-
[00da8c6](00da8c6203)
*(no_std)* Provide `f64` polyfills for `no_std` compatibility by
@j-g00da in [#1840](https://github.com/ratatui/ratatui/pull/1840)
  >
  > Related:https://github.com/rust-lang/rust/issues/137578

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

> This adds the `area.is_empty()` back into the scrollbar render method.
  > Without it, the widget panics if the height is 0.

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[0a25bc1](0a25bc166d)
*(tests)* Update the stderr snapshot for ratatui-macros by @orhun in
[#2161](https://github.com/ratatui/ratatui/pull/2161)

  > New 🦀 broke the CI

-
[5fa342c](5fa342cc52)
*(widgets)* Fix centered block title truncation by @ognis1205 in
[#1973](https://github.com/ratatui/ratatui/pull/1973)

  > Previously block titles that were aligned center were
  > truncated poorly (aligned to the left, and the last
  > non-fitting title would be truncated on the left and right.
  > This now truncates the titles more obviously centered.

-
[f919b25](f919b25ea6)
*(uncategorized)* String_to_string lint is now part of implicit_clone by
@joshka in [#2173](https://github.com/ratatui/ratatui/pull/2173)

-
[1fe64de](1fe64de09a)
*(uncategorized)* Include underline color in anstyle conversion by
@aschey in [#2004](https://github.com/ratatui/ratatui/pull/2004)

  > Underline color wasn't included in the style conversion logic.

-
[c1b8528](c1b8528b69)
*(uncategorized)* Panic when rendering widgets on too small buffer by
@j-g00da in [#1996](https://github.com/ratatui/ratatui/pull/1996)

> Fixes panic on overflow on horizontal `Barchart` and `RatatuiMascot`
and adds proper tests to all widgets.
  >
  > ---------

-
[08b21fa](08b21fa55c)
*(uncategorized)* Fix panic when rendering a `Paragraph` out of bounds
by @jwodder in [#1670](https://github.com/ratatui/ratatui/pull/1670)
  >
  > Fixes #1667.

-
[80bc818](80bc818723)
*(uncategorized)* Fix truncation of left aligned block titles by @joshka
in [#1931](https://github.com/ratatui/ratatui/pull/1931)

> truncate the right side of left aligned titles rather than the left
side
> of right aligned titles. This is more obvious as the left side of text
  > often contains more important information. And we generally read
  > left to right.
  >
  > This change makes centered titles overwrite left aligned titles and
  > right aligned titles overwrite centered or left aligned titles.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/358

-
[21e3b59](21e3b598ce)
*(uncategorized)* Fix handling of multi-byte chars in bar chart by
@joshka in [#1934](https://github.com/ratatui/ratatui/pull/1934)

  > The split_at method requires that the split point is at a valid utf8
  > character boundary.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1928

-
[e1e4004](e1e400406c)
*(uncategorized)* Derive copy for list state by @janTatesa in
[#1921](https://github.com/ratatui/ratatui/pull/1921)

-
[12cb5a2](12cb5a28fe)
*(uncategorized)* Allow canvas area to exceed u16::MAX by @Daksh14 in
[#1891](https://github.com/ratatui/ratatui/pull/1891)

> This allows Canvas grids where the width * height exceeds u16::MAX by
  > converting values to usize earlier in several methods.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1449

-
[09cc9ef](09cc9ef57d)
*(uncategorized)* Typo in changelog by @joshka in
[#1857](https://github.com/ratatui/ratatui/pull/1857)

-
[c238aca](c238aca83a)
*(uncategorized)* `padding_right()` should set right padding instead of
left by @sxyazi in [#1837](https://github.com/ratatui/ratatui/pull/1837)

  > Fixes https://github.com/ratatui/ratatui/issues/1836

-
[c90ba97](c90ba9781e)
*(uncategorized)* Avoid unnecessary imports in minimal build by @cgzones
in [#1787](https://github.com/ratatui/ratatui/pull/1787)
  >
  > core::ops::Range is only used with the feature `scrolling-regions`.
  > Ensure a minimal `cargo check` reports no warnings.

-
[416ebdf](416ebdf8c8)
*(uncategorized)* Correct clippy errors introduced by rust 1.86.0 update
by @j-g00da in [#1755](https://github.com/ratatui/ratatui/pull/1755)

  > New version of rust (1.86.0) caused CI to fail.

-
[4eac5b2](4eac5b2849)
*(uncategorized)* Make deprecation notes more helpful by @joshka in
[#1702](https://github.com/ratatui/ratatui/pull/1702)

> AI coding assistants use the deprecation notes to automatically
suggest
> fixes. This commit updates the deprecation notes to push those tools
to
  > suggest the correct replacement methods and types.
  >
> Specifically, AI tools often suggest using `Buffer::get(x, y)`,
because
  > of their training data where this was prevalent. When fixing these
> deprecations, they often incorrectly suggest using `Buffer::get(x, y)`
  > instead of `Buffer[(x, y)]`.

-
[35a8642](35a86427ab)
*(uncategorized)* `Rect::positions()` should be empty when width is 0
and height is nonzero by @jwodder in
[#1669](https://github.com/ratatui/ratatui/pull/1669)
  >
  > Fixes #1666.

-
[f5fc819](f5fc8197ff)
*(uncategorized)* Avoid extra line break on whitespace only lines when
wrapping paragraphs by @dotdash in
[#1636](https://github.com/ratatui/ratatui/pull/1636)

  > Currently whitespace only lines produces an extra line break when
  > trimming is disabled, because both the trimmed as well as the
  > non-trimmed line get inserted. Fix this by only inserting the
  > non-trimmed one.

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)
  >
>
https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)
  >
  > StatefulWidget::State and StatefulWidgetRef::State are now ?Sized.
  >
> This allows implementations of the traits to use unsized types for the
  > State associated type. This is turn is useful when doing things like
  > boxing different stateful widget types with State which implements
  > `Any`, are slices or any other dynamically sized type.

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[8d60e96](8d60e96b2b)
*(examples)* Use crossterm event methods by @joshka in
[#1792](https://github.com/ratatui/ratatui/pull/1792)

> Crossterm 0.29 introduced methods to easily check / extract the event
  > type. E.g. as_key_press_event() and is_key_press(). This commit
  > updates the examples to use these methods instead of matching on
  > the event type. This makes the code cleaner and easier to read.
  >
> Also does a general cleanup of the event handling code in the
examples.

-
[07bec55](07bec55b7d)
*(no_std)* Make usages of std explicit in ratatui-core. by @ed-2100 in
[#1782](https://github.com/ratatui/ratatui/pull/1782)

  > ### This commit does the following:
  >
  > - Adds `#[no_std]` to `lib.rs`.
  > - Adds `extern crate std;` to `lib.rs`.
> - Updates `ratatui-core` to explicitly `use` items from std and alloc.
  > - Prefers `use`-ing alloc over std when possible.
  >
  > ### Explanation:
  >
> This allows usages of `std` in `ratatui-core` to be clearly pointed
out
  > and dealt with individually.
  >
  > Eventually, when `std` is to be feature gated, the associated commit
  > will be much cleaner.

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[c7c3498](c7c3498025)
*(uncategorized)* Use saturating_add in Rect::new by @pharrison31415 in
[#2216](https://github.com/ratatui/ratatui/pull/2216)

-
[02e53de](02e53de0f8)
*(uncategorized)* Make use of iter::repeat_n() by @cgzones in
[#1788](https://github.com/ratatui/ratatui/pull/1788)

  > Applied via clippy --fix.
  > Available since 1.82.0.

-
[a195d59](a195d59a47)
*(uncategorized)* Move xtask commands to small modules by @joshka in
[#1620](https://github.com/ratatui/ratatui/pull/1620)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

> Backend code is now moved to `ratatui-crossterm`, `ratatui-termion`
and
> `ratatui-termwiz`. This should be backwards compatible with existing
code.

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

> This is a preparatory refactoring for modularization. No user visible
  > changes.

### Documentation

-
[40e96a2](40e96a2a04)
*(block)* Add collapsed border example by @joshka in
[#1899](https://github.com/ratatui/ratatui/pull/1899)

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

  > - Moves the block example from `ratatui` to `ratatui-widgets`
  > - Simplifies the example (bordered, styled, custom borders)
  >
  > see #1512

-
[0951da5](0951da52f9)
*(breaking-changes)* Improve migration guide for `Backend::Error` by
@j-g00da in [#1908](https://github.com/ratatui/ratatui/pull/1908)
  >
  > Related:https://github.com/fujiapple852/trippy/pull/1588

-
[bbe1cf9](bbe1cf9497)
*(breaking-changes)* Change MSRV to 1.85 by @j-g00da in
[#1896](https://github.com/ratatui/ratatui/pull/1896)

> The minimum supported Rust version is now for `ratatui` v0.30 is 1.85

-
[c7912f3](c7912f3990)
*(breaking-changes)* Fix header level by @j-g00da in
[#1825](https://github.com/ratatui/ratatui/pull/1825)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[73488ab](73488abb45)
*(contributing)* Fix link to `widgets_block_renders` test by @ognis1205
in [#2101](https://github.com/ratatui/ratatui/pull/2101)

  > The `CONTRIBUTING.md` referenced `tests/widgets_block.rs`, but the
> correct path is `ratatui/tests/widgets_block.rs`. Updated the link so
  > that readers can navigate to the test example without 404 error.
  >
  > ---------

-
[0b025db](0b025db72b)
*(contributing)* Fix grammar by @j-g00da in
[#1958](https://github.com/ratatui/ratatui/pull/1958)

-
[1197b2a](1197b2a02c)
*(contributing)* Add note about using nightly for formatting by @joshka
in [#1816](https://github.com/ratatui/ratatui/pull/1816)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

  > - Updates `CONTRIBUTING.md` about the usage of `xtask`
  > - Removes `Makefile.toml`

-
[22e3e84](22e3e84de8)
*(core)* Remove link to Paragraph widget by @orhun in
[#1683](https://github.com/ratatui/ratatui/pull/1683)

-
[b65788c](b65788ce14)
*(examples)* Remove duplicated link by @matthiasbeyer in
[#2212](https://github.com/ratatui/ratatui/pull/2212)

-
[200b217](200b217722)
*(examples)* Add VHS tapes and docs for widget examples by @orhun in
[#2114](https://github.com/ratatui/ratatui/pull/2114)
  >
  > fixes #1982
  >
> Later on I'll figure out an easy way to regenerate this in the CI and
  > possibly do the same for the app examples' VHS tapes. That's why I
  > haven't added a script or mentioned anything in the docs yet (hint:
  > #1721)
  >
  > ---------

-
[861fbdf](861fbdf5cf)
*(examples)* Fix a typo by @j-g00da in
[#1890](https://github.com/ratatui/ratatui/pull/1890)

  > Makes CI typos check pass again

-
[882cc3c](882cc3c6c6)
*(examples)* Update app examples with tapes by @orhun in
[#1673](https://github.com/ratatui/ratatui/pull/1673)

-
[4393fae](4393fae54c)
*(examples)* Move scrollbar example to examples folder by @orhun in
[#1665](https://github.com/ratatui/ratatui/pull/1665)

-
[9ea70e2](9ea70e28c6)
*(examples)* Move widget-impl example to examples folder by @orhun in
[#1663](https://github.com/ratatui/ratatui/pull/1663)

-
[774ab78](774ab788d4)
*(examples)* Move widget-ref-container example to examples folder by
@orhun in [#1664](https://github.com/ratatui/ratatui/pull/1664)
  >
  > see #1512

-
[910d16e](910d16e63a)
*(examples)* Move user-input example to examples folder by @orhun in
[#1659](https://github.com/ratatui/ratatui/pull/1659)

-
[dbfb7da](dbfb7da9e3)
*(examples)* Move table example to examples folder by @orhun in
[#1657](https://github.com/ratatui/ratatui/pull/1657)

-
[cb2a58a](cb2a58aaa0)
*(examples)* Move tracing example to examples folder by @orhun in
[#1658](https://github.com/ratatui/ratatui/pull/1658)

-
[7e00b64](7e00b646fc)
*(examples)* Move panic example to examples folder by @orhun in
[#1655](https://github.com/ratatui/ratatui/pull/1655)

-
[8127590](8127590812)
*(examples)* Move modifiers example to examples folder by @orhun in
[#1654](https://github.com/ratatui/ratatui/pull/1654)

-
[7c40c0b](7c40c0bbdd)
*(examples)* Move popup example to examples folder by @orhun in
[#1656](https://github.com/ratatui/ratatui/pull/1656)
  >
  > see #1512

-
[d87354f](d87354f400)
*(examples)* Move list example to examples folder by @orhun in
[#1653](https://github.com/ratatui/ratatui/pull/1653)
  >
  > see #1512
  >
  > also renames it to todo-list

-
[621226f](621226f2e2)
*(examples)* Move inline example to examples folder by @orhun in
[#1651](https://github.com/ratatui/ratatui/pull/1651)

-
[9ba7d25](9ba7d25b71)
*(examples)* Move hyperlink example to examples folder by @orhun in
[#1650](https://github.com/ratatui/ratatui/pull/1650)

-
[bb94d1c](bb94d1c0fa)
*(examples)* Move minimal example to examples folder by @orhun in
[#1649](https://github.com/ratatui/ratatui/pull/1649)

-
[9f399ac](9f399ac7a6)
*(examples)* Move gauge example to examples folder by @orhun in
[#1646](https://github.com/ratatui/ratatui/pull/1646)

-
[104d6a6](104d6a6c2b)
*(examples)* Move custom-widget example to examples folder by @orhun in
[#1644](https://github.com/ratatui/ratatui/pull/1644)

-
[fa8ca01](fa8ca0121a)
*(examples)* Move flex example to examples folder by @orhun in
[#1642](https://github.com/ratatui/ratatui/pull/1642)

-
[f5fde0e](f5fde0ef53)
*(examples)* Move constraints example to examples folder by @orhun in
[#1641](https://github.com/ratatui/ratatui/pull/1641)

-
[fc70288](fc70288954)
*(examples)* Move constraint-explorer example to examples folder by
@orhun in [#1640](https://github.com/ratatui/ratatui/pull/1640)

-
[325f961](325f96102a)
*(examples)* Move hello-world example to examples folder by @orhun in
[#1647](https://github.com/ratatui/ratatui/pull/1647)

-
[867c4bc](867c4bc4e9)
*(examples)* Move colors-rgb example to examples folder by @joshka in
[#1582](https://github.com/ratatui/ratatui/pull/1582)

  > - **docs: move colors-rgb example to examples folder**
  > - **docs: update main examples README**
  >
  > ---------

-
[72334ed](72334ed61c)
*(layout)* Update documentation to point to `kasuari` solver by @a-kenji
in [#2003](https://github.com/ratatui/ratatui/pull/2003)

-
[2be9ccb](2be9ccb120)
*(layout)* Remove unnecessary path prefix by @j-g00da in
[#1766](https://github.com/ratatui/ratatui/pull/1766)

-
[b669ceb](b669cebcaf)
*(layout)* Change `cassowary` to `kasuari` crate reference by @j-g00da
in [#1765](https://github.com/ratatui/ratatui/pull/1765)

-
[f907c74](f907c74bb3)
*(license)* Update copyright years by @LVivona in
[#1639](https://github.com/ratatui/ratatui/pull/1639)

  > Update MIT Licence to copyright year 2025

-
[68b9f67](68b9f67f59)
*(readme)* Add `Built with Ratatui` badge for downstream projects by
@harilvfs in [#1905](https://github.com/ratatui/ratatui/pull/1905)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

> This is the result of the re-imagination of a more suitable README.md.
It
  > is simpler and shorter: not giving more information to the user than
  > they actually need.
  >
> Also updates the quickstart code with the up-to-date version and adds
  > link to templates which was missing.
  >
  > ---------

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[8e5151f](8e5151f83d)
*(rect)* Fix typo in the Rect::outer function comments by @orhun in
[#2123](https://github.com/ratatui/ratatui/pull/2123)

-
[40f13c6](40f13c6a6c)
*(rect)* Update the outdated comment for Rect::area() by @isgin01 in
[#2100](https://github.com/ratatui/ratatui/pull/2100)

> The return value of Rect.area() is no longer of u16 type, and the
value
  > is not being clumped anymore.

-
[ce16692](ce16692b9a)
*(release)* Fix typo by @j-g00da in
[#1754](https://github.com/ratatui/ratatui/pull/1754)

-
[9a930a6](9a930a6e99)
*(terminal)* Made usage of Terminal::get_frame() clearer by @Blaeriz in
[#2071](https://github.com/ratatui/ratatui/pull/2071)

  > Closes : https://github.com/ratatui/ratatui/issues/1200
  >
  > ---------

-
[b08b4cb](b08b4cbd5e)
*(terminal)* Add disclaimer about panics to Terminal::new by
@lolbinarycat in [#2088](https://github.com/ratatui/ratatui/pull/2088)

  >
  > part of #2087
  >
  > cc @orhun
  >
  > ---------

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)
  >
  > related #1512
  >
  > ---------

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)
  >
  > related #1512
  >
> Also removes the tabs example from ratatui crate since it overlaps
with
> this new example in terms of functionality and it was not following
the
  > general theme of other examples.

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

  > Related to: #1512

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

  > Related to: #1512

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)
  >
  > related #1512
  >
> Also removes the sparkline example from ratatui crate since this
example
  > is a simplified and easier to understand version of that

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)
  >
  > related #1512

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

  > better stonks

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)
  >
  > related #1512
  >
> Also removes the paragraph example from `ratatui` since these examples
  > are more or less the same.

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)
  >
  > related #1512
  >
  > Also updates the code to make it consistent with the other examples

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)
  >
  > related #1512

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)
  >
  > related #1512

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

  > stonks

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)
  >
  > related #1512

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[b1d47e7](b1d47e7718)
*(uncategorized)* Discourage use of `Buffer`'s `pos_of`, `index_of` by
@pharrison31415 in [#2225](https://github.com/ratatui/ratatui/pull/2225)

> These methods assume that the backing store of any buffer / area is
linearly indexable. There are other ways that we might want to
experiment in the future with how to store the values (trees, 2D
allocated areas that are non-contiguous etc.). The index <-> pos
conversion there isn't particularly useful. This should be an internal
implementation detail of the buffer, rather than something that we
expose, but we're not deprecating this for now at least.

-
[f8b0594](f8b0594363)
*(uncategorized)* Fix: fix typos by @j-g00da in
[#2129](https://github.com/ratatui/ratatui/pull/2129)

  > This fixes the pipeline after bumping typos.

-
[9998000](9998000e36)
*(uncategorized)* Use shields.io badge by @LitoMore in
[#2040](https://github.com/ratatui/ratatui/pull/2040)

  > Related to:
  > - https://github.com/simple-icons/simple-icons/pull/13593
  > - https://github.com/ratatui/ratatui/pull/1967
  >
  > The Ratatui icon is available on shields.io now ✌️
  >
  > And it's customizable. There are more configurations at
  > https://shields.io/badges.
  >
  > Here are some examples:
  >
  > ```markdown
  > ![](https://img.shields.io/badge

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-12-24 00:18:58 +03:00
Orhun Parmaksız
04e86bbfa9 chore: revert the 0.30-beta.1 update to re-trigger release-plz (#2291) 2025-12-24 00:14:55 +03:00
Orhun Parmaksız
06a30ccc72 chore(widgets): disable scrape-examples and revert ratatui dev dep (#2290)
potentially fixes #2289
2025-12-23 22:42:01 +03:00
github-actions[bot]
3936b106dc chore: release 0.30.0-beta.1 (#2287)
## 🤖 New release

* `ratatui-core`: 0.1.0-beta.0 -> 0.1.0-beta.1
* `ratatui-crossterm`: 0.1.0-beta.0 -> 0.1.0-beta.1
* `ratatui-widgets`: 0.3.0-beta.0 -> 0.3.0-beta.1
* `ratatui-macros`: 0.7.0-beta.0 -> 0.7.0-beta.1
* `ratatui-termwiz`: 0.1.0-beta.0 -> 0.1.0-beta.1
* `ratatui-termion`: 0.1.0-beta.0 -> 0.1.0-beta.1
* `ratatui`: 0.30.0-beta.0 -> 0.30.0-beta.1

<details><summary><i><b>Changelog</b></i></summary><p>

## `ratatui-core`

<blockquote>

##
[v0.30.0-beta.0](https://github.com/ratatui/ratatui/releases/tag/v0.30.0-beta.0)
- 2025-10-28

> _"Rats don't just survive; they discover; they create. ... I mean,
just look at what they do with
the terminal!" – Remy & Orhun_

We are excited to announce the biggest release of `ratatui` so far - a
Rust library that's all about cooking up TUIs 👨‍🍳🐀

📢 Please note that this is a beta release, and we encourage you to try
it out and provide feedback!

 **WIP Release highlights**:
<https://ratatui-0-30.ratatui.pages.dev/highlights/v030/>

⚠️ List of breaking changes can be found
[here](https://github.com/ratatui/ratatui/blob/main/BREAKING-CHANGES.md).

### Features

-
[56d5e05](56d5e05762)
_(bar)_ Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

> BREAKING CHANGE:label and text_value now accept `Into<>` types, which
  > breaks type inference.
  >
  > ```diff
  > - Bar::default().label("foo".into());
  > + Bar::default().label("foo");
  > ```
  >
  > ```diff
  > - Bar::default().text_value("bar".into());
  > + Bar::default().text_value("bar");
  > ```

-
[b76ad3b](b76ad3b02e)
_(bar)_ Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

  > Related:https://github.com/ratatui/ratatui/issues/683

-
[e15fefa](e15fefa922)
_(barchar)_ Add BarChart::grouped constructor by @joshka in
[#1513](https://github.com/ratatui/ratatui/pull/1513)

> Add a new constructor to the `BarChart` widget that allows creating a
  > grouped barchart with multiple groups of bars.
  >
> Also add a new constructor to the `BarGroup` widget that allows
creating
  > a group of bars with a label.

-
[369b18e](369b18eef2)
_(barchart)_ Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

  > Adds constructor methods for BarChart, BarGroup, and Bar

-
[2d713d7](2d713d723d)
_(crossterm)_ Allow multiple crossterm versions by @joshka in
[#1841](https://github.com/ratatui/ratatui/pull/1841)

  > This commit introduces feature flags to make it possible for widget
  > library authors to depend on a specific version of crossterm without
> causing version conflicts. This should make it easier for libraries
and
  > apps to update crossterm versions more easily.
  >
> The available feature flags are `crossterm_0_28` and `crossterm_0_29`.
> By default, the latest version is enabled. If a multiple features are
  > enabled we choose the latest version. We will in general support at
  > least the last two major (0.x) versions of crossterm, and will only
  > remove versions in a major version bump.

-
[d99984f](d99984f1e9)
_(layout)_ Add `Flex::SpaceEvenly` by @kdheepak in
[#1952](https://github.com/ratatui/ratatui/pull/1952) [**breaking**]

  > Resolves https://github.com/ratatui/ratatui/issues/1951
  >
> BREAKING CHANGE:Old `Flex::SpaceAround` behavior is available by using
  >
  > `Flex::SpaceEvenly` and new
  >
  > `Flex::SpaceAround` now distributes space evenly around each element
  > except the middle spacers
  > are twice the size of first and last elements
  >
  > With this change, the following variants of `Flex` are supported:
  >
> - `Flex::Start`: Aligns items to the start; excess space appears at
the
  >   end.
  > - `Flex::End`: Aligns items to the end; excess space appears at the
  >   start.
  > - `Flex::Center`: Centers items with equal space on both sides.
> - `Flex::SpaceAround` (**new**): Distributes space _around_ items;
space
  >   between items is _twice_ the edge spacing.
> - `Flex::SpaceBetween`: Distributes space _evenly between_ items
except
  >   no space at the edges.
> - `Flex::SpaceEvenly` (**previously `Flex::SpaceAround`**):
Distributes
  >   space _evenly between_ items and edges.
> - `Flex::Legacy`: Preserves legacy behavior, placing all excess space
at
  >   the end.
  >
  > This aligns behavior of `Flex` with CSS flexbox more closely.
  >
  > The following is a screenshot in action:
  >
  > <img width="1090" alt="image"
  >
>
src="https://github.com/user-attachments/assets/2c7cd797-27bd-4242-a824-4565d369227b"
  > />
  >
  > ***

-
[9275d34](9275d3421c)
_(layout)_ Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[7ad9c29](7ad9c29eac)
_(linegauge)_ Customized symbols by @sectore in
[#1601](https://github.com/ratatui/ratatui/pull/1601)

  > With this PR any symbol (`&str`) can be used to render `filled` and
  > `unfilled` parts of `LineGauge` now. Before that change, only
>
[`symbols::line::Set`](https://docs.rs/ratatui/latest/ratatui/symbols/line/struct.Set.html)
  > was accepted.
  >
  > Note:New methods are introduced to define those symbols:
  > `filled_symbol` and `unfilled_symbol`. The method
>
[`line_set`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.LineGauge.html#method.line_set)
  > is still there, but marked as `deprecated`.
  >
>
![line_gauge](https://github.com/user-attachments/assets/cae308b8-151b-461d-8af6-9a20012adf2f)

-
[92a19cb](92a19cb604)
_(list)_ Highlight symbol styling by @airblast-dev in
[#1595](https://github.com/ratatui/ratatui/pull/1595) [**breaking**]

  > Allow styling for `List`'s highlight symbol
  >
  > This change makes it so anything that implements `Into<Line>` can be
  > used as a highlight symbol.
  >
> BREAKING CHANGE:`List::highlight_symbol` can no longer be used in
const
  > context
  >
  > BREAKING CHANGE:`List::highlight_symbol` accepted `&str`. Conversion
  > methods that rely on type inference will need to be rewritten as the
  > compiler cannot infer the type.
  >
  > closes:https://github.com/ratatui/ratatui/issues/1443
  >
  > ***

-
[e89a526](e89a526aab)
_(no_std)_ Portable-atomic integration for targets with no atomic types
by @j-g00da in [#2076](https://github.com/ratatui/ratatui/pull/2076)

  > Improves compatibility with no-std targets that don't support atomic
  > types.
  >
  > We support three different scenarios depending on the target:
  >
  > 1. Terminal applications and other std targets (e.g. espidf):
  >
  > - `std` enabled, `portable-atomic` disabled
  >
  > 2. Embedded targets with atomic types, bare metal x86, etc.:
  >
  > - `std` disabled `portable-atomic` disabled
  >
  > 3. Embedded targets without atomic types (e.g. single-core MCUs):
  >
  > - `std` disabled, `portable-atomic` enabled
  >
> Turning on `portable-atomic` together with `std` will fall back to
`std`
  > atomic.

-
[1399d95](1399d95ae0)
_(no_std)_ Make palette and serde features depends on std by @j-g00da in
[#1919](https://github.com/ratatui/ratatui/pull/1919)

-
[b32f781](b32f78195b)
_(no_std)_ Make `ratatui-macros` no-std by @j-g00da in
[#1865](https://github.com/ratatui/ratatui/pull/1865)

-
[3e1c72f](3e1c72fb27)
_(no_std)_ Make ratatui compatible with `#![no_std]` by @j-g00da in
[#1794](https://github.com/ratatui/ratatui/pull/1794) [**breaking**]

  > Resolves #1781
  >
  > This PR makes it possible to compile ratatui with `#![no_std]`.
  > Also makes me answer "We Are So Embedded" to "Are We Embedded Yet?"

-
[ab48c06](ab48c06171)
_(no_std)_ Option to disable layout cache for `no_std` compatibility by
@j-g00da in [#1795](https://github.com/ratatui/ratatui/pull/1795)
[**breaking**]

  > Resolves #1780
  >
  > BREAKING CHANGE:Disabling `default-features` will now disable layout
  > cache, which can have a negative impact on performance.
  >
  > `Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` are now only
  > available if `layout-cache` feature is enabled.

-
[09173d1](09173d1829)
_(no_std)_ Make `TestBackend::Error` `Infallible` by @j-g00da in
[#1823](https://github.com/ratatui/ratatui/pull/1823) [**breaking**]

> BREAKING CHANGE:`TestBackend` now uses `core::convert::Infallible` for
  > error handling instead of `std::io::Error`

-
[007713e](007713e50a)
_(no_std)_ Replace `Backend`'s `io::Error` usages with associated
`Error` type by @j-g00da in
[#1778](https://github.com/ratatui/ratatui/pull/1778) [**breaking**]

  > Resolves #1775
  >
> BREAKING CHANGE:Custom backends now have to implement `Backend::Error`
> and `Backend::clear_region`. Additionally some generic `Backend` usage
  > will have to explicitly set trait bounds for `Backend::Error`.

-
[a42a17e](a42a17e184)
_(no_std)_ Make `ratatui-widgets` `no_std` by @j-g00da in
[#1779](https://github.com/ratatui/ratatui/pull/1779)

  > Resolves #1776

-
[5a232a3](5a232a3115)
_(no_std)_ Remove redundant `std` usages in `ratatui-widgets` by
@j-g00da in [#1762](https://github.com/ratatui/ratatui/pull/1762)

-
[ebe10cd](ebe10cd81f)
_(no_std)_ Remove redundant `std` usages in `ratatui-core` by @j-g00da
in [#1753](https://github.com/ratatui/ratatui/pull/1753)

  > Resolves https://github.com/ratatui/ratatui/issues/1751

-
[08b08cc](08b08cc45b)
_(rect)_ Centering by @janTatesa in
[#1814](https://github.com/ratatui/ratatui/pull/1814)

  > Resolves #617

-
[ff729b7](ff729b7607)
_(scrollbar)_ Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

> As of now it is possible to change the position of the Scrollbar but
not
  > possible to retrieve the position for further use. e.g.
  >
  > ```rust
  > let mut state = ScrollbarState::default();
  > state.next();
  > ```
  >
> This commit adds a new method "`current_position`" (since `position`
is
  > already taken by the fluent setter) for that purpose:
  >
  > ```rust
  > let index = state.get_position(); // yay
  > ```
  >
  > See #1545 for the concrete usage of this.

-
[b9da192](b9da1926a0)
_(serde)_ Derive Serialize/Deserialize for alignment enums by @j-g00da
in [#1957](https://github.com/ratatui/ratatui/pull/1957)

  > Resolves #1954

-
[89b7421](89b74214d9)
_(serde)_ Derive Serialize/Deserialize for additional structs/enums by
@aurreland in [#1883](https://github.com/ratatui/ratatui/pull/1883)

  > This PR adds `#[derive(Serialize, Deserialize)]` to the following
  > structs:
  >
  > - `Constraint`
  > - `Direction`
  > - `Spacing`
  > - `Layout`
  > - `AccentedPalette`
  > - `NonAccentedPalette`
  > - `Palette`
  > - `Padding`
  > - `Borders`
  > - `BorderType`
  > - `ListDirection`
  > - `ScrollbarOrientation`
  > - `ScrollDirection`
  > - `RenderDirection`
  > - `HighlightSpacing`
  >
  > Fixes #1877

-
[03f3f6d](03f3f6df35)
_(style)_ Allow add/sub modifiers to be omitted in Style serialization.
by @rcorre in [#2057](https://github.com/ratatui/ratatui/pull/2057)

  > It's really useful that Style supports Deserialize, this allows TUI
  > apps to have configurable theming without much extra code.
  >
  > However, deserializing a style currently fails if `add_modifier` and
  > `sub_modifier` are
  > not specified. That means the following TOML config:
  >
  > ```toml
  > [theme.highlight]
  > fg = "white"
  > bg = "black"
  > ```
  >
> Will fail to deserialize with "missing field `add_modifier`". It
should
  > be possible
  > to omit modifiers and have them default to "none".

-
[985cd05](985cd05573)
_(symbols)_ Add dashed borders by @theotchlx in
[#1573](https://github.com/ratatui/ratatui/pull/1573)

  > Adds several new border sets:
  >
  > - ratatui::symbols::border::LIGHT_DOUBLE_DASHED
  > - ratatui::symbols::border::HEAVY_DOUBLE_DASHED
  > - ratatui::symbols::border::LIGHT_TRIPLE_DASHED
  > - ratatui::symbols::border::HEAVY_TRIPLE_DASHED
  > - ratatui::symbols::border::LIGHT_QUADRUPLE_DASHED
  > - ratatui::symbols::border::HEAVY_QUADRUPLE_DASHED
  >
  > And corresponding variants to the ratatui::widgets::BorderType enum
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1355

-
[4c301e8](4c301e891d)
_(text)_ Implement `AddAssign` for `Text` by @acuteenvy in
[#1956](https://github.com/ratatui/ratatui/pull/1956)

> This makes it possible to add a second `Text` instance to a first one
using the += operator.
  >
  > ```rust
  > let mut text = Text::from("line 1");
  > text += Text::from("line 2");
  > ```
  >
> Style and alignment applied to the second text is ignored (though
styles and alignment of lines and spans are copied).

-
[ce4856a](ce4856a65f)
_(widgets)_ Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

> Allows constructing `Rectangle`, `Points` and `Circle` using the `new`
  > method instead of initializing with the public fields directly.

-
[75b78be](75b78be09f)
_(uncategorized)_ Add width() impl for tabs by @joshka in
[#2049](https://github.com/ratatui/ratatui/pull/2049)

> The purpose of this is to make it easy for apps to easily calculate
the
  > total tab width including all dividers and padding.

-
[8188ed3](8188ed3950)
_(uncategorized)_ Implement UnicodeWidthStr for Text/Line/Span by
@joshka in [#2030](https://github.com/ratatui/ratatui/pull/2030)

  > You can now calculate the width of any Text/Line/Span using the
> UnicodeWidthStr trait instead of the width method on the type. This
also
  > makes it possible to use the width_cjk() method if needed.

-
[c845fec](c845fec765)
_(uncategorized)_ Add conversion from Size to Rect by @joshka in
[#2028](https://github.com/ratatui/ratatui/pull/2028)

  > `Rect::from(size)` returns a new Rect at the origin (0, 0) with the
  > specified `Size`

-
[017af11](017af11b2b)
_(uncategorized)_ Preserve block titles when merging borders by @j-g00da
in [#1977](https://github.com/ratatui/ratatui/pull/1977)

  > Resolves #1939

-
[6dcd53b](6dcd53bc6b)
_(uncategorized)_ Add ergonomic methods for layouting Rects by @joshka
in [#1909](https://github.com/ratatui/ratatui/pull/1909)

> This commit introduces new methods for the `Rect` struct that simplify
> the process of splitting a `Rect` into sub-rects according to a given
> `Layout`. By putting these methods on the `Rect` struct, we make it a
> bit more natural that a layout is applied to the `Rect` itself, rather
  > than passing a `Rect` to the `Layout` struct to be split.
  >
> Adds:- `Rect::layout` and `Rect::try_layout` methods that allow
splitting a
  > `Rect` into an array of sub-rects according to a given `Layout`.
  >
  > - `Rect::layout_vec` method that returns a `Vec` of sub-rects.
> - `Layout::try_areas` method that returns an array of sub-rects, with
  >   compile-time checks for the number of constraints. This is added
  >   mainly for consistency with the new `Rect` methods.
  >
  > ```rust
  > use ratatui_core::layout::{Layout, Constraint, Rect};
  > let area = Rect::new(0, 0, 10, 10);
  > let layout = Layout::vertical([Constraint::Fill(1); 2]);
  >
  > // Rect::layout() infers the number of constraints at compile time:
  > let [top, main] = area.layout(&layout);
  >
> // Rect::try_layout() and Layout::try_areas() do the same, but return
a
  > // Result:
  > let [top, main] = area.try_layout(&layout)?;
  > let [top, main] = layout.try_areas(area)?;
  >
  > // Rect::layout_vec() returns a Vec of sub-rects:
  > let areas_vec = area.layout_vec(&layout);
  >
  > // you can also explicitly specify the number of constraints:
  > let areas = area.layout::<2>(&layout);
  > let areas = area.try_layout::<2>(&layout)?;
  > let areas = layout.try_areas::<2>(area)?;
  > ```

-
[0c3872f](0c3872f1c5)
_(uncategorized)_ Add Rect::outer() by @joshka in
[#1929](https://github.com/ratatui/ratatui/pull/1929)

  > Fixes:https://github.com/ratatui/ratatui/issues/211

-
[7bc78bc](7bc78bca1b)
_(uncategorized)_ Add ratatui::run() method by @joshka in
[#1707](https://github.com/ratatui/ratatui/pull/1707)

> This introduces a new `ratatui::run()` method which runs a closure
with
> a terminal initialized with reasonable defaults for most applications.
  > This calls `ratatui::init()` before running the closure and
> `ratatui::restore()` after the closure completes, and returns the
result
  > of the closure.
  >
  > A minimal hello world example using the new `ratatui::run()` method:
  >
  > ```rust
  > fn main() -> Result<(), Box<dyn std::error::Error>> {
  >     ratatui::run(|terminal| {
  >         loop {
> terminal.draw(|frame| frame.render_widget("Hello World!",
frame.area()))?;
  >             if crossterm::event::read()?.is_key_press() {
  >                 break Ok(());
  >             }
  >         }
  >     })
  > }
  > ```
  >
  > Of course, this also works both with apps that use free methods and
  > structs:
  >
  > ```rust
> fn run(terminal: &mut DefaultTerminal) -> Result<(), AppError> { ... }
  >
  > ratatui::run(run)?;
  > ```
  >
  > ```rust
  > struct App { ... }
  >
  > impl App {
  >     fn new() -> Self { ... }
> fn run(mut self, terminal: &mut DefaultTerminal) -> Result<(),
AppError> { ... }
  > }
  >
  > ratatui::run(|terminal| App::new().run(terminal))?;
  > ```

-
[b6fbfcd](b6fbfcdd1c)
_(uncategorized)_ Add lifetime to symbol sets by @joshka in
[#1935](https://github.com/ratatui/ratatui/pull/1935)

> This makes it possible to create symbol sets at runtime with
non-static
  > lifetimes.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1722

-
[488e5f0](488e5f020f)
_(uncategorized)_ Make `border!` work without importing `Borders` by
@j-g00da in [#1918](https://github.com/ratatui/ratatui/pull/1918)

> Currently using `border!` macro requires explicit import of `Borders`
  > which is unnecessary.

-
[671c2b4](671c2b4fd4)
_(uncategorized)_ Support merging the borders of blocks by @j-g00da

> When two borders overlap, they will automatically merge into a single,
  > clean border instead of overlapping.
  >
> This improves visual clarity and reduces rendering glitches around
corners.
  >
  > For example:
  >
  > ```
> assert_eq!(Cell::new("┘").merge_symbol("┏",
MergeStrategy::Exact).symbol(), "╆");
  > ```

-
[702fff5](702fff501c)
_(uncategorized)_ Implement stylize methods directly on Style by @joshka
in [#1572](https://github.com/ratatui/ratatui/pull/1572) [**breaking**]

> This makes it possible to create constants using the shorthand
methods.
  >
  > ```rust
  > const MY_STYLE: Style = Style::new().blue().on_black();
  > ```
  >
  > Rather than implementing Styled for Style and then adding extension
  > methods that implement the Stylize shorthands, this implements the
  > methods as const functions directly on Style.
  >
  > BREAKING CHANGE:`Style` no longer implements `Styled`. Any calls to
  > methods implemented by the blanket implementation of Stylize are now
> defined directly on Style. Remove the Stylize import if it is no
longer
  > used by your code.
  >
> The `reset()` method does not have a direct replacement, as it clashes
  > with the existing `reset()` method. Use `Style::reset()` rather than
  > `some_style.reset()`
  >
  > Fixes:#1158

-
[4fcd238](4fcd238e1e)
_(uncategorized)_ Support no-std for calendar widget by @joshka in
[#1852](https://github.com/ratatui/ratatui/pull/1852)

> Removes the CalendarEventStore::today() function in no-std
environments

-
[53cdbbc](53cdbbccd5)
_(uncategorized)_ Enable serde propagation to backend crates (crossterm,
termion) by @ArjunKrish7356 in
[#1812](https://github.com/ratatui/ratatui/pull/1812)

> This PR propagates the serde feature from the main ratatui crate to
the
  > ratatui-crossterm and ratatui-termion backend crates. Solves #1805

-
[6836a69](6836a6903e)
_(uncategorized)_ Implement styled for other primitives by @aschey in
[#1684](https://github.com/ratatui/ratatui/pull/1684)

-
[fcb47d6](fcb47d60f3)
_(uncategorized)_ Rename Alignment to HorizontalAlignment and add
VerticalAlignment by @joshka in
[#1735](https://github.com/ratatui/ratatui/pull/1735) [**breaking**]

> We don't anticipate removing or deprecating the type alias in the near
  > future, but it is recommended to update your imports to use the new
  > name.
  >
> Added a VerticalAlignment enum to make the API more consistent. We
don't
> have a specific use case for it yet, but it's better to add it now and
  > be able to use it in the future.
  >
  > BREAKING-CHANGE:The `Alignment` enum has been renamed to
> `HorizontalAlignment` to better reflect its purpose. A type alias has
> been added to maintain backwards compatibility, however there are some
  > cases where type aliases are not enough to maintain backwards
  > compatibility. E.g. when using glob imports to import all the enum
> variants. This should not affect most users, but it is recommended to
  > update your imports to use the new name.
  >
  > ```diff
  > - use ratatui::layout::Alignment;
  > + use ratatui::layout::HorizontalAlignment;
  >
  > - use Alignment::*;
  > + use HorizontalAlignment::*;
  > ```

-
[2714d6b](2714d6b9c3)
_(uncategorized)_ Add array and tuple RGB color conversion methods by
@joshka in [#1703](https://github.com/ratatui/ratatui/pull/1703)

> Other crates (e.g. colorgrad) that deal with colors can convert colors
> to a tuple of 3 or 4 u8 values. This commit adds conversion methods
from
  > these types to a `Color::Rgb` instance. Any alpha value is ignored.
  >
  > ```rust
  > Color::from([255, 0, 0]);
  > Color::from((255, 0, 0));
  > Color::from([255, 0, 0, 255]);
  > Color::from((255, 0, 0, 255));
  > ```

-
[50ba965](50ba96518f)
_(uncategorized)_ Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

  > Move the Mascot from Demo2 into a new widget.
  > Make the Rat grey and adjust the other colors.
  >
  > ```rust
  > frame.render_widget(RatatuiMascot::default(), frame.area());
  > ```

-
[1d28c89](1d28c89fe5)
_(uncategorized)_ Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)
> https://crates.io/crates/anstyle makes it possible to define colors in
> an interoperable way. This makes it possible for applications to
easily
  > load colors from a variety of formats.
  >
> This is gated by the anstyle feature flag which is disabled by
default.
  >
  > ***

### Bug Fixes

-
[a89d3d6](a89d3d62ff)
_(buffer)_ Clear behavior with VS16 wide emojis by @nornagon in
[#2063](https://github.com/ratatui/ratatui/pull/2063)

  > This fixes a bug where certain emojis like ⌨️ would sometimes be
> "overlaid" onto existing content from the buffer, instead of properly
  > clearing.
  >
  > [example demonstrating
>
bug](https://gist.github.com/nornagon/11a79d7a1f2e98aa129fedb4abccc530)
  >
  > This PR was generated by Codex, and validated by me:
  >
> 1. Behavior of the above example code was buggy before this fix
(showed
  >    overlaying "b" on top of the keyboard emoji), and fixed after.
> 2. The U+FE0F check is not strictly required, but I did note that
emoji
> without this char don't exhibit the buggy behavior, even without the
  >    fix.
  >
  > ***

-
[ec30390](ec30390446)
_(canvas)_ Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

  > Previously the canvas coordinates were rounded towards zero, which
> causes the rendering to be off by one pixel in some cases. It also
meant
> that pixels at the extreme edges of the canvas can only be drawn if
the
  > point was exactly on the edge of the canvas. This commit rounds the
> coordinates to the nearest integer instead. This may change the output
  > for some apps using Canvas / Charts.

-
[afd1ce1](afd1ce179b)
_(canvas)_ Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

> Previously lines with points that were outside the canvas bounds were
> not drawn at all. Now they are clipped to the bounds of the canvas so
  > that the portion of the line within the canvas is draw.
  >
> To facilitate this, a new `Painter::bounds()` method which returns the
  > bounds of the canvas is added.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1489

-
[2b0a044](2b0a044ced)
_(ci)_ Add contents write permission to release-plz PR by @marcoieni in
[#2119](https://github.com/ratatui/ratatui/pull/2119)

  > https://release-plz.dev/docs/github/quickstart#3-setup-the-workflow
  >
  > Fixes https://github.com/release-plz/release-plz/issues/2439

-
[18e70d3](18e70d3d51)
_(crossterm)_ Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

  > The Dim removal should behave the same as the logic for Bold removal
> that sends NormalIntensity sequence and then restores Dim when needed.

-
[dca331c](dca331c748)
_(demo)_ Support tab key in demo2 example by @orhun in
[#1726](https://github.com/ratatui/ratatui/pull/1726)

  > see #1721
  >
> Not sure what caused this - it's been there for a while probably and
we
  > didn't realize it since we used `demo2-destroy` mostly.

-
[0fd4753](0fd4753e6b)
_(examples)_ Run the correct example for chart by @orhun in
[#1679](https://github.com/ratatui/ratatui/pull/1679)

  > fixes #1678

-
[39479e2](39479e298c)
_(examples)_ Ensure that example projects are not published by @orhun in
[#1672](https://github.com/ratatui/ratatui/pull/1672)

-
[9314312](93143126b3)
_(layout)_ Feature flag cache related types by @joshka in
[#1842](https://github.com/ratatui/ratatui/pull/1842)

-
[2dd1977](2dd1977c59)
_(layout-cache)_ Import `NonZeroUsize` only when `layout-cache` is
enabled by @j-g00da in
[#1839](https://github.com/ratatui/ratatui/pull/1839)

> This silences unused import warning, when `layout-cache` is disabled.

-
[564a9d7](564a9d76fc)
_(line-gauge)_ Pad default label to display 3 numbers by @martinetd in
[#2053](https://github.com/ratatui/ratatui/pull/2053)

> Display the default label of the LineGauge widget padded to fill 3
cells.
> This makes it so that the label doesn't shift around when going from a
  > single digit to double / triple digits.
  >
> To maintain the existing behavior, use a custom label by calling
`.label()`
  > on the LineGauge.

-
[a692a6e](a692a6e371)
_(lint)_ Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

  > The canvas map constants are now statics instead.
  > Fixes
>
https://rust-lang.github.io/rust-clippy/master/index.html\#large_const_arrays

-
[2e54d5e](2e54d5e22c)
_(macros)_ Use $crate re-export in text macro by @airblast-dev in
[#1832](https://github.com/ratatui/ratatui/pull/1832)

-
[79d5165](79d5165cae)
_(no_std)_ Propagate `std` feature flag to dependencies by @j-g00da in
[#1838](https://github.com/ratatui/ratatui/pull/1838)

> Disables `std` feature flags in dependencies and only enables them
with
> `ratatui` and `ratatui-core`'s `std` feature flag. This partially
fixes the
> issue of still depending on `std`, when `std` feature flag is
disabled.

-
[00da8c6](00da8c6203)
_(no_std)_ Provide `f64` polyfills for `no_std` compatibility by
@j-g00da in [#1840](https://github.com/ratatui/ratatui/pull/1840)

  > Related:https://github.com/rust-lang/rust/issues/137578

-
[3b13240](3b13240728)
_(scrollbar)_ Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

> This adds the `area.is_empty()` back into the scrollbar render method.
  > Without it, the widget panics if the height is 0.

-
[f57b696](f57b696fdc)
_(span)_ Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
_(table)_ Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[0a25bc1](0a25bc166d)
_(tests)_ Update the stderr snapshot for ratatui-macros by @orhun in
[#2161](https://github.com/ratatui/ratatui/pull/2161)

  > New 🦀 broke the CI

-
[5fa342c](5fa342cc52)
_(widgets)_ Fix centered block title truncation by @ognis1205 in
[#1973](https://github.com/ratatui/ratatui/pull/1973)

  > Previously block titles that were aligned center were
  > truncated poorly (aligned to the left, and the last
  > non-fitting title would be truncated on the left and right.
  > This now truncates the titles more obviously centered.

-
[1fe64de](1fe64de09a)
_(uncategorized)_ Include underline color in anstyle conversion by
@aschey in [#2004](https://github.com/ratatui/ratatui/pull/2004)

  > Underline color wasn't included in the style conversion logic.

-
[c1b8528](c1b8528b69)
_(uncategorized)_ Panic when rendering widgets on too small buffer by
@j-g00da in [#1996](https://github.com/ratatui/ratatui/pull/1996)

> Fixes panic on overflow on horizontal `Barchart` and `RatatuiMascot`
and adds proper tests to all widgets.
  >
  > ***

-
[08b21fa](08b21fa55c)
_(uncategorized)_ Fix panic when rendering a `Paragraph` out of bounds
by @jwodder in [#1670](https://github.com/ratatui/ratatui/pull/1670)

  > Fixes #1667.

-
[80bc818](80bc818723)
_(uncategorized)_ Fix truncation of left aligned block titles by @joshka
in [#1931](https://github.com/ratatui/ratatui/pull/1931)

> truncate the right side of left aligned titles rather than the left
side
> of right aligned titles. This is more obvious as the left side of text
  > often contains more important information. And we generally read
  > left to right.
  >
  > This change makes centered titles overwrite left aligned titles and
  > right aligned titles overwrite centered or left aligned titles.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/358

-
[21e3b59](21e3b598ce)
_(uncategorized)_ Fix handling of multi-byte chars in bar chart by
@joshka in [#1934](https://github.com/ratatui/ratatui/pull/1934)

  > The split_at method requires that the split point is at a valid utf8
  > character boundary.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1928

-
[e1e4004](e1e400406c)
_(uncategorized)_ Derive copy for list state by @janTatesa in
[#1921](https://github.com/ratatui/ratatui/pull/1921)

-
[12cb5a2](12cb5a28fe)
_(uncategorized)_ Allow canvas area to exceed u16::MAX by @Daksh14 in
[#1891](https://github.com/ratatui/ratatui/pull/1891)

> This allows Canvas grids where the width \* height exceeds u16::MAX by
  > converting values to usize earlier in several methods.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1449

-
[09cc9ef](09cc9ef57d)
_(uncategorized)_ Typo in changelog by @joshka in
[#1857](https://github.com/ratatui/ratatui/pull/1857)

-
[c238aca](c238aca83a)
_(uncategorized)_ `padding_right()` should set right padding instead of
left by @sxyazi in [#1837](https://github.com/ratatui/ratatui/pull/1837)

  > Fixes https://github.com/ratatui/ratatui/issues/1836

-
[c90ba97](c90ba9781e)
_(uncategorized)_ Avoid unnecessary imports in minimal build by @cgzones
in [#1787](https://github.com/ratatui/ratatui/pull/1787)

  > core::ops::Range is only used with the feature `scrolling-regions`.
  > Ensure a minimal `cargo check` reports no warnings.

-
[416ebdf](416ebdf8c8)
_(uncategorized)_ Correct clippy errors introduced by rust 1.86.0 update
by @j-g00da in [#1755](https://github.com/ratatui/ratatui/pull/1755)

  > New version of rust (1.86.0) caused CI to fail.

-
[4eac5b2](4eac5b2849)
_(uncategorized)_ Make deprecation notes more helpful by @joshka in
[#1702](https://github.com/ratatui/ratatui/pull/1702)

> AI coding assistants use the deprecation notes to automatically
suggest
> fixes. This commit updates the deprecation notes to push those tools
to
  > suggest the correct replacement methods and types.
  >
> Specifically, AI tools often suggest using `Buffer::get(x, y)`,
because
  > of their training data where this was prevalent. When fixing these
> deprecations, they often incorrectly suggest using `Buffer::get(x, y)`
  > instead of `Buffer[(x, y)]`.

-
[35a8642](35a86427ab)
_(uncategorized)_ `Rect::positions()` should be empty when width is 0
and height is nonzero by @jwodder in
[#1669](https://github.com/ratatui/ratatui/pull/1669)

  > Fixes #1666.

-
[f5fc819](f5fc8197ff)
_(uncategorized)_ Avoid extra line break on whitespace only lines when
wrapping paragraphs by @dotdash in
[#1636](https://github.com/ratatui/ratatui/pull/1636)

  > Currently whitespace only lines produces an extra line break when
  > trimming is disabled, because both the trimmed as well as the
  > non-trimmed line get inserted. Fix this by only inserting the
  > non-trimmed one.

-
[2892bdd](2892bddce6)
_(uncategorized)_ Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

>
https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes

-
[36e2d1b](36e2d1bda1)
_(uncategorized)_ Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
_(uncategorized)_ Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

  > StatefulWidget::State and StatefulWidgetRef::State are now ?Sized.
  >
> This allows implementations of the traits to use unsized types for the
  > State associated type. This is turn is useful when doing things like
  > boxing different stateful widget types with State which implements
  > `Any`, are slices or any other dynamically sized type.

-
[7b87509](7b875091e1)
_(uncategorized)_ Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[8d60e96](8d60e96b2b)
_(examples)_ Use crossterm event methods by @joshka in
[#1792](https://github.com/ratatui/ratatui/pull/1792)

> Crossterm 0.29 introduced methods to easily check / extract the event
  > type. E.g. as_key_press_event() and is_key_press(). This commit
  > updates the examples to use these methods instead of matching on
  > the event type. This makes the code cleaner and easier to read.
  >
> Also does a general cleanup of the event handling code in the
examples.

-
[07bec55](07bec55b7d)
_(no_std)_ Make usages of std explicit in ratatui-core. by @ed-2100 in
[#1782](https://github.com/ratatui/ratatui/pull/1782)

  > ### This commit does the following:
  >
  > - Adds `#[no_std]` to `lib.rs`.
  > - Adds `extern crate std;` to `lib.rs`.
> - Updates `ratatui-core` to explicitly `use` items from std and alloc.
  > - Prefers `use`-ing alloc over std when possible.
  >
  > ### Explanation:
  >
> This allows usages of `std` in `ratatui-core` to be clearly pointed
out
  > and dealt with individually.
  >
  > Eventually, when `std` is to be feature gated, the associated commit
  > will be much cleaner.

-
[f132fa1](f132fa1715)
_(table)_ Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[02e53de](02e53de0f8)
_(uncategorized)_ Make use of iter::repeat_n() by @cgzones in
[#1788](https://github.com/ratatui/ratatui/pull/1788)

  > Applied via clippy --fix.
  > Available since 1.82.0.

-
[a195d59](a195d59a47)
_(uncategorized)_ Move xtask commands to small modules by @joshka in
[#1620](https://github.com/ratatui/ratatui/pull/1620)

-
[904b0aa](904b0aa723)
_(uncategorized)_ Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
_(uncategorized)_ Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
_(uncategorized)_ Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

> Backend code is now moved to `ratatui-crossterm`, `ratatui-termion`
and
> `ratatui-termwiz`. This should be backwards compatible with existing
code.

-
[e461b72](e461b724a6)
_(uncategorized)_ Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

> This is a preparatory refactoring for modularization. No user visible
  > changes.

### Documentation

-
[40e96a2](40e96a2a04)
_(block)_ Add collapsed border example by @joshka in
[#1899](https://github.com/ratatui/ratatui/pull/1899)

-
[d291042](d291042e69)
_(block)_ Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

  > - Moves the block example from `ratatui` to `ratatui-widgets`
  > - Simplifies the example (bordered, styled, custom borders)
  >
  > see #1512

-
[0951da5](0951da52f9)
_(breaking-changes)_ Improve migration guide for `Backend::Error` by
@j-g00da in [#1908](https://github.com/ratatui/ratatui/pull/1908)

  > Related:https://github.com/fujiapple852/trippy/pull/1588

-
[bbe1cf9](bbe1cf9497)
_(breaking-changes)_ Change MSRV to 1.85 by @j-g00da in
[#1896](https://github.com/ratatui/ratatui/pull/1896)

> The minimum supported Rust version is now for `ratatui` v0.30 is 1.85

-
[c7912f3](c7912f3990)
_(breaking-changes)_ Fix header level by @j-g00da in
[#1825](https://github.com/ratatui/ratatui/pull/1825)

-
[eb24938](eb249382c9)
_(changelog)_ Add note to ratatui-macros' changelog

-
[fcde9cb](fcde9cb9c3)
_(changelog)_ Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[73488ab](73488abb45)
_(contributing)_ Fix link to `widgets_block_renders` test by @ognis1205
in [#2101](https://github.com/ratatui/ratatui/pull/2101)

  > The `CONTRIBUTING.md` referenced `tests/widgets_block.rs`, but the
> correct path is `ratatui/tests/widgets_block.rs`. Updated the link so
  > that readers can navigate to the test example without 404 error.
  >
  > ***

-
[0b025db](0b025db72b)
_(contributing)_ Fix grammar by @j-g00da in
[#1958](https://github.com/ratatui/ratatui/pull/1958)

-
[1197b2a](1197b2a02c)
_(contributing)_ Add note about using nightly for formatting by @joshka
in [#1816](https://github.com/ratatui/ratatui/pull/1816)

-
[3ae6bf1](3ae6bf1d6f)
_(contributing)_ Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

  > - Updates `CONTRIBUTING.md` about the usage of `xtask`
  > - Removes `Makefile.toml`

-
[22e3e84](22e3e84de8)
_(core)_ Remove link to Paragraph widget by @orhun in
[#1683](https://github.com/ratatui/ratatui/pull/1683)

-
[200b217](200b217722)
_(examples)_ Add VHS tapes and docs for widget examples by @orhun in
[#2114](https://github.com/ratatui/ratatui/pull/2114)

  > fixes #1982
  >
> Later on I'll figure out an easy way to regenerate this in the CI and
  > possibly do the same for the app examples' VHS tapes. That's why I
  > haven't added a script or mentioned anything in the docs yet (hint:
  > #1721)
  >
  > ***

-
[861fbdf](861fbdf5cf)
_(examples)_ Fix a typo by @j-g00da in
[#1890](https://github.com/ratatui/ratatui/pull/1890)

  > Makes CI typos check pass again

-
[882cc3c](882cc3c6c6)
_(examples)_ Update app examples with tapes by @orhun in
[#1673](https://github.com/ratatui/ratatui/pull/1673)

-
[4393fae](4393fae54c)
_(examples)_ Move scrollbar example to examples folder by @orhun in
[#1665](https://github.com/ratatui/ratatui/pull/1665)

-
[9ea70e2](9ea70e28c6)
_(examples)_ Move widget-impl example to examples folder by @orhun in
[#1663](https://github.com/ratatui/ratatui/pull/1663)

-
[774ab78](774ab788d4)
_(examples)_ Move widget-ref-container example to examples folder by
@orhun in [#1664](https://github.com/ratatui/ratatui/pull/1664)

  > see #1512

-
[910d16e](910d16e63a)
_(examples)_ Move user-input example to examples folder by @orhun in
[#1659](https://github.com/ratatui/ratatui/pull/1659)

-
[dbfb7da](dbfb7da9e3)
_(examples)_ Move table example to examples folder by @orhun in
[#1657](https://github.com/ratatui/ratatui/pull/1657)

-
[cb2a58a](cb2a58aaa0)
_(examples)_ Move tracing example to examples folder by @orhun in
[#1658](https://github.com/ratatui/ratatui/pull/1658)

-
[7e00b64](7e00b646fc)
_(examples)_ Move panic example to examples folder by @orhun in
[#1655](https://github.com/ratatui/ratatui/pull/1655)

-
[8127590](8127590812)
_(examples)_ Move modifiers example to examples folder by @orhun in
[#1654](https://github.com/ratatui/ratatui/pull/1654)

-
[7c40c0b](7c40c0bbdd)
_(examples)_ Move popup example to examples folder by @orhun in
[#1656](https://github.com/ratatui/ratatui/pull/1656)

  > see #1512

-
[d87354f](d87354f400)
_(examples)_ Move list example to examples folder by @orhun in
[#1653](https://github.com/ratatui/ratatui/pull/1653)

  > see #1512
  >
  > also renames it to todo-list

-
[621226f](621226f2e2)
_(examples)_ Move inline example to examples folder by @orhun in
[#1651](https://github.com/ratatui/ratatui/pull/1651)

-
[9ba7d25](9ba7d25b71)
_(examples)_ Move hyperlink example to examples folder by @orhun in
[#1650](https://github.com/ratatui/ratatui/pull/1650)

-
[bb94d1c](bb94d1c0fa)
_(examples)_ Move minimal example to examples folder by @orhun in
[#1649](https://github.com/ratatui/ratatui/pull/1649)

-
[9f399ac](9f399ac7a6)
_(examples)_ Move gauge example to examples folder by @orhun in
[#1646](https://github.com/ratatui/ratatui/pull/1646)

-
[104d6a6](104d6a6c2b)
_(examples)_ Move custom-widget example to examples folder by @orhun in
[#1644](https://github.com/ratatui/ratatui/pull/1644)

-
[fa8ca01](fa8ca0121a)
_(examples)_ Move flex example to examples folder by @orhun in
[#1642](https://github.com/ratatui/ratatui/pull/1642)

-
[f5fde0e](f5fde0ef53)
_(examples)_ Move constraints example to examples folder by @orhun in
[#1641](https://github.com/ratatui/ratatui/pull/1641)

-
[fc70288](fc70288954)
_(examples)_ Move constraint-explorer example to examples folder by
@orhun in [#1640](https://github.com/ratatui/ratatui/pull/1640)

-
[325f961](325f96102a)
_(examples)_ Move hello-world example to examples folder by @orhun in
[#1647](https://github.com/ratatui/ratatui/pull/1647)

-
[867c4bc](867c4bc4e9)
_(examples)_ Move colors-rgb example to examples folder by @joshka in
[#1582](https://github.com/ratatui/ratatui/pull/1582)

  > - **docs: move colors-rgb example to examples folder**
  > - **docs: update main examples README**
  >
  > ***

-
[72334ed](72334ed61c)
_(layout)_ Update documentation to point to `kasuari` solver by @a-kenji
in [#2003](https://github.com/ratatui/ratatui/pull/2003)

-
[2be9ccb](2be9ccb120)
_(layout)_ Remove unnecessary path prefix by @j-g00da in
[#1766](https://github.com/ratatui/ratatui/pull/1766)

-
[b669ceb](b669cebcaf)
_(layout)_ Change `cassowary` to `kasuari` crate reference by @j-g00da
in [#1765](https://github.com/ratatui/ratatui/pull/1765)

-
[f907c74](f907c74bb3)
_(license)_ Update copyright years by @LVivona in
[#1639](https://github.com/ratatui/ratatui/pull/1639)

  > Update MIT Licence to copyright year 2025

-
[68b9f67](68b9f67f59)
_(readme)_ Add `Built with Ratatui` badge for downstream projects by
@harilvfs in [#1905](https://github.com/ratatui/ratatui/pull/1905)

-
[088aac1](088aac136d)
_(readme)_ Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
_(readme)_ Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

> This is the result of the re-imagination of a more suitable README.md.
It
  > is simpler and shorter: not giving more information to the user than
  > they actually need.
  >
> Also updates the quickstart code with the up-to-date version and adds
  > link to templates which was missing.
  >
  > ***

-
[8f28247](8f282473b2)
_(readme)_ Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
_(readme)_ Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
_(readme)_ Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[8e5151f](8e5151f83d)
_(rect)_ Fix typo in the Rect::outer function comments by @orhun in
[#2123](https://github.com/ratatui/ratatui/pull/2123)

-
[40f13c6](40f13c6a6c)
_(rect)_ Update the outdated comment for Rect::area() by @eqsdxr in
[#2100](https://github.com/ratatui/ratatui/pull/2100)

> The return value of Rect.area() is no longer of u16 type, and the
value
  > is not being clumped anymore.

-
[ce16692](ce16692b9a)
_(release)_ Fix typo by @j-g00da in
[#1754](https://github.com/ratatui/ratatui/pull/1754)

-
[9a930a6](9a930a6e99)
_(terminal)_ Made usage of Terminal::get_frame() clearer by @Blaeriz in
[#2071](https://github.com/ratatui/ratatui/pull/2071)

  > Closes : https://github.com/ratatui/ratatui/issues/1200
  >
  > ***

-
[b08b4cb](b08b4cbd5e)
_(terminal)_ Add disclaimer about panics to Terminal::new by
@lolbinarycat in [#2088](https://github.com/ratatui/ratatui/pull/2088)

  > part of #2087
  >
  > cc @orhun
  >
  > ***

-
[dafb716](dafb716f9d)
_(widgets)_ Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

  > related #1512
  >
  > ***

-
[ed5dd73](ed5dd73084)
_(widgets)_ Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

  > related #1512
  >
> Also removes the tabs example from ratatui crate since it overlaps
with
> this new example in terms of functionality and it was not following
the
  > general theme of other examples.

-
[fab5321](fab532171d)
_(widgets)_ Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

  > Related to: #1512

-
[898aef6](898aef6e2f)
_(widgets)_ Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

  > Related to: #1512

-
[452366a](452366aa9e)
_(widgets)_ Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

  > related #1512
  >
> Also removes the sparkline example from ratatui crate since this
example
  > is a simplified and easier to understand version of that

-
[6ddde0e](6ddde0e8a8)
_(widgets)_ Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

  > related #1512

-
[93ad6b8](93ad6b828c)
_(widgets)_ Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

  > better stonks

-
[15f442a](15f442a71e)
_(widgets)_ Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

  > related #1512
  >
> Also removes the paragraph example from `ratatui` since these examples
  > are more or less the same.

-
[17bba14](17bba14540)
_(widgets)_ Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

  > related #1512
  >
  > Also updates the code to make it consistent with the other examples

-
[f2451e7](f2451e7f1e)
_(widgets)_ Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

  > related #1512

-
[4f0a8b2](4f0a8b21af)
_(widgets)_ Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

  > related #1512

-
[91147c4](91147c4d75)
_(widgets)_ Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

  > stonks

-
[6dd25a3](6dd25a3111)
_(widgets)_ Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

  > related #1512

-
[99ac005](99ac005b06)
_(widgets)_ Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[f8b0594](f8b0594363)
_(uncategorized)_ Fix: fix typos by @j-g00da in
[#2129](https://github.com/ratatui/ratatui/pull/2129)

  > This fixes the pipeline after bumping typos.

-
[9998000](9998000e36)
_(uncategorized)_ Use shields.io badge by @LitoMore in
[#2040](https://github.com/ratatui/ratatui/pull/2040)

  > Related to:
  >
  > - https://github.com/simple-icons/simple-icons/pull/13593
  > - https://github.com/ratatui/ratatui/pull/1967
  >
  > The Ratatui icon is available on shields.io now ✌️
  >
  > And it's customizable. There are more configurations at
  > https://shields.io/badges.
  >
  > Here are some examples:
  >
  > ```markdown
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
>
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)
>
![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)
  > ```
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
>
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)
  >
>
![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)
  >
> I also created a PR to the ratatui-website project to update the
badge.
  > Here is the PR:
  >
  > - https://github.com/ratatui/ratatui-website/pull/924

-
[71ef65b](71ef65b624)
_(uncategorized)_ Add section on collaborative development to
contributing doc by @joshka in
[#2029](https://github.com/ratatui/ratatui/pull/2029)

-
[cba5cca](cba5cca2bd)
_(uncategorized)_ Update heading image for Ratatui 0.30.0 release 🎉 by
@j-g00da in [#2000](https://github.com/ratatui/ratatui/pull/2000)

-
[9836f07](9836f0760d)
_(uncategorized)_ Add AI contribution guidelines by @joshka in
[#2013](https://github.com/ratatui/ratatui/pull/2013)

-
[98f85b8](98f85b8650)
_(uncategorized)_ Update link to scrollable widgets RFC by @MatrixFrog
in [#1994](https://github.com/ratatui/ratatui/pull/1994)

-
[055522e](055522ef7b)
_(uncategorized)_ Add docs for authoring widget crates by @j-g00da in
[#1955](https://github.com/ratatui/ratatui/pull/1955)

  > - added Authoring Widget Libraries sub-section
  > - moved built-in and third-party widgets sections higher

-
[617d318](617d31851a)
_(uncategorized)_ Improve Block docs by @joshka in
[#1953](https://github.com/ratatui/ratatui/pull/1953)

-
[8e2d568](8e2d568428)
_(uncategorized)_ Improve layout related docs by @joshka in
[#1948](https://github.com/ratatui/ratatui/pull/1948)

> Adds module level docs and more comprehensive docs on all the types in
  > the layout module
  >
  > Fixes #1937

-
[4c708dd](4c708ddf8a)
_(uncategorized)_ Improve docs for run/init/restore etc. by @joshka in
[#1947](https://github.com/ratatui/ratatui/pull/1947)

  > - **docs: document the init module**
  > - **docs: use the ratatui::run() methods in the main doc**
> - **docs: add more intradoc / website links and historical perspective
  >   on Terminal / backend**
  > - **docs: add notes about new run/init/restore methods and the
  >   defaultterminal type to terminal docs**

-
[5620e06](5620e06b1a)
_(uncategorized)_ Add crate organization sections to workspace by
@joshka in [#1946](https://github.com/ratatui/ratatui/pull/1946)

  > Adds summary-level crate organization documentation to all crates
> explaining the modular workspace structure and when to use each crate.
  > Links to ARCHITECTURE.md for detailed information.

-
[cfb65e6](cfb65e64ba)
_(uncategorized)_ Add examples for handling state by @joshka in
[#1849](https://github.com/ratatui/ratatui/pull/1849)

> Added comprehensive state management examples covering both immutable
  > and mutable patterns and documentation to help developers choose the
  > right approach for their applications.

-
[3de41a8](3de41a8249)
_(uncategorized)_ Document widgets module by @joshka in
[#1932](https://github.com/ratatui/ratatui/pull/1932)

  > Adds a good overview of the use and implementation of widget traits.
  >
  > Goals with the doc rewrite:
  >
> - document the rationale for the ratatui-widgets crate with info for
app
  >   builders and widget makers.
  > - Show how to use the widgets for rendering as well as implement the
  >   traits- document the differences and reasons for each trait
  > - document the historical perspective (to make it easy to understand
  >   older Ratatui apps as well as migrate to newer approaches
  > - give recommended approaches to implementing traits
  > - explain the differences between Consuming and Shared / Mutable
  >   Reference implementations of Widget
  > - explain the differences between using StatefulWidget and Mutable
  >   References
  > - Explain the use case for WidgetRef and StatefulWidgetRef
  > - Link out to third part widget lists
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/366
  >
  > ***

-
[ca2ad4a](ca2ad4a1f9)
_(uncategorized)_ Simplify ratatui-macro docs by @joshka in
[#1923](https://github.com/ratatui/ratatui/pull/1923)

-
[92b6a16](92b6a16bde)
_(uncategorized)_ Fix grammar in ratatui-widgets README by @sevki in
[#1885](https://github.com/ratatui/ratatui/pull/1885)

-
[da05957](da05957fa0)
_(uncategorized)_ Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

  > Implements ideas alluded to

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-12-23 21:45:05 +03:00
dependabot[bot]
1f7efe9d86 build(deps): bump dtolnay/rust-toolchain from 0b1efabc08b657293548b77fb76cc02d26091c7e to f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 (#2281)
Bumps
[dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from
0b1efabc08b657293548b77fb76cc02d26091c7e to
f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f7ccc83f9e"><code>f7ccc83</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/rust-toolchain/issues/177">#177</a>
from dtolnay/permitcopyrename</li>
<li><a
href="1c0547fbe5"><code>1c0547f</code></a>
Permit cross-device copy</li>
<li>See full diff in <a
href="0b1efabc08...f7ccc83f9e">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 18:49:46 +03:00
dependabot[bot]
fbd560a0c8 build(deps): bump taiki-e/install-action from 2.63.3 to 2.65.1 (#2282)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.63.3 to 2.65.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.65.1</h2>
<ul>
<li>
<p>Update <code>tombi@latest</code> to 0.7.9.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.21.6.</p>
</li>
<li>
<p>Update <code>prek@latest</code> to 0.2.23.</p>
</li>
</ul>
<h2>2.65.0</h2>
<ul>
<li>
<p>Support <code>cargo-insta</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1372">#1372</a>,
thanks <a
href="https://github.com/CommanderStorm"><code>@​CommanderStorm</code></a>)</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.21.2.</p>
</li>
</ul>
<h2>2.64.2</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.19.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.12.</p>
</li>
</ul>
<h2>2.64.1</h2>
<ul>
<li>
<p>Update <code>tombi@latest</code> to 0.7.8.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.11.</p>
</li>
</ul>
<h2>2.64.0</h2>
<ul>
<li>
<p><code>tool</code> input option now supports whitespace (space, tab,
and line) or comma separated list. Previously, only comma-separated list
was supported. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1366">#1366</a>)</p>
</li>
<li>
<p>Support <code>prek</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1357">#1357</a>,
thanks <a href="https://github.com/j178"><code>@​j178</code></a>)</p>
</li>
<li>
<p>Support <code>mdbook-mermaid</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1359">#1359</a>,
thanks <a
href="https://github.com/CommanderStorm"><code>@​CommanderStorm</code></a>)</p>
</li>
<li>
<p>Support <code>martin</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1364">#1364</a>,
thanks <a
href="https://github.com/CommanderStorm"><code>@​CommanderStorm</code></a>)</p>
</li>
<li>
<p>Update <code>trivy@latest</code> to 0.68.2.</p>
</li>
<li>
<p>Update <code>xh@latest</code> to 0.25.3.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.10.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.18.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.9.1.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.65.1] - 2025-12-21</h2>
<ul>
<li>
<p>Update <code>tombi@latest</code> to 0.7.9.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.21.6.</p>
</li>
<li>
<p>Update <code>prek@latest</code> to 0.2.23.</p>
</li>
</ul>
<h2>[2.65.0] - 2025-12-20</h2>
<ul>
<li>
<p>Support <code>cargo-insta</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1372">#1372</a>,
thanks <a
href="https://github.com/CommanderStorm"><code>@​CommanderStorm</code></a>)</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.21.2.</p>
</li>
</ul>
<h2>[2.64.2] - 2025-12-19</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.19.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.12.</p>
</li>
</ul>
<h2>[2.64.1] - 2025-12-18</h2>
<ul>
<li>
<p>Update <code>tombi@latest</code> to 0.7.8.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.11.</p>
</li>
</ul>
<h2>[2.64.0] - 2025-12-17</h2>
<ul>
<li>
<p><code>tool</code> input option now supports whitespace (space, tab,
and line) or comma separated list. Previously, only comma-separated list
was supported. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1366">#1366</a>)</p>
</li>
<li>
<p>Support <code>prek</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1357">#1357</a>,
thanks <a href="https://github.com/j178"><code>@​j178</code></a>)</p>
</li>
<li>
<p>Support <code>mdbook-mermaid</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1359">#1359</a>,
thanks <a
href="https://github.com/CommanderStorm"><code>@​CommanderStorm</code></a>)</p>
</li>
<li>
<p>Support <code>martin</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1364">#1364</a>,
thanks <a
href="https://github.com/CommanderStorm"><code>@​CommanderStorm</code></a>)</p>
</li>
<li>
<p>Update <code>trivy@latest</code> to 0.68.2.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9c5db3aef"><code>b9c5db3</code></a>
Release 2.65.1</li>
<li><a
href="7796c0f3bb"><code>7796c0f</code></a>
Update changelog</li>
<li><a
href="f071f24b17"><code>f071f24</code></a>
Update <code>tombi@latest</code> to 0.7.9</li>
<li><a
href="874ad32436"><code>874ad32</code></a>
Update <code>vacuum@latest</code> to 0.21.6</li>
<li><a
href="51bd7eff06"><code>51bd7ef</code></a>
Update <code>vacuum@latest</code> to 0.21.5</li>
<li><a
href="e3a472337e"><code>e3a4723</code></a>
Update <code>prek@latest</code> to 0.2.23</li>
<li><a
href="bfc291e1e3"><code>bfc291e</code></a>
Release 2.65.0</li>
<li><a
href="4620a85cf9"><code>4620a85</code></a>
Update changelog</li>
<li><a
href="09980ef8ed"><code>09980ef</code></a>
Support <code>cargo-insta</code> (<a
href="https://redirect.github.com/taiki-e/install-action/issues/1372">#1372</a>)</li>
<li><a
href="e6fc9bc5a6"><code>e6fc9bc</code></a>
Update <code>vacuum@latest</code> to 0.21.2</li>
<li>Additional commits viewable in <a
href="d850aa8169...b9c5db3aef">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.63.3&new-version=2.65.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 18:49:21 +03:00
dependabot[bot]
44957543c5 build(deps): bump serde_json from 1.0.145 to 1.0.146 (#2284)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.145 to
1.0.146.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.146</h2>
<ul>
<li>Set fast_arithmetic=64 for riscv64 (<a
href="https://redirect.github.com/serde-rs/json/issues/1305">#1305</a>,
thanks <a
href="https://github.com/Xeonacid"><code>@​Xeonacid</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="75ad7e6b4e"><code>75ad7e6</code></a>
Release 1.0.146</li>
<li><a
href="bc6c8276d9"><code>bc6c827</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1305">#1305</a>
from Xeonacid/patch-1</li>
<li><a
href="a09210adf5"><code>a09210a</code></a>
Set fast_arithmetic=64 for riscv64</li>
<li><a
href="01182e54b5"><code>01182e5</code></a>
Update actions/upload-artifact@v5 -&gt; v6</li>
<li><a
href="383b13a45f"><code>383b13a</code></a>
Update actions/upload-artifact@v4 -&gt; v5</li>
<li><a
href="04dd357b99"><code>04dd357</code></a>
Raise required compiler to Rust 1.68</li>
<li><a
href="e047dfbe00"><code>e047dfb</code></a>
Resolve manual_let_else pedantic clippy lint</li>
<li><a
href="a525d9c0c0"><code>a525d9c</code></a>
Raise required compiler to Rust 1.65</li>
<li><a
href="f815793bfd"><code>f815793</code></a>
Remove rustc version badge from readme</li>
<li><a
href="3f17d2c6ea"><code>3f17d2c</code></a>
Update actions/checkout@v5 -&gt; v6</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/json/compare/v1.0.145...v1.0.146">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.145&new-version=1.0.146)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-12-22 18:43:38 +03:00
dependabot[bot]
a8d8afe101 build(deps): bump tracing from 0.1.43 to 0.1.44 (#2283)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.43 to
0.1.44.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tracing/releases">tracing's
releases</a>.</em></p>
<blockquote>
<h2>tracing 0.1.44</h2>
<h3>Fixed</h3>
<ul>
<li>Fix <code>record_all</code> panic (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>tracing-core</code>: updated to 0.1.36 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3440">#3440</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3432">tokio-rs/tracing#3432</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3440">#3440</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3440">tokio-rs/tracing#3440</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2d55f6faf9"><code>2d55f6f</code></a>
chore: prepare tracing 0.1.44 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3439">#3439</a>)</li>
<li><a
href="10a9e838a3"><code>10a9e83</code></a>
chore: prepare tracing-core 0.1.36 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3440">#3440</a>)</li>
<li><a
href="ee82cf92a8"><code>ee82cf9</code></a>
tracing: fix record_all panic (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3432">#3432</a>)</li>
<li><a
href="9978c3663b"><code>9978c36</code></a>
chore: prepare tracing-mock 0.1.0-beta.3 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3429">#3429</a>)</li>
<li><a
href="cc44064b3a"><code>cc44064</code></a>
chore: prepare tracing-subscriber 0.3.22 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3428">#3428</a>)</li>
<li>See full diff in <a
href="https://github.com/tokio-rs/tracing/compare/tracing-0.1.43...tracing-0.1.44">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing&package-manager=cargo&previous-version=0.1.43&new-version=0.1.44)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 18:43:04 +03:00
dependabot[bot]
664b79404b build(deps): bump octocrab from 0.48.1 to 0.49.2 (#2285)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.48.1 to
0.49.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.49.2</h2>
<h3>Added</h3>
<ul>
<li>Add body_text and body_html to Comment model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/832">#832</a>)</li>
</ul>
<h2>v0.49.1</h2>
<h3>Added</h3>
<ul>
<li>provide expiration-aware installation token APIs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/837">#837</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Send body for retried requests (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/842">#842</a>)</li>
</ul>
<h2>v0.49.0</h2>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] add a cfg to make the crypto backend for
jwt configurable (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/834">#834</a>)</li>
<li>incorrect path for followers and followees (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/829">#829</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>fix various warnings in CI and deny warnings being reintroduced (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/839">#839</a>)</li>
<li>[<strong>breaking</strong>] mark more structs as
<code>#[non_exhaustive]</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/840">#840</a>)</li>
<li>Partial implementation of Organization CoPilot APIs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/747">#747</a>)</li>
<li>[codes-of-conduct] <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/527">#527</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/833">#833</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.49.1...v0.49.2">0.49.2</a>
- 2025-12-20</h2>
<h3>Added</h3>
<ul>
<li>Add body_text and body_html to Comment model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/832">#832</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.49.0...v0.49.1">0.49.1</a>
- 2025-12-20</h2>
<h3>Added</h3>
<ul>
<li>provide expiration-aware installation token APIs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/837">#837</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Send body for retried requests (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/842">#842</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.48.1...v0.49.0">0.49.0</a>
- 2025-12-19</h2>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] add a cfg to make the crypto backend for
jwt configurable (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/834">#834</a>)</li>
<li>incorrect path for followers and followees (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/829">#829</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>fix various warnings in CI and deny warnings being reintroduced (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/839">#839</a>)</li>
<li>[<strong>breaking</strong>] mark more structs as
<code>#[non_exhaustive]</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/840">#840</a>)</li>
<li>Partial implementation of Organization CoPilot APIs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/747">#747</a>)</li>
<li>[codes-of-conduct] <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/527">#527</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/833">#833</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="927105dffe"><code>927105d</code></a>
chore: release v0.49.2 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/843">#843</a>)</li>
<li><a
href="90f9139b85"><code>90f9139</code></a>
feat: Add body_text and body_html to Comment model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/832">#832</a>)</li>
<li><a
href="4fce8e0221"><code>4fce8e0</code></a>
chore: release v0.49.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/841">#841</a>)</li>
<li><a
href="5ce8559748"><code>5ce8559</code></a>
fix: Send body for retried requests (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/842">#842</a>)</li>
<li><a
href="c8b8228529"><code>c8b8228</code></a>
feat: provide expiration-aware installation token APIs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/837">#837</a>)</li>
<li><a
href="c554baad27"><code>c554baa</code></a>
chore: release v0.49.0 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/838">#838</a>)</li>
<li><a
href="3d8d846dfa"><code>3d8d846</code></a>
fix!: add a cfg to make the crypto backend for jwt configurable (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/834">#834</a>)</li>
<li><a
href="8e4624a30c"><code>8e4624a</code></a>
chore: fix various warnings in CI and deny warnings being reintroduced
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/839">#839</a>)</li>
<li><a
href="60878beec7"><code>60878be</code></a>
chore!: mark more structs as <code>#[non_exhaustive]</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/840">#840</a>)</li>
<li><a
href="2c49ae4050"><code>2c49ae4</code></a>
Partial implementation of Organization CoPilot APIs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/747">#747</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.48.1...v0.49.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.48.1&new-version=0.49.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 18:42:41 +03:00
dependabot[bot]
f9c6093b66 build(deps): bump fakeit from 1.4.0 to 1.4.1 (#2286)
Bumps [fakeit](https://github.com/PumpkinSeed/fakeit) from 1.4.0 to
1.4.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="352e9939c0"><code>352e993</code></a>
Bump version</li>
<li><a
href="7c4b0be098"><code>7c4b0be</code></a>
Merge pull request <a
href="https://redirect.github.com/PumpkinSeed/fakeit/issues/38">#38</a>
from scriptnetsthlm/master</li>
<li><a
href="551b15999b"><code>551b159</code></a>
Update gender function to include female</li>
<li>See full diff in <a
href="https://github.com/PumpkinSeed/fakeit/compare/v1.4.0...v1.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fakeit&package-manager=cargo&previous-version=1.4.0&new-version=1.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-22 18:42:11 +03:00
Orhun Parmaksız
b7ecef086d chore: expose crossterm 0.28/0.29 feature flags in Ratatui (#2270)
In docs we currently say that individual versions of crossterm could be
enabled like this:

```toml
ratatui = { version = "0.30.0-beta", features = ["crossterm_0_28"] }
```

However this wasn't actually possible:

```
package `x` depends on `ratatui` with feature `crossterm_0_28` but `ratatui` does not have that feature.

failed to select a version for `ratatui` which could resolve this conflict
```

This PR fixes that by exposing respective feature flags.
(Tested locally)

---------

Co-authored-by: Jagoda Estera Ślązak <128227338+j-g00da@users.noreply.github.com>
2025-12-16 11:23:50 +03:00
dependabot[bot]
38f7ee2049 build(deps): bump DavidAnson/markdownlint-cli2-action from 21.0.0 to 22.0.0 (#2273)
Bumps
[DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action)
from 21.0.0 to 22.0.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="07035fd053"><code>07035fd</code></a>
Update to version 22.0.0.</li>
<li><a
href="d74d6a504e"><code>d74d6a5</code></a>
Freshen generated index.js file.</li>
<li><a
href="ecaf45cd0e"><code>ecaf45c</code></a>
Bump markdownlint-cli2 from 0.19.1 to 0.20.0</li>
<li><a
href="e4bf40dee6"><code>e4bf40d</code></a>
Freshen generated index.js file.</li>
<li><a
href="ae047c4d45"><code>ae047c4</code></a>
Bump markdownlint-cli2 from 0.19.0 to 0.19.1</li>
<li><a
href="db7ea3f7fb"><code>db7ea3f</code></a>
Bump actions/checkout from 5 to 6</li>
<li><a
href="bfd3fdc8e2"><code>bfd3fdc</code></a>
Bump <code>@​stylistic/eslint-plugin</code> from 5.6.0 to 5.6.1</li>
<li><a
href="43dc18c80b"><code>43dc18c</code></a>
Bump <code>@​stylistic/eslint-plugin</code> from 5.5.0 to 5.6.0</li>
<li>See full diff in <a
href="30a0e04f18...07035fd053">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=DavidAnson/markdownlint-cli2-action&package-manager=github_actions&previous-version=21.0.0&new-version=22.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-15 18:45:48 +03:00
dependabot[bot]
87a382f0e7 build(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2 (#2272)
Bumps
[codecov/codecov-action](https://github.com/codecov/codecov-action) from
5.5.1 to 5.5.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/releases">codecov/codecov-action's
releases</a>.</em></p>
<blockquote>
<h2>v5.5.2</h2>
<h2>What's Changed</h2>
<ul>
<li>check gpg only when skip-validation = false by <a
href="https://github.com/maxweng-sentry"><code>@​maxweng-sentry</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1894">codecov/codecov-action#1894</a></li>
<li>chore: <code>disable_search</code> alignment by <a
href="https://github.com/freemanzMrojo"><code>@​freemanzMrojo</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1881">codecov/codecov-action#1881</a></li>
<li>chore(release): 5.5.2 by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1902">codecov/codecov-action#1902</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/maxweng-sentry"><code>@​maxweng-sentry</code></a>
made their first contribution in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1894">codecov/codecov-action#1894</a></li>
<li><a
href="https://github.com/freemanzMrojo"><code>@​freemanzMrojo</code></a>
made their first contribution in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1881">codecov/codecov-action#1881</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.5.1...v5.5.2">https://github.com/codecov/codecov-action/compare/v5.5.1...v5.5.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md">codecov/codecov-action's
changelog</a>.</em></p>
<blockquote>
<h2>v5.5.2</h2>
<h3>What's Changed</h3>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.5.1..v5.5.2">https://github.com/codecov/codecov-action/compare/v5.5.1..v5.5.2</a></p>
<h2>v5.5.1</h2>
<h3>What's Changed</h3>
<ul>
<li>fix: overwrite pr number on fork by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1871">codecov/codecov-action#1871</a></li>
<li>build(deps): bump actions/checkout from 4.2.2 to 5.0.0 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1868">codecov/codecov-action#1868</a></li>
<li>build(deps): bump github/codeql-action from 3.29.9 to 3.29.11 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1867">codecov/codecov-action#1867</a></li>
<li>fix: update to use local app/ dir by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1872">codecov/codecov-action#1872</a></li>
<li>docs: fix typo in README by <a
href="https://github.com/datalater"><code>@​datalater</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1866">codecov/codecov-action#1866</a></li>
<li>Document a <code>codecov-cli</code> version reference example by <a
href="https://github.com/webknjaz"><code>@​webknjaz</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1774">codecov/codecov-action#1774</a></li>
<li>build(deps): bump github/codeql-action from 3.28.18 to 3.29.9 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1861">codecov/codecov-action#1861</a></li>
<li>build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1833">codecov/codecov-action#1833</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.5.0..v5.5.1">https://github.com/codecov/codecov-action/compare/v5.5.0..v5.5.1</a></p>
<h2>v5.5.0</h2>
<h3>What's Changed</h3>
<ul>
<li>feat: upgrade wrapper to 0.2.4 by <a
href="https://github.com/jviall"><code>@​jviall</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1864">codecov/codecov-action#1864</a></li>
<li>Pin actions/github-script by Git SHA by <a
href="https://github.com/martincostello"><code>@​martincostello</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1859">codecov/codecov-action#1859</a></li>
<li>fix: check reqs exist by <a
href="https://github.com/joseph-sentry"><code>@​joseph-sentry</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1835">codecov/codecov-action#1835</a></li>
<li>fix: Typo in README by <a
href="https://github.com/spalmurray"><code>@​spalmurray</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1838">codecov/codecov-action#1838</a></li>
<li>docs: Refine OIDC docs by <a
href="https://github.com/spalmurray"><code>@​spalmurray</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1837">codecov/codecov-action#1837</a></li>
<li>build(deps): bump github/codeql-action from 3.28.17 to 3.28.18 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1829">codecov/codecov-action#1829</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.4.3..v5.5.0">https://github.com/codecov/codecov-action/compare/v5.4.3..v5.5.0</a></p>
<h2>v5.4.3</h2>
<h3>What's Changed</h3>
<ul>
<li>build(deps): bump github/codeql-action from 3.28.13 to 3.28.17 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1822">codecov/codecov-action#1822</a></li>
<li>fix: OIDC on forks by <a
href="https://github.com/joseph-sentry"><code>@​joseph-sentry</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1823">codecov/codecov-action#1823</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.4.2..v5.4.3">https://github.com/codecov/codecov-action/compare/v5.4.2..v5.4.3</a></p>
<h2>v5.4.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="671740ac38"><code>671740a</code></a>
chore(release): 5.5.2 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1902">#1902</a>)</li>
<li><a
href="96b38e9e60"><code>96b38e9</code></a>
chore: <code>disable_search</code> alignment (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1881">#1881</a>)</li>
<li><a
href="9b6d1f84bd"><code>9b6d1f8</code></a>
check gpg only when skip-validation = false (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1894">#1894</a>)</li>
<li>See full diff in <a
href="5a1091511a...671740ac38">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=5.5.1&new-version=5.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-15 18:45:12 +03:00
dependabot[bot]
4367bb45a1 build(deps): bump taiki-e/install-action from 2.62.63 to 2.63.3 (#2271)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.63 to 2.63.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.63.3</h2>
<ul>
<li>Update <code>cargo-nextest@latest</code> to 0.9.115.</li>
</ul>
<h2>2.63.2</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.12.7.</p>
</li>
<li>
<p>Update <code>git-cliff@latest</code> to 2.11.0.</p>
</li>
<li>
<p>Update <code>coreutils@latest</code> to 0.5.0.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.4.</p>
</li>
</ul>
<h2>2.63.1</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.12.5.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.9.0.</p>
</li>
</ul>
<h2>2.63.0</h2>
<ul>
<li>
<p>Support <code>tombi</code> (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1340">#1340</a>,
thanks <a
href="https://github.com/crepererum"><code>@​crepererum</code></a>)</p>
</li>
<li>
<p>Update <code>cargo-dinghy@latest</code> to 0.8.4.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.2.</p>
</li>
<li>
<p>Update <code>mdbook@latest</code> to 0.5.2.</p>
</li>
</ul>
<h2>2.62.67</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.5.</p>
</li>
<li>
<p>Update <code>rclone@latest</code> to 1.72.1.</p>
</li>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.3.1.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.45.0.</p>
</li>
</ul>
<h2>2.62.66</h2>
<ul>
<li>
<p>Update <code>uv@latest</code> to 0.9.17.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.38.2.</p>
</li>
</ul>
<h2>2.62.65</h2>
<ul>
<li>
<p>Update <code>cyclonedx@latest</code> to 0.29.2.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.44.1.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.7.2.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.1.</p>
</li>
</ul>
<h2>2.62.64</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.63.3] - 2025-12-15</h2>
<ul>
<li>Update <code>cargo-nextest@latest</code> to 0.9.115.</li>
</ul>
<h2>[2.63.2] - 2025-12-15</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.12.7.</p>
</li>
<li>
<p>Update <code>git-cliff@latest</code> to 2.11.0.</p>
</li>
<li>
<p>Update <code>coreutils@latest</code> to 0.5.0.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.4.</p>
</li>
</ul>
<h2>[2.63.1] - 2025-12-14</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.12.5.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.9.0.</p>
</li>
</ul>
<h2>[2.63.0] - 2025-12-12</h2>
<ul>
<li>
<p>Support <code>tombi</code> (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1340">#1340</a>,
thanks <a
href="https://github.com/crepererum"><code>@​crepererum</code></a>)</p>
</li>
<li>
<p>Update <code>cargo-dinghy@latest</code> to 0.8.4.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.2.</p>
</li>
<li>
<p>Update <code>mdbook@latest</code> to 0.5.2.</p>
</li>
</ul>
<h2>[2.62.67] - 2025-12-11</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.5.</p>
</li>
<li>
<p>Update <code>rclone@latest</code> to 1.72.1.</p>
</li>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.3.1.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d850aa8169"><code>d850aa8</code></a>
Release 2.63.3</li>
<li><a
href="4e27f4eba3"><code>4e27f4e</code></a>
Update <code>cargo-nextest@latest</code> to 0.9.115</li>
<li><a
href="5818d9684d"><code>5818d96</code></a>
Release 2.63.2</li>
<li><a
href="9935da0ea5"><code>9935da0</code></a>
Update changelog</li>
<li><a
href="3396925d74"><code>3396925</code></a>
Update <code>mise@latest</code> to 2025.12.7</li>
<li><a
href="4563b68018"><code>4563b68</code></a>
Update <code>mise@latest</code> to 2025.12.6</li>
<li><a
href="bb9926ecd3"><code>bb9926e</code></a>
Update <code>git-cliff@latest</code> to 2.11.0</li>
<li><a
href="68c369b718"><code>68c369b</code></a>
Update <code>coreutils@latest</code> to 0.5.0</li>
<li><a
href="2afaa0138a"><code>2afaa01</code></a>
Update <code>cargo-binstall@latest</code> to 1.16.4</li>
<li><a
href="61e5998d10"><code>61e5998</code></a>
Release 2.63.1</li>
<li>Additional commits viewable in <a
href="50708e9ba8...d850aa8169">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.63&new-version=2.63.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-15 18:44:46 +03:00
三咲雅 misaki masa
bf84c6229b feat(core): Add a has_modifier() method to Style (#2267)
Resolves https://github.com/ratatui/ratatui/issues/2264
2025-12-13 14:07:45 -08:00
dependabot[bot]
3bdb9fe982 build(deps): bump release-plz/action from 0.5.119 to 0.5.120 (#2254)
Bumps [release-plz/action](https://github.com/release-plz/action) from
0.5.119 to 0.5.120.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-plz/action/releases">release-plz/action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.120</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.150 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/232">release-plz/action#232</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.120">https://github.com/release-plz/action/compare/v0.5...v0.5.120</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="487eb7b5c0"><code>487eb7b</code></a>
Update to 0.3.150 (<a
href="https://redirect.github.com/release-plz/action/issues/232">#232</a>)</li>
<li>See full diff in <a
href="1efcf74dfc...487eb7b5c0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-plz/action&package-manager=github_actions&previous-version=0.5.119&new-version=0.5.120)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:58:07 +03:00
dependabot[bot]
2163fd5a2c build(deps): bump actions/checkout from 6.0.0 to 6.0.1 (#2255)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0
to 6.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update all references from v5 and v4 to v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2314">actions/checkout#2314</a></li>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
<li>Clarify v6 README by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2328">actions/checkout#2328</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6...v6.0.1">https://github.com/actions/checkout/compare/v6...v6.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8e8c483db8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="033fa0dc0b"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="c2d88d3ecc"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li>See full diff in <a
href="1af3b93b68...8e8c483db8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=6.0.0&new-version=6.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:57:50 +03:00
dependabot[bot]
645cd55ed2 build(deps): bump taiki-e/install-action from 2.62.61 to 2.62.63 (#2256)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.61 to 2.62.63.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.63</h2>
<ul>
<li>
<p>Update <code>protoc@latest</code> to 3.33.2.</p>
</li>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.150.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.3.</p>
</li>
<li>
<p>Update <code>knope@latest</code> to 0.21.7.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.0.</p>
</li>
</ul>
<h2>2.62.62</h2>
<ul>
<li>
<p>Update <code>cargo-deny@latest</code> to 0.18.8.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.7.1.</p>
</li>
<li>
<p>Update <code>trivy@latest</code> to 0.68.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.15.</p>
</li>
<li>
<p>Update <code>knope@latest</code> to 0.21.6.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>
<p>Update <code>just@latest</code> to 1.44.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.16.</p>
</li>
</ul>
<h2>[2.62.63] - 2025-12-06</h2>
<ul>
<li>
<p>Update <code>protoc@latest</code> to 3.33.2.</p>
</li>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.150.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.3.</p>
</li>
<li>
<p>Update <code>knope@latest</code> to 0.21.7.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.12.0.</p>
</li>
</ul>
<h2>[2.62.62] - 2025-12-03</h2>
<ul>
<li>
<p>Update <code>cargo-deny@latest</code> to 0.18.8.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.7.1.</p>
</li>
<li>
<p>Update <code>trivy@latest</code> to 0.68.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.15.</p>
</li>
<li>
<p>Update <code>knope@latest</code> to 0.21.6.</p>
</li>
</ul>
<h2>[2.62.61] - 2025-12-02</h2>
<ul>
<li>
<p>Update <code>cargo-deny@latest</code> to 0.18.7.</p>
</li>
<li>
<p>Update <code>cargo-careful@latest</code> to 0.4.9.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.14.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.4.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="50708e9ba8"><code>50708e9</code></a>
Release 2.62.63</li>
<li><a
href="608cb5db93"><code>608cb5d</code></a>
Update <code>protoc@latest</code> to 3.33.2</li>
<li><a
href="813a6b3dc6"><code>813a6b3</code></a>
Update <code>release-plz@latest</code> to 0.3.150</li>
<li><a
href="643883d80b"><code>643883d</code></a>
Update <code>cargo-binstall@latest</code> to 1.16.3</li>
<li><a
href="3a82a98e89"><code>3a82a98</code></a>
Update <code>knope@latest</code> to 0.21.7</li>
<li><a
href="b24d319e09"><code>b24d319</code></a>
Update <code>mise@latest</code> to 2025.12.0</li>
<li><a
href="493d7f216e"><code>493d7f2</code></a>
Release 2.62.62</li>
<li><a
href="0c6fcb01be"><code>0c6fcb0</code></a>
Update <code>cargo-deny@latest</code> to 0.18.8</li>
<li><a
href="e8101c18b1"><code>e8101c1</code></a>
Tweak docs</li>
<li><a
href="c8c9b5bb95"><code>c8c9b5b</code></a>
tools: Update scripts</li>
<li>Additional commits viewable in <a
href="92e6dd1c20...50708e9ba8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.61&new-version=2.62.63)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:57:19 +03:00
dependabot[bot]
28d80365d6 build(deps): bump octocrab from 0.48.0 to 0.48.1 (#2258)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.48.0 to
0.48.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.48.1</h2>
<h3>Fixed</h3>
<ul>
<li><em>(build)</em> don't fetch dependencies (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/828">#828</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.48.0...v0.48.1">0.48.1</a>
- 2025-12-02</h2>
<h3>Fixed</h3>
<ul>
<li><em>(build)</em> don't fetch dependencies (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/828">#828</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d381cc09db"><code>d381cc0</code></a>
chore: release v0.48.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/830">#830</a>)</li>
<li><a
href="41162f3dc1"><code>41162f3</code></a>
fix(build): don't fetch dependencies (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/828">#828</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.48.0...v0.48.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.48.0&new-version=0.48.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:56:27 +03:00
dependabot[bot]
c52de1a926 build(deps): bump tracing-appender from 0.2.3 to 0.2.4 (#2259)
Bumps [tracing-appender](https://github.com/tokio-rs/tracing) from 0.2.3
to 0.2.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tracing/releases">tracing-appender's
releases</a>.</em></p>
<blockquote>
<h2>tracing-appender 0.2.4</h2>
<h3>Added</h3>
<ul>
<li>Prune old files at startup (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/2966">#2966</a>)</li>
<li>Add fallback to file creation date (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3000">#3000</a>)</li>
<li>Introduce weekly rotation (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3218">#3218</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix <code>max_files</code> integer underflow when set to zero (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3348">#3348</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>Update tracing-appender docs link to correct docs.rs URL (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3325">#3325</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/2966">#2966</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#2966%5D(https://redirect.github.com/tokio-rs/tracing/issues/2966)">tokio-rs/tracing#2966</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3000">#3000</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3000%5D(https://redirect.github.com/tokio-rs/tracing/issues/3000)">tokio-rs/tracing#3000</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3218">#3218</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3218%5D(https://redirect.github.com/tokio-rs/tracing/issues/3218)">tokio-rs/tracing#3218</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3325">#3325</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3325%5D(https://redirect.github.com/tokio-rs/tracing/issues/3325)">tokio-rs/tracing#3325</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3348">#3348</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3348%5D(https://redirect.github.com/tokio-rs/tracing/issues/3348)">tokio-rs/tracing#3348</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="405397b8cc"><code>405397b</code></a>
chore: prepare tracing-appender 0.2.4 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3420">#3420</a>)</li>
<li><a
href="a9eeed7394"><code>a9eeed7</code></a>
chore: prepare tracing-subscriber 0.3.21 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3419">#3419</a>)</li>
<li><a
href="5bd5505478"><code>5bd5505</code></a>
chore: prepare tracing 0.1.42 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3418">#3418</a>)</li>
<li><a
href="55086231ec"><code>5508623</code></a>
chore: prepare tracing-attributes 0.1.31 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3417">#3417</a>)</li>
<li><a
href="d92b4c0feb"><code>d92b4c0</code></a>
chore: prepare tracing-core 0.1.35 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3414">#3414</a>)</li>
<li><a
href="9751b6e776"><code>9751b6e</code></a>
chore: run <code>tracing-subscriber</code> tests with all features (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3412">#3412</a>)</li>
<li><a
href="efa0169b43"><code>efa0169</code></a>
mock: add doctests for <code>on_register_dispatch</code> negative cases
(<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3416">#3416</a>)</li>
<li><a
href="a093858f38"><code>a093858</code></a>
docs: fix link in <code>FmtSpan</code> docs (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3411">#3411</a>)</li>
<li><a
href="976fa55e2a"><code>976fa55</code></a>
mock: add test case for layer not calling on_register_dispatch (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3415">#3415</a>)</li>
<li><a
href="8bc008c5f0"><code>8bc008c</code></a>
fix(subscriber): make Layered propagate on_register_dispatch (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3379">#3379</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tracing/compare/tracing-appender-0.2.3...tracing-appender-0.2.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing-appender&package-manager=cargo&previous-version=0.2.3&new-version=0.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:56:03 +03:00
dependabot[bot]
e338795396 build(deps): bump line-clipping from 0.3.4 to 0.3.5 (#2260)
Bumps [line-clipping](https://github.com/joshka/line-clipping) from
0.3.4 to 0.3.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/joshka/line-clipping/releases">line-clipping's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.5</h2>
<h3>Other</h3>
<ul>
<li>use trusted-publising (<a
href="https://redirect.github.com/joshka/line-clipping/pull/24">#24</a>)</li>
<li>set edition 2024 and msrv 1.85 (<a
href="https://redirect.github.com/joshka/line-clipping/pull/23">#23</a>)</li>
<li><em>(deps)</em> bump actions/checkout in the github-actions group
(<a
href="https://redirect.github.com/joshka/line-clipping/pull/22">#22</a>)</li>
<li><em>(deps)</em> bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/21">#21</a>)</li>
<li><em>(deps)</em> bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/18">#18</a>)</li>
<li>fix clippy install (<a
href="https://redirect.github.com/joshka/line-clipping/pull/19">#19</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/joshka/line-clipping/blob/main/CHANGELOG.md">line-clipping's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/joshka/line-clipping/compare/v0.3.4...v0.3.5">0.3.5</a>
- 2025-11-29</h2>
<h3>Other</h3>
<ul>
<li>use trusted-publising (<a
href="https://redirect.github.com/joshka/line-clipping/pull/24">#24</a>)</li>
<li>set edition 2024 and msrv 1.85 (<a
href="https://redirect.github.com/joshka/line-clipping/pull/23">#23</a>)</li>
<li><em>(deps)</em> bump actions/checkout in the github-actions group
(<a
href="https://redirect.github.com/joshka/line-clipping/pull/22">#22</a>)</li>
<li><em>(deps)</em> bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/21">#21</a>)</li>
<li><em>(deps)</em> bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/18">#18</a>)</li>
<li>fix clippy install (<a
href="https://redirect.github.com/joshka/line-clipping/pull/19">#19</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="edf70705ae"><code>edf7070</code></a>
chore: release v0.3.5 (<a
href="https://redirect.github.com/joshka/line-clipping/issues/20">#20</a>)</li>
<li><a
href="64af0944e9"><code>64af094</code></a>
chore: use trusted-publising (<a
href="https://redirect.github.com/joshka/line-clipping/issues/24">#24</a>)</li>
<li><a
href="3a88318f99"><code>3a88318</code></a>
chore: set edition 2024 and msrv 1.85 (<a
href="https://redirect.github.com/joshka/line-clipping/issues/23">#23</a>)</li>
<li><a
href="180f3a1952"><code>180f3a1</code></a>
build(deps): bump actions/checkout in the github-actions group (<a
href="https://redirect.github.com/joshka/line-clipping/issues/22">#22</a>)</li>
<li><a
href="4e5cf3b954"><code>4e5cf3b</code></a>
build(deps): bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/issues/21">#21</a>)</li>
<li><a
href="b7808bc2e0"><code>b7808bc</code></a>
build(deps): bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/issues/18">#18</a>)</li>
<li><a
href="ffead4fad2"><code>ffead4f</code></a>
ci: fix clippy install (<a
href="https://redirect.github.com/joshka/line-clipping/issues/19">#19</a>)</li>
<li>See full diff in <a
href="https://github.com/joshka/line-clipping/compare/v0.3.4...v0.3.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=line-clipping&package-manager=cargo&previous-version=0.3.4&new-version=0.3.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:54:35 +03:00
dependabot[bot]
f944f2fff9 build(deps): bump instability from 0.3.9 to 0.3.10 (#2261)
Bumps [instability](https://github.com/ratatui/instability) from 0.3.9
to 0.3.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/releases">instability's
releases</a>.</em></p>
<blockquote>
<h2>instability-example-v0.3.10</h2>
<h3>Other</h3>
<ul>
<li>Add #[allow(unused_imports)] lint to unstable reexports (<a
href="https://redirect.github.com/ratatui/instability/pull/21">#21</a>)</li>
</ul>
<h2>instability-v0.3.10</h2>
<h3>Other</h3>
<ul>
<li>enable trusted publishing with release-plz (<a
href="https://redirect.github.com/ratatui/instability/pull/31">#31</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/blob/main/CHANGELOG.md">instability's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.9...instability-v0.3.10">0.3.10</a>
- 2025-11-29</h2>
<h3>Other</h3>
<ul>
<li>enable trusted publishing with release-plz (<a
href="https://redirect.github.com/ratatui/instability/pull/31">#31</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8b311cd7d5"><code>8b311cd</code></a>
chore: release v0.3.10 (<a
href="https://redirect.github.com/ratatui/instability/issues/32">#32</a>)</li>
<li><a
href="220c65cbc5"><code>220c65c</code></a>
chore: enable trusted publishing with release-plz (<a
href="https://redirect.github.com/ratatui/instability/issues/31">#31</a>)</li>
<li>See full diff in <a
href="https://github.com/ratatui/instability/compare/instability-v0.3.9...instability-v0.3.10">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=instability&package-manager=cargo&previous-version=0.3.9&new-version=0.3.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:54:06 +03:00
dependabot[bot]
58c85295ae build(deps): bump criterion from 0.8.0 to 0.8.1 (#2257)
Bumps [criterion](https://github.com/criterion-rs/criterion.rs) from
0.8.0 to 0.8.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/criterion-rs/criterion.rs/releases">criterion's
releases</a>.</em></p>
<blockquote>
<h2>criterion-plot-v0.8.1</h2>
<h3>Fixed</h3>
<ul>
<li>Typo</li>
</ul>
<h2>criterion-v0.8.1</h2>
<h3>Fixed</h3>
<ul>
<li>Homepage link</li>
</ul>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump crate-ci/typos from 1.23.5 to 1.40.0</li>
<li><em>(deps)</em> bump jontze/action-mdbook from 3 to 4</li>
<li><em>(deps)</em> bump actions/checkout from 4 to 6</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/criterion-rs/criterion.rs/blob/master/CHANGELOG.md">criterion's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/criterion-rs/criterion.rs/compare/criterion-v0.8.0...criterion-v0.8.1">0.8.1</a>
- 2025-12-07</h2>
<h3>Fixed</h3>
<ul>
<li>Homepage link</li>
</ul>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump crate-ci/typos from 1.23.5 to 1.40.0</li>
<li><em>(deps)</em> bump jontze/action-mdbook from 3 to 4</li>
<li><em>(deps)</em> bump actions/checkout from 4 to 6</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e4e06dfdc3"><code>e4e06df</code></a>
chore: release v0.8.1</li>
<li><a
href="aa548b9f58"><code>aa548b9</code></a>
fix: Homepage link</li>
<li><a
href="950c3b727a"><code>950c3b7</code></a>
fix: Typo</li>
<li><a
href="7e3e50c369"><code>7e3e50c</code></a>
chore(deps): bump crate-ci/typos from 1.23.5 to 1.40.0</li>
<li><a
href="391a99ad54"><code>391a99a</code></a>
chore(deps): bump jontze/action-mdbook from 3 to 4</li>
<li><a
href="8fb9a8797a"><code>8fb9a87</code></a>
chore(deps): bump actions/checkout from 4 to 6</li>
<li>See full diff in <a
href="https://github.com/criterion-rs/criterion.rs/compare/criterion-v0.8.0...criterion-v0.8.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=criterion&package-manager=cargo&previous-version=0.8.0&new-version=0.8.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:53:24 +03:00
dependabot[bot]
dc4ca94e95 build(deps): bump taiki-e/install-action from 2.62.57 to 2.62.60 (#2242)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.57 to 2.62.60.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.60</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.18.0.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.7.0.</p>
</li>
<li>
<p>Update <code>wasm-bindgen@latest</code> to 0.2.106.</p>
</li>
</ul>
<h2>2.62.59</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.10.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.13.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.40.0.</p>
</li>
</ul>
<h2>2.62.58</h2>
<ul>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.6.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.8.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.17.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.12.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.6.0.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 39.0.1.</p>
</li>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.149.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.4.</p>
</li>
<li>
<p>Update <code>cargo-valgrind@latest</code> to 2.4.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.11.</p>
</li>
</ul>
<h2>[2.62.60] - 2025-11-30</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.18.0.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.7.0.</p>
</li>
<li>
<p>Update <code>wasm-bindgen@latest</code> to 0.2.106.</p>
</li>
</ul>
<h2>[2.62.59] - 2025-11-28</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.10.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.13.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.40.0.</p>
</li>
</ul>
<h2>[2.62.58] - 2025-11-26</h2>
<ul>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.6.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.8.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.17.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.12.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.6.0.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 39.0.1.</p>
</li>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.149.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3575e53270"><code>3575e53</code></a>
Release 2.62.60</li>
<li><a
href="82ed20a6c4"><code>82ed20a</code></a>
Update cspell dictionary</li>
<li><a
href="f6aadf50d8"><code>f6aadf5</code></a>
Update <code>zizmor@latest</code> to 1.18.0</li>
<li><a
href="6faf516c7d"><code>6faf516</code></a>
Update <code>cargo-shear@latest</code> to 1.7.0</li>
<li><a
href="54589f5111"><code>54589f5</code></a>
Update <code>wasm-bindgen@latest</code> to 0.2.106</li>
<li><a
href="b4b8094585"><code>b4b8094</code></a>
Release 2.62.59</li>
<li><a
href="812d1ba673"><code>812d1ba</code></a>
Update changelog</li>
<li><a
href="3d348f5824"><code>3d348f5</code></a>
Update <code>mise@latest</code> to 2025.11.10</li>
<li><a
href="85debb04fc"><code>85debb0</code></a>
Update <code>mise@latest</code> to 2025.11.9</li>
<li><a
href="b21ab5b468"><code>b21ab5b</code></a>
Update <code>uv@latest</code> to 0.9.13</li>
<li>Additional commits viewable in <a
href="763e3324d4...3575e53270">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.57&new-version=2.62.60)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-06 14:43:06 -08:00
Josh McKinney
22610b019b feat: Support adding an Offset to Position (#2239)
Adds Position::offset() and arithmentic ops (Position + Offset and
Position - Offset)

Fixes: https://github.com/ratatui/ratatui/issues/2018
2025-12-06 14:42:39 -08:00
dependabot[bot]
c0e1b1560e build(deps): bump criterion from 0.7.0 to 0.8.0 (#2246)
Bumps [criterion](https://github.com/criterion-rs/criterion.rs) from
0.7.0 to 0.8.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/criterion-rs/criterion.rs/releases">criterion's
releases</a>.</em></p>
<blockquote>
<h2>criterion-plot-v0.8.0</h2>
<p>No release notes provided.</p>
<h2>criterion-v0.8.0</h2>
<h3>BREAKING</h3>
<ul>
<li>Drop async-std support</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Bump MSRV to 1.86, stable to 1.91.1</li>
</ul>
<h3>Added</h3>
<ul>
<li>Add ability to plot throughput on summary page.</li>
<li>Add support for reporting throughput in elements and bytes -
<code>Throughput::ElementsAndBytes</code> allows the text summary to
report throughput in both units simultaneously.</li>
<li>Add alloca-based memory layout randomisation to mitigate memory
effects on measurements.</li>
<li>Add doc comment to benchmark runner in criterion_group macro
(removes linter warnings)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix plotting NaN bug</li>
</ul>
<h3>Other</h3>
<ul>
<li>Remove Master API Docs links temporarily while we restore the docs
publishing.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/criterion-rs/criterion.rs/blob/master/CHANGELOG.md">criterion's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/criterion-rs/criterion.rs/compare/criterion-v0.7.0...criterion-v0.8.0">0.8.0</a>
- 2025-11-29</h2>
<h3>BREAKING</h3>
<ul>
<li>Drop async-std support</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Bump MSRV to 1.86, stable to 1.91.1</li>
</ul>
<h3>Added</h3>
<ul>
<li>Add ability to plot throughput on summary page.</li>
<li>Add support for reporting throughput in elements and bytes -
<code>Throughput::ElementsAndBytes</code> allows the text summary to
report throughput in both units simultaneously.</li>
<li>Add alloca-based memory layout randomisation to mitigate memory
effects on measurements.</li>
<li>Add doc comment to benchmark runner in criterion_group macro
(removes linter warnings)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix plotting NaN bug</li>
</ul>
<h3>Other</h3>
<ul>
<li>Remove Master API Docs links temporarily while we restore the docs
publishing.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b49ade728c"><code>b49ade7</code></a>
chore: release v0.8.0</li>
<li>See full diff in <a
href="https://github.com/criterion-rs/criterion.rs/compare/criterion-plot-v0.7.0...criterion-v0.8.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=criterion&package-manager=cargo&previous-version=0.7.0&new-version=0.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-06 14:42:16 -08:00
Paul Harrison
55a95e67bc test(rect): mutual intersection agreement (#2252) 2025-12-03 22:46:00 -08:00
Paul Harrison
345f47e044 style(rect): use plus operator for offset (#2251)
## Summary
Use `+` operator to move `Rect` by an `Offset` as added
[here](https://github.com/ratatui/ratatui/pull/1596).

Includes change to use `Offset::new()` in place of `Offset { ... }`
2025-12-02 17:47:03 +03:00
dependabot[bot]
cb85c8eb4e build(deps): bump release-plz/action from 0.5.118 to 0.5.119 (#2245)
Bumps [release-plz/action](https://github.com/release-plz/action) from
0.5.118 to 0.5.119.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-plz/action/releases">release-plz/action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.119</h2>
<h2>What's Changed</h2>
<ul>
<li>Add <code>dry_run</code> input option by <a
href="https://github.com/MidasLamb"><code>@​MidasLamb</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/204">release-plz/action#204</a></li>
<li>fix test by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/226">release-plz/action#226</a></li>
<li>build(deps): bump actions/checkout from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/release-plz/action/pull/227">release-plz/action#227</a></li>
<li>updater: fix number of assets by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/228">release-plz/action#228</a></li>
<li>Update to 0.3.149 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/229">release-plz/action#229</a></li>
<li>update cargo-semver-checks to v0.45 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/230">release-plz/action#230</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/MidasLamb"><code>@​MidasLamb</code></a>
made their first contribution in <a
href="https://redirect.github.com/release-plz/action/pull/204">release-plz/action#204</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.119">https://github.com/release-plz/action/compare/v0.5...v0.5.119</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1efcf74dfc"><code>1efcf74</code></a>
update cargo-semver-checks to v0.45 (<a
href="https://redirect.github.com/release-plz/action/issues/230">#230</a>)</li>
<li><a
href="063bcc50f8"><code>063bcc5</code></a>
Update to 0.3.149 (<a
href="https://redirect.github.com/release-plz/action/issues/229">#229</a>)</li>
<li><a
href="8fbb571544"><code>8fbb571</code></a>
updater: fix number of assets (<a
href="https://redirect.github.com/release-plz/action/issues/228">#228</a>)</li>
<li><a
href="8139e59591"><code>8139e59</code></a>
build(deps): bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/release-plz/action/issues/227">#227</a>)</li>
<li><a
href="01df7609d1"><code>01df760</code></a>
fix test (<a
href="https://redirect.github.com/release-plz/action/issues/226">#226</a>)</li>
<li><a
href="af52851a74"><code>af52851</code></a>
Add <code>dry_run</code> input option (<a
href="https://redirect.github.com/release-plz/action/issues/204">#204</a>)</li>
<li>See full diff in <a
href="d529f731ae...1efcf74dfc">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-plz/action&package-manager=github_actions&previous-version=0.5.118&new-version=0.5.119)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 17:46:08 +03:00
dependabot[bot]
b405a398e9 build(deps): bump tracing from 0.1.41 to 0.1.43 (#2247)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.41 to
0.1.43.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tracing/releases">tracing's
releases</a>.</em></p>
<blockquote>
<h2>tracing 0.1.43</h2>
<h4>Important</h4>
<p>The previous release [0.1.42] was yanked because <a
href="https://redirect.github.com/tokio-rs/tracing/issues/3382">#3382</a>
was a breaking change.
See further details in <a
href="https://redirect.github.com/tokio-rs/tracing/issues/3424">#3424</a>.
This release contains all the changes from that
version, plus a revert for the problematic part of the breaking PR.</p>
<h3>Fixed</h3>
<ul>
<li>Revert &quot;make <code>valueset</code> macro sanitary&quot; (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3425">#3425</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/3382">#3382</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3382">tokio-rs/tracing#3382</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3424">#3424</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3424">tokio-rs/tracing#3424</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3425">#3425</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3425">tokio-rs/tracing#3425</a>
[0.1.42]: <a
href="https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.42">https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.42</a></p>
<h2>tracing 0.1.42</h2>
<h3>Important</h3>
<p>The [<code>Span::record_all</code>] method has been removed from the
documented API. It
was always unsuable via the documented API as it requried a
<code>ValueSet</code> which
has no publically documented constructors. The method remains, but
should not
be used outside of <code>tracing</code> macros.</p>
<h3>Added</h3>
<ul>
<li><strong>attributes</strong>: Support constant expressions as
instrument field names (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3158">#3158</a>)</li>
<li>Add <code>record_all!</code> macro for recording multiple values in
one call (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3227">#3227</a>)</li>
<li><strong>core</strong>: Improve code generation at trace points
significantly (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3398">#3398</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>tracing-core</code>: updated to 0.1.35 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3414">#3414</a>)</li>
<li><code>tracing-attributes</code>: updated to 0.1.31 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3417">#3417</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix &quot;name / parent&quot; variant of <code>event!</code> (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/2983">#2983</a>)</li>
<li>Remove 'r#' prefix from raw identifiers in field names (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3130">#3130</a>)</li>
<li>Fix perf regression when <code>release_max_level_*</code> not set
(<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3373">#3373</a>)</li>
<li>Use imported instead of fully qualified path (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3374">#3374</a>)</li>
<li>Make <code>valueset</code> macro sanitary (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3382">#3382</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li><strong>core</strong>: Add missing <code>dyn</code> keyword in
<code>Visit</code> documentation code sample (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3387">#3387</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/2983">#2983</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#2983%5D(https://redirect.github.com/tokio-rs/tracing/issues/2983)">tokio-rs/tracing#2983</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3130">#3130</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3130%5D(https://redirect.github.com/tokio-rs/tracing/issues/3130)">tokio-rs/tracing#3130</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3158">#3158</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3158%5D(https://redirect.github.com/tokio-rs/tracing/issues/3158)">tokio-rs/tracing#3158</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="64e1c8d3ae"><code>64e1c8d</code></a>
chore: prepare tracing 0.1.43 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3427">#3427</a>)</li>
<li><a
href="7c44f7bb21"><code>7c44f7b</code></a>
tracing: revert &quot;make <code>valueset</code> macro sanitary&quot;
(<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3425">#3425</a>)</li>
<li><a
href="cdaf661c13"><code>cdaf661</code></a>
chore: prepare tracing-mock 0.1.0-beta.2 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3422">#3422</a>)</li>
<li><a
href="a164fd3021"><code>a164fd3</code></a>
chore: prepare tracing-journald 0.3.2 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3421">#3421</a>)</li>
<li><a
href="405397b8cc"><code>405397b</code></a>
chore: prepare tracing-appender 0.2.4 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3420">#3420</a>)</li>
<li><a
href="a9eeed7394"><code>a9eeed7</code></a>
chore: prepare tracing-subscriber 0.3.21 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3419">#3419</a>)</li>
<li><a
href="5bd5505478"><code>5bd5505</code></a>
chore: prepare tracing 0.1.42 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3418">#3418</a>)</li>
<li><a
href="55086231ec"><code>5508623</code></a>
chore: prepare tracing-attributes 0.1.31 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3417">#3417</a>)</li>
<li><a
href="d92b4c0feb"><code>d92b4c0</code></a>
chore: prepare tracing-core 0.1.35 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3414">#3414</a>)</li>
<li><a
href="9751b6e776"><code>9751b6e</code></a>
chore: run <code>tracing-subscriber</code> tests with all features (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3412">#3412</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tracing/compare/tracing-0.1.41...tracing-0.1.43">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing&package-manager=cargo&previous-version=0.1.41&new-version=0.1.43)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 17:45:16 +03:00
dependabot[bot]
cd5c7afbac build(deps): bump crate-ci/typos from 1.39.2 to 1.40.0 (#2244)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.39.2 to
1.40.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.40.0</h2>
<h2>[1.40.0] - 2025-11-26</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1405">November
2025</a> changes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.40.0] - 2025-11-26</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1405">November
2025</a> changes</li>
</ul>
<h2>[1.39.2] - 2025-11-13</h2>
<h3>Fixes</h3>
<ul>
<li>Don't offer <code>entry</code> as a correction for
<code>entrys</code></li>
</ul>
<h2>[1.39.1] - 2025-11-12</h2>
<h3>Features</h3>
<ul>
<li>Make <code>--help</code> more vibrant</li>
</ul>
<h2>[1.39.0] - 2025-10-31</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1383">October
2025</a> changes</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>When a typo is pluralized, prefer pluralized corrections</li>
</ul>
<h2>[1.38.1] - 2025-10-07</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore common golang identifiers</li>
</ul>
<h2>[1.38.0] - 2025-10-06</h2>
<h3>Features</h3>
<ul>
<li>Update type list</li>
</ul>
<h3>Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2d0ce569fe"><code>2d0ce56</code></a>
chore: Release</li>
<li><a
href="efbd900f8d"><code>efbd900</code></a>
chore: Release</li>
<li><a
href="863fd15db8"><code>863fd15</code></a>
docs: Update changelog</li>
<li><a
href="9a27b16791"><code>9a27b16</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1432">#1432</a>
from epage/nov</li>
<li><a
href="3dbd9d4eac"><code>3dbd9d4</code></a>
feat(dict): November additions</li>
<li><a
href="a1a16c7b7c"><code>a1a16c7</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1427">#1427</a>
from deining/bump-github-action</li>
<li><a
href="cb8d2e78ff"><code>cb8d2e7</code></a>
docs: Bump GitHub checkout action in 'github-action.md'</li>
<li><a
href="9f99fb8dfe"><code>9f99fb8</code></a>
docs(ref): Clarify extend-words / extend-identifiers</li>
<li>See full diff in <a
href="626c4bedb7...2d0ce569fe">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.39.2&new-version=1.40.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 17:44:57 +03:00
dependabot[bot]
604f89a167 build(deps): bump Swatinem/rust-cache from 2.8.1 to 2.8.2 (#2243)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from
2.8.1 to 2.8.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/swatinem/rust-cache/releases">Swatinem/rust-cache's
releases</a>.</em></p>
<blockquote>
<h2>v2.8.2</h2>
<h2>What's Changed</h2>
<ul>
<li>ci: address lint findings, add zizmor workflow by <a
href="https://github.com/woodruffw"><code>@​woodruffw</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/262">Swatinem/rust-cache#262</a></li>
<li>feat: Implement ability to disable adding job ID + rust environment
hashes to cache names by <a
href="https://github.com/Ryan-Brice"><code>@​Ryan-Brice</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/279">Swatinem/rust-cache#279</a></li>
<li>Don't overwrite env for cargo-metadata call by <a
href="https://github.com/MaeIsBad"><code>@​MaeIsBad</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/285">Swatinem/rust-cache#285</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/woodruffw"><code>@​woodruffw</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/262">Swatinem/rust-cache#262</a></li>
<li><a
href="https://github.com/Ryan-Brice"><code>@​Ryan-Brice</code></a> made
their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/279">Swatinem/rust-cache#279</a></li>
<li><a href="https://github.com/MaeIsBad"><code>@​MaeIsBad</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/285">Swatinem/rust-cache#285</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2">https://github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>2.8.2</h2>
<ul>
<li>Don't overwrite env for cargo-metadata call</li>
</ul>
<h2>2.8.1</h2>
<ul>
<li>Set empty <code>CARGO_ENCODED_RUSTFLAGS</code> when retrieving
metadata</li>
<li>Various dependency updates</li>
</ul>
<h2>2.8.0</h2>
<ul>
<li>Add support for <code>warpbuild</code> cache provider</li>
<li>Add new <code>cache-workspace-crates</code> feature</li>
</ul>
<h2>2.7.8</h2>
<ul>
<li>Include CPU arch in the cache key</li>
</ul>
<h2>2.7.7</h2>
<ul>
<li>Also cache <code>cargo install</code> metadata</li>
</ul>
<h2>2.7.6</h2>
<ul>
<li>Allow opting out of caching $CARGO_HOME/bin</li>
<li>Add runner OS in cache key</li>
<li>Adds an option to do lookup-only of the cache</li>
</ul>
<h2>2.7.5</h2>
<ul>
<li>Support Cargo.lock format cargo-lock v4</li>
<li>Only run macOsWorkaround() on macOS</li>
</ul>
<h2>2.7.3</h2>
<ul>
<li>Work around upstream problem that causes cache saving to hang for
minutes.</li>
</ul>
<h2>2.7.2</h2>
<ul>
<li>Only key by <code>Cargo.toml</code> and <code>Cargo.lock</code>
files of workspace members.</li>
</ul>
<h2>2.7.1</h2>
<ul>
<li>Update toml parser to fix parsing errors.</li>
</ul>
<h2>2.7.0</h2>
<ul>
<li>Properly cache <code>trybuild</code> tests.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="779680da71"><code>779680d</code></a>
2.8.2</li>
<li><a
href="2ea64efb25"><code>2ea64ef</code></a>
Bump smol-toml from 1.4.2 to 1.5.2 in the prd-minor group (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/287">#287</a>)</li>
<li><a
href="8930d9c33e"><code>8930d9c</code></a>
Bump the actions group with 3 updates (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/288">#288</a>)</li>
<li><a
href="c071727fc9"><code>c071727</code></a>
Bump <code>@​actions/io</code> from 1.1.3 to 2.0.0 in the prd-major
group (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/281">#281</a>)</li>
<li><a
href="f2a41b7c11"><code>f2a41b7</code></a>
Bump <code>@​types/node</code> from 24.9.0 to 24.10.0 in the dev-minor
group (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/282">#282</a>)</li>
<li><a
href="e306f83d21"><code>e306f83</code></a>
Don't overwrite env for cargo-metadata call (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/285">#285</a>)</li>
<li><a
href="c9119007a1"><code>c911900</code></a>
Merge pull request <a
href="https://redirect.github.com/swatinem/rust-cache/issues/284">#284</a>
from Swatinem/dependabot/github_actions/actions-baeb0...</li>
<li><a
href="3aaed5547e"><code>3aaed55</code></a>
Bump the actions group with 2 updates</li>
<li><a
href="972b315a82"><code>972b315</code></a>
Merge pull request <a
href="https://redirect.github.com/swatinem/rust-cache/issues/283">#283</a>
from Swatinem/dependabot/github_actions/actions-b360d...</li>
<li><a
href="07caf06f7a"><code>07caf06</code></a>
Bump taiki-e/install-action from 2.62.45 to 2.62.49 in the actions
group</li>
<li>Additional commits viewable in <a
href="f13886b937...779680da71">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Swatinem/rust-cache&package-manager=github_actions&previous-version=2.8.1&new-version=2.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 17:44:42 +03:00
dependabot[bot]
db40df4ed9 build(deps): bump tracing-subscriber from 0.3.20 to 0.3.22 (#2248)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from
0.3.20 to 0.3.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tracing/releases">tracing-subscriber's
releases</a>.</em></p>
<blockquote>
<h2>tracing-subscriber 0.3.22</h2>
<h4>Important</h4>
<p>The previous release [0.3.21] was yanked as it depended explicitly on
[tracing-0.1.42], which was yanked due to a breaking change (see <a
href="https://redirect.github.com/tokio-rs/tracing/issues/3424">#3424</a>
for
details). This release contains all the changes from the previous
release, plus
an update to the newer version of <code>tracing</code>.</p>
<h3>Changed</h3>
<ul>
<li><code>tracing</code>: updated to 0.1.43 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3427">#3427</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/3424">#3424</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3424">tokio-rs/tracing#3424</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3427">#3427</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/3427">tokio-rs/tracing#3427</a>
[0.3.21]: <a
href="https://github.com/tokio-rs/tracing/releases/tag/tracing-subscriber-0.3.21">https://github.com/tokio-rs/tracing/releases/tag/tracing-subscriber-0.3.21</a>
[tracing-0.1.42]: <a
href="https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.42">https://github.com/tokio-rs/tracing/releases/tag/tracing-0.1.42</a></p>
<h2>tracing-subscriber 0.3.21</h2>
<h3>Fixed</h3>
<ul>
<li>Change registry exit to decrement local span ref only (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3331">#3331</a>)</li>
<li>Make Layered propagate <code>on_register_dispatch</code> (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3379">#3379</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>tracing</code>: updated to 0.1.42 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3418">#3418</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Remove <code>clone_span</code> on enter (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3289">#3289</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>Fix a few small things in the format module (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3339">#3339</a>)</li>
<li>Fix extra closing brace in layer docs (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3350">#3350</a>)</li>
<li>Fix link in <code>FmtSpan</code> docs (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3411">#3411</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tracing/issues/3289">#3289</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3289%5D(https://redirect.github.com/tokio-rs/tracing/issues/3289)">tokio-rs/tracing#3289</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3331">#3331</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3331%5D(https://redirect.github.com/tokio-rs/tracing/issues/3331)">tokio-rs/tracing#3331</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3339">#3339</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3339%5D(https://redirect.github.com/tokio-rs/tracing/issues/3339)">tokio-rs/tracing#3339</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3350">#3350</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3350%5D(https://redirect.github.com/tokio-rs/tracing/issues/3350)">tokio-rs/tracing#3350</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3379">#3379</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3379%5D(https://redirect.github.com/tokio-rs/tracing/issues/3379)">tokio-rs/tracing#3379</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3411">#3411</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3411%5D(https://redirect.github.com/tokio-rs/tracing/issues/3411)">tokio-rs/tracing#3411</a>
<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3418">#3418</a>:
<a
href="https://redirect.github.com/tokio-rs/tracing/pull/%5B#3418%5D(https://redirect.github.com/tokio-rs/tracing/issues/3418)">tokio-rs/tracing#3418</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cc44064b3a"><code>cc44064</code></a>
chore: prepare tracing-subscriber 0.3.22 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3428">#3428</a>)</li>
<li><a
href="64e1c8d3ae"><code>64e1c8d</code></a>
chore: prepare tracing 0.1.43 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3427">#3427</a>)</li>
<li><a
href="7c44f7bb21"><code>7c44f7b</code></a>
tracing: revert &quot;make <code>valueset</code> macro sanitary&quot;
(<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3425">#3425</a>)</li>
<li><a
href="cdaf661c13"><code>cdaf661</code></a>
chore: prepare tracing-mock 0.1.0-beta.2 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3422">#3422</a>)</li>
<li><a
href="a164fd3021"><code>a164fd3</code></a>
chore: prepare tracing-journald 0.3.2 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3421">#3421</a>)</li>
<li><a
href="405397b8cc"><code>405397b</code></a>
chore: prepare tracing-appender 0.2.4 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3420">#3420</a>)</li>
<li><a
href="a9eeed7394"><code>a9eeed7</code></a>
chore: prepare tracing-subscriber 0.3.21 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3419">#3419</a>)</li>
<li><a
href="5bd5505478"><code>5bd5505</code></a>
chore: prepare tracing 0.1.42 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3418">#3418</a>)</li>
<li><a
href="55086231ec"><code>5508623</code></a>
chore: prepare tracing-attributes 0.1.31 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3417">#3417</a>)</li>
<li><a
href="d92b4c0feb"><code>d92b4c0</code></a>
chore: prepare tracing-core 0.1.35 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3414">#3414</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.20...tracing-subscriber-0.3.22">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing-subscriber&package-manager=cargo&previous-version=0.3.20&new-version=0.3.22)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 17:44:00 +03:00
dependabot[bot]
fae7688ed8 build(deps): bump kasuari from 0.4.10 to 0.4.11 (#2249)
Bumps [kasuari](https://github.com/ratatui/kasuari) from 0.4.10 to
0.4.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/kasuari/releases">kasuari's
releases</a>.</em></p>
<blockquote>
<h2>v0.4.11</h2>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump actions/checkout from 5 to 6 in the
github-actions group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/42">#42</a>)</li>
<li><em>(deps)</em> bump hashbrown from 0.16.0 to 0.16.1 in the
rust-dependencies group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/43">#43</a>)</li>
<li>enable trusted publishing and normalize release-plz workflow (<a
href="https://redirect.github.com/ratatui/kasuari/pull/44">#44</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/kasuari/blob/main/CHANGELOG.md">kasuari's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/kasuari/compare/v0.4.10...v0.4.11">0.4.11</a>
- 2025-11-29</h2>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump actions/checkout from 5 to 6 in the
github-actions group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/42">#42</a>)</li>
<li><em>(deps)</em> bump hashbrown from 0.16.0 to 0.16.1 in the
rust-dependencies group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/43">#43</a>)</li>
<li>enable trusted publishing and normalize release-plz workflow (<a
href="https://redirect.github.com/ratatui/kasuari/pull/44">#44</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dfde5428e6"><code>dfde542</code></a>
chore: release v0.4.11 (<a
href="https://redirect.github.com/ratatui/kasuari/issues/45">#45</a>)</li>
<li><a
href="e0143cfc9a"><code>e0143cf</code></a>
build(deps): bump actions/checkout from 5 to 6 in the github-actions
group (<a
href="https://redirect.github.com/ratatui/kasuari/issues/42">#42</a>)</li>
<li><a
href="87b93a0dde"><code>87b93a0</code></a>
build(deps): bump hashbrown from 0.16.0 to 0.16.1 in the
rust-dependencies gr...</li>
<li><a
href="f8fd0abdcb"><code>f8fd0ab</code></a>
chore: enable trusted publishing and normalize release-plz workflow (<a
href="https://redirect.github.com/ratatui/kasuari/issues/44">#44</a>)</li>
<li><a
href="376ec2bb56"><code>376ec2b</code></a>
build(deps): bump document-features from 0.2.11 to 0.2.12 in the
rust-depende...</li>
<li>See full diff in <a
href="https://github.com/ratatui/kasuari/compare/v0.4.10...v0.4.11">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=kasuari&package-manager=cargo&previous-version=0.4.10&new-version=0.4.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 17:43:29 +03:00
dependabot[bot]
2c17beaee4 build(deps): bump fakeit from 1.3.1 to 1.4.0 (#2250)
Bumps [fakeit](https://github.com/PumpkinSeed/fakeit) from 1.3.1 to
1.4.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f33e977442"><code>f33e977</code></a>
Bump version in cargo lock</li>
<li><a
href="d3ccee7287"><code>d3ccee7</code></a>
Bump the version</li>
<li><a
href="3844cbc04c"><code>3844cbc</code></a>
Merge pull request <a
href="https://redirect.github.com/PumpkinSeed/fakeit/issues/37">#37</a>
from joshka/joshka/push-xvwtqpvvsnvx</li>
<li><a
href="c33ef2828e"><code>c33ef28</code></a>
remove libmath and its stale rand deps</li>
<li><a
href="0821f8c368"><code>0821f8c</code></a>
Cargo.lock bump</li>
<li><a
href="785ef4d27a"><code>785ef4d</code></a>
Bump version</li>
<li><a
href="c56643d4a0"><code>c56643d</code></a>
Merge pull request <a
href="https://redirect.github.com/PumpkinSeed/fakeit/issues/36">#36</a>
from PumpkinSeed/rustfmt</li>
<li><a
href="8f272d7a6d"><code>8f272d7</code></a>
Change the MSRV</li>
<li><a
href="114d603f1c"><code>114d603</code></a>
Rustfmt</li>
<li><a
href="144b618085"><code>144b618</code></a>
Bump the version</li>
<li>Additional commits viewable in <a
href="https://github.com/PumpkinSeed/fakeit/compare/v1.3.1...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fakeit&package-manager=cargo&previous-version=1.3.1&new-version=1.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 17:43:05 +03:00
Josh McKinney
24e3133456 feat: add Rect::resize() method (#2240)
Fixes: https://github.com/ratatui/ratatui/issues/1440
2025-11-30 12:00:03 -08:00
Josh McKinney
96d097ef76 feat: implement Rect ops for moving (#1596)
feat: implement Rect ops for moving

Implemented `Add`, `AddAssign`, `Sub`, and `SubAssign` on `Rect` for
`Offset`. This makes it possible to move rects

```rust
let rect = Rect::new(1, 2, 3, 4);
let moved = rect + Offset(1, 2);
let moved = rect - Offset(1, 2);
let moved = rect + Offset(-1, -2);
```

Additionally Rect, Size, Offset, and Position now all have MIN and MAX
consts.
2025-11-30 11:57:08 -08:00
dependabot[bot]
a6356c157c build(deps): bump octocrab from 0.47.1 to 0.48.0 (#2230)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.47.1 to
0.48.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.48.0</h2>
<h3>Added</h3>
<ul>
<li>fetch contributor repository permission (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/825">#825</a>)</li>
<li>[<strong>breaking</strong>] Use
<code>Option&lt;AuthorAssociation&gt;</code> over <code>String</code> in
<code>Issue</code> struct (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/822">#822</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>add missing issue event types (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/821">#821</a>)</li>
<li>Remove fields deleted in October 2025 API changes (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/826">#826</a>)</li>
<li>Bump jsonwebtoken to v10 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/814">#814</a>)</li>
<li>Feature/set http headers <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/808">#808</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/819">#819</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.47.1...v0.48.0">0.48.0</a>
- 2025-11-18</h2>
<h3>Added</h3>
<ul>
<li>fetch contributor repository permission (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/825">#825</a>)</li>
<li>[<strong>breaking</strong>] Use
<code>Option&lt;AuthorAssociation&gt;</code> over <code>String</code> in
<code>Issue</code> struct (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/822">#822</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>add missing issue event types (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/821">#821</a>)</li>
<li>Remove fields deleted in October 2025 API changes (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/826">#826</a>)</li>
<li>Bump jsonwebtoken to v10 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/814">#814</a>)</li>
<li>Feature/set http headers <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/808">#808</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/819">#819</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9fc79f7bef"><code>9fc79f7</code></a>
chore: release v0.48.0 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/823">#823</a>)</li>
<li><a
href="819a1f1a44"><code>819a1f1</code></a>
models: add missing issue event types (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/821">#821</a>)</li>
<li><a
href="730b70f1a9"><code>730b70f</code></a>
Remove fields deleted in October 2025 API changes (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/826">#826</a>)</li>
<li><a
href="8cecdae759"><code>8cecdae</code></a>
Bump jsonwebtoken to v10 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/814">#814</a>)</li>
<li><a
href="8be15f41ef"><code>8be15f4</code></a>
feat: fetch contributor repository permission (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/825">#825</a>)</li>
<li><a
href="610775a98d"><code>610775a</code></a>
Feature/set http headers <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/808">#808</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/819">#819</a>)</li>
<li><a
href="edc6cdefc4"><code>edc6cde</code></a>
feat!: Use <code>Option\&lt;AuthorAssociation&gt;</code> over
<code>String</code> in <code>Issue</code> struct (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/822">#822</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.47.1...v0.48.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.47.1&new-version=0.48.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-11-30 01:36:19 -08:00
Josh McKinney
0fbefe9389 chore(ci): don't fail on cargo-deny advisories (#2237)
Instead of failing on advisories, run the cargo-deny check, and report
the failure.

Uses the cargo-deny-action instead of installing this manually.


https://github.com/EmbarkStudios/cargo-deny-action/tree/v2?tab=readme-ov-file#recommended-pipeline-if-using-advisories-to-avoid-sudden-breakages
(bumped to use rust stable, and log level info)
2025-11-30 12:26:16 +03:00
dependabot[bot]
12c49c0eac build(deps): bump DavidAnson/markdownlint-cli2-action from 20.0.0 to 21.0.0 (#2207)
Bumps
[DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action)
from 20.0.0 to 21.0.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="30a0e04f18"><code>30a0e04</code></a>
Update to version 21.0.0.</li>
<li><a
href="6d4a055237"><code>6d4a055</code></a>
Freshen generated index.js file.</li>
<li><a
href="d9bf3fbe88"><code>d9bf3fb</code></a>
Bump markdownlint-cli2 from 0.18.1 to 0.19.0</li>
<li><a
href="29b4789128"><code>29b4789</code></a>
Bump <code>@​eslint/js</code> from 9.39.0 to 9.39.1</li>
<li><a
href="6d600f113b"><code>6d600f1</code></a>
Bump eslint from 9.39.0 to 9.39.1</li>
<li><a
href="15b21a00af"><code>15b21a0</code></a>
Bump <code>@​eslint/js</code> from 9.38.0 to 9.39.0</li>
<li><a
href="b259d54d28"><code>b259d54</code></a>
Bump eslint from 9.38.0 to 9.39.0</li>
<li><a
href="451cad2cde"><code>451cad2</code></a>
Bump eslint-plugin-unicorn from 61.0.2 to 62.0.0</li>
<li><a
href="c076bbe50e"><code>c076bbe</code></a>
Bump <code>@​stylistic/eslint-plugin</code> from 5.4.0 to 5.5.0</li>
<li><a
href="ef464f44a2"><code>ef464f4</code></a>
Bump <code>@​eslint/js</code> from 9.37.0 to 9.38.0</li>
<li>Additional commits viewable in <a
href="992badcdf2...30a0e04f18">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=DavidAnson/markdownlint-cli2-action&package-manager=github_actions&previous-version=20.0.0&new-version=21.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-11-29 15:55:16 -08:00
Serge Barral
f18bcbf06b feat(canvas)!: Add quadrant, sextant and octant markers (#2235)
The octant marker is an alternative to the Braille marker with the same
resolution, but offering densely packed, regular pseudo-pixels, without
visible bands between rows and columns. 

Quadrant and Sextants are also added to support 2x2 and 2x3.

Sextant and Octant unicode characters that are less widely supported at
the moment, which is why `Braille` was left as the default.

BREAKING CHANGE: addition of new variants to `Marker` and removal of
no longer used constants in `ratatui::symbols::braille`.
2025-11-29 15:37:53 -08:00
Jagoda Estera Ślązak
ee673476d3 feat(symbols)!: Make Marker non-exhaustive (#2236)
This will allow us to add new markers without causing further breaking
changes.

BREAKING CHANGE: `Marker` is now non-exhaustive
2025-11-29 10:35:30 +01:00
dependabot[bot]
3ba3735650 build(deps): bump termion from 4.0.5 to 4.0.6 (#2227)
Bumps termion from 4.0.5 to 4.0.6.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=termion&package-manager=cargo&previous-version=4.0.5&new-version=4.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-28 18:07:57 +01:00
dependabot[bot]
bf268937d4 build(deps): bump dtolnay/rust-toolchain (#2233)
Bumps
[dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from
0f44b27771c32bda9f458f75a1e241b09791b331 to
0b1efabc08b657293548b77fb76cc02d26091c7e.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0b1efabc08"><code>0b1efab</code></a>
Update actions/checkout@v5 -&gt; v6</li>
<li>See full diff in <a
href="0f44b27771...0b1efabc08">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-11-25 09:27:20 +01:00
Jagoda Estera Ślązak
26b05dee59 feat(chart): Render Braille over Blocks in Charts and Canvas (#2165)
This makes it possible to stack charts, and write text over block symbols in
Charts and Canvas while still showing the block symbols behind the text.

Co-authored-by: Lunderberg <eldritch.cheese@gmail.com>
2025-11-25 09:23:54 +01:00
dependabot[bot]
3a945dfe06 build(deps): bump actions/checkout from 5.0.0 to 6.0.0 (#2232)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0
to 6.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>V6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>V5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>V5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>V4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>V4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1af3b93b68"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="71cf2267d8"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="069c695914"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="ff7abcd0c3"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li>See full diff in <a
href="08c6903cd8...1af3b93b68">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=5.0.0&new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-11-24 19:28:25 +03:00
dependabot[bot]
8f6782acd5 build(deps): bump hashbrown from 0.16.0 to 0.16.1 (#2228)
Bumps [hashbrown](https://github.com/rust-lang/hashbrown) from 0.16.0 to
0.16.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/hashbrown/releases">hashbrown's
releases</a>.</em></p>
<blockquote>
<h2>v0.16.1</h2>
<h3>Added</h3>
<ul>
<li>Added <code>HashTable</code> methods related to the raw bucket index
(<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/657">#657</a>)</li>
<li>Added <code>VacantEntryRef::insert_with_key</code> (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/579">#579</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Removed specialization for <code>Copy</code> types (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/662">#662</a>)</li>
<li>The <code>get_many_mut</code> family of methods have been renamed to
<code>get_disjoint_mut</code>
to match the standard library. The old names are still present for now,
but
deprecated. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/648">#648</a>)</li>
<li>Recognize and use over-sized allocations when using custom
allocators. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/523">#523</a>)</li>
<li>Depend on <code>serde_core</code> instead of <code>serde</code>. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/649">#649</a>)</li>
<li>Optimized <code>collect</code> on rayon parallel iterators. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/652">#652</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md">hashbrown's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/hashbrown/compare/v0.16.0...v0.16.1">0.16.1</a>
- 2025-11-20</h2>
<h3>Added</h3>
<ul>
<li>Added <code>HashTable</code> methods related to the raw bucket index
(<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/657">#657</a>)</li>
<li>Added <code>VacantEntryRef::insert_with_key</code> (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/579">#579</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Removed specialization for <code>Copy</code> types (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/662">#662</a>)</li>
<li>The <code>get_many_mut</code> family of methods have been renamed to
<code>get_disjoint_mut</code>
to match the standard library. The old names are still present for now,
but
deprecated. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/648">#648</a>)</li>
<li>Recognize and use over-sized allocations when using custom
allocators. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/523">#523</a>)</li>
<li>Depend on <code>serde_core</code> instead of <code>serde</code>. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/649">#649</a>)</li>
<li>Optimized <code>collect</code> on rayon parallel iterators. (<a
href="https://redirect.github.com/rust-lang/hashbrown/issues/652">#652</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1876e4f027"><code>1876e4f</code></a>
Add PR link for <code>get_disjoint_mut</code> rename</li>
<li><a
href="2e363b6f12"><code>2e363b6</code></a>
Update CHANGELOG for version 0.16.1</li>
<li><a
href="88d54a540f"><code>88d54a5</code></a>
chore: release v0.16.1</li>
<li><a
href="21be06c3ac"><code>21be06c</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/657">#657</a>
from cuviper/table-bucket</li>
<li><a
href="af971f3735"><code>af971f3</code></a>
Add <code>T</code> to bucket iterators and inline their methods</li>
<li><a
href="7ccb6d6ffc"><code>7ccb6d6</code></a>
Add <code>HashTable::iter_buckets</code> and
<code>iter_hash_buckets</code></li>
<li><a
href="aeb7996601"><code>aeb7996</code></a>
Add <code>HashTable::get_bucket_entry_unchecked</code></li>
<li><a
href="e885a4ea47"><code>e885a4e</code></a>
<code>get_bucket_entry -&gt; Result\&lt;OccupiedEntry,
AbsentEntry&gt;</code></li>
<li><a
href="dabfbef806"><code>dabfbef</code></a>
Add <code>get_bucket_unchecked</code> and
<code>get_bucket_unchecked_mut</code></li>
<li><a
href="42d9377a3f"><code>42d9377</code></a>
Make <code>HashTable</code> entries use <code>Tag</code> instead of a
full hash</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/hashbrown/compare/v0.16.0...v0.16.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hashbrown&package-manager=cargo&previous-version=0.16.0&new-version=0.16.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-11-24 19:27:54 +03:00
dependabot[bot]
dd6d315c7b build(deps): bump zizmorcore/zizmor-action from 0.2.0 to 0.3.0 (#2231)
Bumps
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)
from 0.2.0 to 0.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>README: fix troubleshooting link by <a
href="https://github.com/woodruffw"><code>@​woodruffw</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/50">zizmorcore/zizmor-action#50</a></li>
<li>README: add a troubleshooting section about Advanced Security by <a
href="https://github.com/woodruffw"><code>@​woodruffw</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/51">zizmorcore/zizmor-action#51</a></li>
<li>feat: Support a config option by <a
href="https://github.com/naokihaba"><code>@​naokihaba</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/56">zizmorcore/zizmor-action#56</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/naokihaba"><code>@​naokihaba</code></a>
made their first contribution in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/56">zizmorcore/zizmor-action#56</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.2.0...v0.3.0">https://github.com/zizmorcore/zizmor-action/compare/v0.2.0...v0.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e639db9933"><code>e639db9</code></a>
remove mise.toml (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/57">#57</a>)</li>
<li><a
href="f4409e3039"><code>f4409e3</code></a>
feat: Support a config option (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/56">#56</a>)</li>
<li><a
href="1aba86d8e1"><code>1aba86d</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/54">#54</a>)</li>
<li><a
href="da5ac40c54"><code>da5ac40</code></a>
README: add a troubleshooting section about Advanced Security (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/51">#51</a>)</li>
<li><a
href="cc28a584f0"><code>cc28a58</code></a>
README: fix troubleshooting link (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/50">#50</a>)</li>
<li><a
href="c323c83e3a"><code>c323c83</code></a>
chore(deps): bump zizmorcore/zizmor-action from 0.1.2 to 0.2.0 in the
github-...</li>
<li><a
href="0696496a48"><code>0696496</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/48">#48</a>)</li>
<li><a
href="873539476a"><code>8735394</code></a>
docs: bump action pins (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/46">#46</a>)</li>
<li>See full diff in <a
href="e673c3917a...e639db9933">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zizmorcore/zizmor-action&package-manager=github_actions&previous-version=0.2.0&new-version=0.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 19:02:14 +03:00
dependabot[bot]
fe410c6645 build(deps): bump clap from 4.5.51 to 4.5.53 (#2229)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.51 to 4.5.53.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.53</h2>
<h2>[4.5.53] - 2025-11-19</h2>
<h3>Features</h3>
<ul>
<li>Add <code>default_values_if</code>,
<code>default_values_ifs</code></li>
</ul>
<h2>v4.5.52</h2>
<h2>[4.5.52] - 2025-11-17</h2>
<h3>Fixes</h3>
<ul>
<li>Don't panic when <code>args_conflicts_with_subcommands</code>
conflicts with an <code>ArgGroup</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.53] - 2025-11-19</h2>
<h3>Features</h3>
<ul>
<li>Add <code>default_values_if</code>,
<code>default_values_ifs</code></li>
</ul>
<h2>[4.5.52] - 2025-11-17</h2>
<h3>Fixes</h3>
<ul>
<li>Don't panic when <code>args_conflicts_with_subcommands</code>
conflicts with an <code>ArgGroup</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3716f9f428"><code>3716f9f</code></a>
chore: Release</li>
<li><a
href="613b69a6b7"><code>613b69a</code></a>
docs: Update changelog</li>
<li><a
href="d117f7acde"><code>d117f7a</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6028">#6028</a>
from epage/arg</li>
<li><a
href="cb8255d2f3"><code>cb8255d</code></a>
feat(builder): Allow quoted id's for arg macro</li>
<li><a
href="1036060f13"><code>1036060</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6025">#6025</a>
from AldaronLau/typos-in-faq</li>
<li><a
href="2fcafc0aee"><code>2fcafc0</code></a>
docs: Fix minor grammar issues in FAQ</li>
<li><a
href="a380b65fe9"><code>a380b65</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6023">#6023</a>
from epage/template</li>
<li><a
href="4d7ab1483c"><code>4d7ab14</code></a>
chore: Update from _rust/main template</li>
<li><a
href="b8a7ea49d9"><code>b8a7ea4</code></a>
chore(deps): Update Rust Stable to v1.87 (<a
href="https://redirect.github.com/clap-rs/clap/issues/18">#18</a>)</li>
<li><a
href="f9842b3b3f"><code>f9842b3</code></a>
chore: Avoid MSRV problems out of the box</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.51...clap_complete-v4.5.53">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.51&new-version=4.5.53)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 19:00:45 +03:00
dependabot[bot]
5895340cb3 build(deps): bump taiki-e/install-action from 2.62.52 to 2.62.57 (#2234)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.52 to 2.62.57.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.57</h2>
<ul>
<li>
<p>Update <code>cargo-deny@latest</code> to 0.18.6.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.5.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.2.</p>
</li>
</ul>
<h2>2.62.56</h2>
<ul>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.4.</p>
</li>
<li>
<p>Update <code>rclone@latest</code> to 1.72.0.</p>
</li>
</ul>
<h2>2.62.55</h2>
<ul>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.1.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.5.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.11.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 39.0.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.7.</p>
</li>
<li>
<p>Update <code>mdbook@latest</code> to 0.5.1.</p>
</li>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.3.0.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.114.</p>
</li>
</ul>
<h2>2.62.54</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.6.</p>
</li>
<li>
<p>Update <code>hyperfine@latest</code> to 1.20.0.</p>
</li>
</ul>
<h2>2.62.53</h2>
<ul>
<li>
<p>Update <code>mdbook@latest</code> to 0.5.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.10.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.38.0.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.62.57] - 2025-11-24</h2>
<ul>
<li>
<p>Update <code>cargo-deny@latest</code> to 0.18.6.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.5.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.2.</p>
</li>
</ul>
<h2>[2.62.56] - 2025-11-23</h2>
<ul>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.4.</p>
</li>
<li>
<p>Update <code>rclone@latest</code> to 1.72.0.</p>
</li>
</ul>
<h2>[2.62.55] - 2025-11-21</h2>
<ul>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.1.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.5.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.11.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 39.0.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.7.</p>
</li>
<li>
<p>Update <code>mdbook@latest</code> to 0.5.1.</p>
</li>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.3.0.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.114.</p>
</li>
</ul>
<h2>[2.62.54] - 2025-11-19</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.6.</p>
</li>
<li>
<p>Update <code>hyperfine@latest</code> to 1.20.0.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="763e3324d4"><code>763e332</code></a>
Release 2.62.57</li>
<li><a
href="4af8b97fbd"><code>4af8b97</code></a>
Update <code>cargo-deny@latest</code> to 0.18.6</li>
<li><a
href="a35850f875"><code>a35850f</code></a>
Update <code>cargo-shear@latest</code> to 1.6.5</li>
<li><a
href="810fa5b442"><code>810fa5b</code></a>
Update <code>cargo-binstall@latest</code> to 1.16.2</li>
<li><a
href="f79fe7514d"><code>f79fe75</code></a>
Release 2.62.56</li>
<li><a
href="35828c1ac9"><code>35828c1</code></a>
Update <code>cargo-shear@latest</code> to 1.6.4</li>
<li><a
href="6de94973ee"><code>6de9497</code></a>
Update <code>rclone@latest</code> to 1.72.0</li>
<li><a
href="132c875eef"><code>132c875</code></a>
Release 2.62.55</li>
<li><a
href="560f08d34e"><code>560f08d</code></a>
Update <code>cargo-binstall@latest</code> to 1.16.1</li>
<li><a
href="fcce1e7255"><code>fcce1e7</code></a>
Update <code>editorconfig-checker@latest</code> to 3.5.0</li>
<li>Additional commits viewable in <a
href="537c30d2b4...763e3324d4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.52&new-version=2.62.57)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 18:55:17 +03:00
Josh McKinney
e869cb9750 feat: add Size::area() (#2226)
Add Size::area() returning u32 to avoid u16 overflow
Fixes https://github.com/ratatui/ratatui/issues/2204
2025-11-24 10:09:31 +03:00
Paul Harrison
b1d47e7718 docs: Discourage use of Buffer's pos_of, index_of (#2225)
These methods assume that the backing store of any buffer / area is linearly indexable. There are other ways that we might want to experiment in the future with how to store the values (trees, 2D allocated areas that are non-contiguous etc.). The index <-> pos conversion there isn't particularly useful. This should be an internal implementation detail of the buffer, rather than something that we expose, but we're not deprecating this for now at least.
2025-11-23 20:22:13 -08:00
WaterWhisperer
94ba82e9ca test(gauge): add benchmarks for gauge (#2221) 2025-11-23 11:37:55 -08:00
Orhun Parmaksız
500f6c5a52 chore(deps): bump fakeit to 1.3.1 (#2218)
fixes #2215
2025-11-22 14:03:16 -08:00
0xb002f0
b6588fd1fa feat: implement From<Size> for (u16, u16) (#2223) 2025-11-22 13:52:10 -08:00
Paul Harrison
c7c3498025 refactor: use saturating_add in Rect::new (#2216) 2025-11-19 21:06:27 -08:00
Matthias Beyer
b65788ce14 docs(examples): remove duplicated link (#2212) 2025-11-18 19:33:37 +03:00
dependabot[bot]
5d0a362f3e build(deps): bump crate-ci/typos from 1.39.0 to 1.39.2 (#2208)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.39.0 to
1.39.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.39.2</h2>
<h2>[1.39.2] - 2025-11-13</h2>
<h3>Fixes</h3>
<ul>
<li>Don't offer <code>entry</code> as a correction for
<code>entrys</code></li>
</ul>
<h2>v1.39.1</h2>
<h2>[1.39.1] - 2025-11-12</h2>
<h3>Features</h3>
<ul>
<li>Make <code>--help</code> more vibrant</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.39.2] - 2025-11-13</h2>
<h3>Fixes</h3>
<ul>
<li>Don't offer <code>entry</code> as a correction for
<code>entrys</code></li>
</ul>
<h2>[1.39.1] - 2025-11-12</h2>
<h3>Features</h3>
<ul>
<li>Make <code>--help</code> more vibrant</li>
</ul>
<h2>[1.39.0] - 2025-10-31</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1383">October
2025</a> changes</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>When a typo is pluralized, prefer pluralized corrections</li>
</ul>
<h2>[1.38.1] - 2025-10-07</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore common golang identifiers</li>
</ul>
<h2>[1.38.0] - 2025-10-06</h2>
<h3>Features</h3>
<ul>
<li>Update type list</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>typ</code></li>
<li>Consistently error on unused config fields</li>
</ul>
<h2>[1.37.3] - 2025-10-06</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="626c4bedb7"><code>626c4be</code></a>
chore: Release</li>
<li><a
href="c6b458db05"><code>c6b458d</code></a>
docs: Update changelog</li>
<li><a
href="eed04198a6"><code>eed0419</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1423">#1423</a>
from epage/entrys</li>
<li><a
href="40383f41a2"><code>40383f4</code></a>
fix(dict): Don't offer 'entry' as a correction for 'entrys'</li>
<li><a
href="1af53e3774"><code>1af53e3</code></a>
chore: Release</li>
<li><a
href="e5d291b81a"><code>e5d291b</code></a>
docs: Update changelog</li>
<li><a
href="55474f5ff9"><code>55474f5</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1417">#1417</a>
from starsep/colorful_help</li>
<li><a
href="78b9375950"><code>78b9375</code></a>
feat: Enable colors for typos --help</li>
<li><a
href="308f8f5788"><code>308f8f5</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1409">#1409</a>
from crate-ci/renovate/actions-download-artifact-6.x</li>
<li><a
href="cf03418f50"><code>cf03418</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1410">#1410</a>
from crate-ci/renovate/actions-setup-python-6.x</li>
<li>Additional commits viewable in <a
href="07d900b8fa...626c4bedb7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.39.0&new-version=1.39.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-17 18:32:32 +03:00
dependabot[bot]
7762effd93 build(deps): bump taiki-e/install-action from 2.62.49 to 2.62.52 (#2206)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.49 to 2.62.52.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.52</h2>
<ul>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.113.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.5.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.3.</p>
</li>
</ul>
<h2>2.62.51</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.39.2.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.4.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.9.</p>
</li>
<li>
<p>Update <code>protoc@latest</code> to 3.33.1.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.43.1.</p>
</li>
</ul>
<h2>2.62.50</h2>
<ul>
<li>
<p>Update <code>wasmtime@latest</code> to 38.0.4.</p>
</li>
<li>
<p>Update <code>coreutils@latest</code> to 0.4.0.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.62.52] - 2025-11-17</h2>
<ul>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.113.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.16.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.5.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.3.</p>
</li>
</ul>
<h2>[2.62.51] - 2025-11-14</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.39.2.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.4.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.9.</p>
</li>
<li>
<p>Update <code>protoc@latest</code> to 3.33.1.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.43.1.</p>
</li>
</ul>
<h2>[2.62.50] - 2025-11-12</h2>
<ul>
<li>
<p>Update <code>wasmtime@latest</code> to 38.0.4.</p>
</li>
<li>
<p>Update <code>coreutils@latest</code> to 0.4.0.</p>
</li>
</ul>
<h2>[2.62.49] - 2025-11-09</h2>
<ul>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.11.</p>
</li>
<li>
<p>Update <code>cargo-auditable@latest</code> to 0.7.2.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.2.</p>
</li>
</ul>
<h2>[2.62.48] - 2025-11-08</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="537c30d2b4"><code>537c30d</code></a>
Release 2.62.52</li>
<li><a
href="6881535782"><code>6881535</code></a>
Update <code>cargo-nextest@latest</code> to 0.9.113</li>
<li><a
href="4b1e2228ab"><code>4b1e222</code></a>
Update <code>cargo-binstall@latest</code> to 1.16.0</li>
<li><a
href="28efaede1c"><code>28efaed</code></a>
Update <code>mise@latest</code> to 2025.11.5</li>
<li><a
href="b9f2331284"><code>b9f2331</code></a>
Update <code>cargo-shear@latest</code> to 1.6.3</li>
<li><a
href="0be4756f42"><code>0be4756</code></a>
Release 2.62.51</li>
<li><a
href="e1c1ebb6a3"><code>e1c1ebb</code></a>
Update changelog</li>
<li><a
href="d78637d17c"><code>d78637d</code></a>
Update <code>typos@latest</code> to 1.39.2</li>
<li><a
href="107556f337"><code>107556f</code></a>
Update <code>mise@latest</code> to 2025.11.4</li>
<li><a
href="2913759b20"><code>2913759</code></a>
Update <code>uv@latest</code> to 0.9.9</li>
<li>Additional commits viewable in <a
href="44c6d64aa6...537c30d2b4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.49&new-version=2.62.52)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-17 18:32:01 +03:00
dependabot[bot]
718dcd6ccb build(deps): bump dtolnay/rust-toolchain from 6d653acede28d24f02e3cd41383119e8b1b35921 to 0f44b27771c32bda9f458f75a1e241b09791b331 (#2205)
Bumps
[dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from
6d653acede28d24f02e3cd41383119e8b1b35921 to
0f44b27771c32bda9f458f75a1e241b09791b331.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0f44b27771"><code>0f44b27</code></a>
Add 1.91.1 patch release</li>
<li>See full diff in <a
href="6d653acede...0f44b27771">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-17 18:31:12 +03:00
Josh McKinney
1dc18bf3cf feat(calendar): add width and height functions (#2198)
Fixes https://github.com/ratatui/ratatui/issues/2016

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-11-15 16:04:46 -08:00
b-guild
90a77aaf8b feat(Direction): add Direction::perpendicular(self) (#2197) 2025-11-11 21:15:58 -08:00
dependabot[bot]
d709b0380f build(deps): bump duct from 1.1.0 to 1.1.1 (#2192)
Bumps [duct](https://github.com/oconnor663/duct.rs) from 1.1.0 to 1.1.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9414b8ff71"><code>9414b8f</code></a>
version 1.1.1</li>
<li><a
href="5436d0838b"><code>5436d08</code></a>
fix test_pipe_inheritance on macOS</li>
<li><a
href="0348c93566"><code>0348c93</code></a>
test_pipe_inheritance (failing on macOS)</li>
<li>See full diff in <a
href="https://github.com/oconnor663/duct.rs/compare/1.1.0...1.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=duct&package-manager=cargo&previous-version=1.1.0&new-version=1.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-11 11:24:09 +03:00
dependabot[bot]
f8c1006058 build(deps): bump octocrab from 0.47.0 to 0.47.1 (#2193)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.47.0 to
0.47.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.47.1</h2>
<h3>Added</h3>
<ul>
<li>add missing list workflows filters (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/820">#820</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Modify <code>_put</code> method documentation (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/818">#818</a>)</li>
<li>Feature/interactions 537 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/817">#817</a>)</li>
<li>Added Feature/classrooms <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/524">#524</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/815">#815</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.47.0...v0.47.1">0.47.1</a>
- 2025-11-03</h2>
<h3>Added</h3>
<ul>
<li>add missing list workflows filters (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/820">#820</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Modify <code>_put</code> method documentation (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/818">#818</a>)</li>
<li>Feature/interactions 537 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/817">#817</a>)</li>
<li>Added Feature/classrooms <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/524">#524</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/815">#815</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6e4ae2659e"><code>6e4ae26</code></a>
chore: release v0.47.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/816">#816</a>)</li>
<li><a
href="8114a6bc42"><code>8114a6b</code></a>
feat: add missing list workflows filters (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/820">#820</a>)</li>
<li><a
href="8918c90564"><code>8918c90</code></a>
docs: Modify <code>_put</code> method documentation (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/818">#818</a>)</li>
<li><a
href="14a95d00f4"><code>14a95d0</code></a>
Feature/interactions 537 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/817">#817</a>)</li>
<li><a
href="e95fc40ddd"><code>e95fc40</code></a>
Added Feature/classrooms <a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/524">#524</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/815">#815</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.47.0...v0.47.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.47.0&new-version=0.47.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-10 21:18:06 +03:00
dependabot[bot]
c60fc65915 build(deps): bump taiki-e/install-action from 2.62.45 to 2.62.49 (#2194)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.45 to 2.62.49.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.49</h2>
<ul>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.11.</p>
</li>
<li>
<p>Update <code>cargo-auditable@latest</code> to 0.7.2.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.2.</p>
</li>
</ul>
<h2>2.62.48</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.3.</p>
</li>
<li>
<p>Update <code>cargo-audit@latest</code> to 0.22.0.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.8.</p>
</li>
<li>
<p>Update <code>cargo-udeps@latest</code> to 0.1.60.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.16.3.</p>
</li>
</ul>
<h2>2.62.47</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.0.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.111.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.2.</p>
</li>
</ul>
<h2>2.62.46</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.5.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.37.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.2.</p>
</li>
<li>
<p>Update <code>knope@latest</code> to 0.21.5.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>Update <code>coreutils@latest</code> to 0.4.0.</li>
</ul>
<h2>[2.62.49] - 2025-11-09</h2>
<ul>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.11.</p>
</li>
<li>
<p>Update <code>cargo-auditable@latest</code> to 0.7.2.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.2.</p>
</li>
</ul>
<h2>[2.62.48] - 2025-11-08</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.3.</p>
</li>
<li>
<p>Update <code>cargo-audit@latest</code> to 0.22.0.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.8.</p>
</li>
<li>
<p>Update <code>cargo-udeps@latest</code> to 0.1.60.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.16.3.</p>
</li>
</ul>
<h2>[2.62.47] - 2025-11-05</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.20.0.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.111.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.2.</p>
</li>
</ul>
<h2>[2.62.46] - 2025-11-04</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.5.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.37.0.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="44c6d64aa6"><code>44c6d64</code></a>
Release 2.62.49</li>
<li><a
href="3a701df4c2"><code>3a701df</code></a>
Update <code>cargo-binstall@latest</code> to 1.15.11</li>
<li><a
href="4242e04eb8"><code>4242e04</code></a>
Update <code>cargo-auditable@latest</code> to 0.7.2</li>
<li><a
href="3df5533ef8"><code>3df5533</code></a>
Update <code>vacuum@latest</code> to 0.20.2</li>
<li><a
href="e797ba6a25"><code>e797ba6</code></a>
Release 2.62.48</li>
<li><a
href="bcf91e02ac"><code>bcf91e0</code></a>
Update <code>mise@latest</code> to 2025.11.3</li>
<li><a
href="e78113b60c"><code>e78113b</code></a>
Update <code>cargo-audit@latest</code> to 0.22.0</li>
<li><a
href="0ef486444e"><code>0ef4864</code></a>
Update <code>vacuum@latest</code> to 0.20.1</li>
<li><a
href="5eda7b1985"><code>5eda7b1</code></a>
Update <code>uv@latest</code> to 0.9.8</li>
<li><a
href="3853a413e6"><code>3853a41</code></a>
Update <code>cargo-udeps@latest</code> to 0.1.60</li>
<li>Additional commits viewable in <a
href="81ee1d48d9...44c6d64aa6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.45&new-version=2.62.49)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-10 20:37:50 +03:00
dependabot[bot]
6c2f276d1c build(deps): bump trybuild from 1.0.113 to 1.0.114 (#2191)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.113 to
1.0.114.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.114</h2>
<ul>
<li>Normalize indentation of rustc suggestion lines (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/319">#319</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="51f9418017"><code>51f9418</code></a>
Release 1.0.114</li>
<li><a
href="b4f6299028"><code>b4f6299</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/319">#319</a>
from dtolnay/suggestion</li>
<li><a
href="781a773986"><code>781a773</code></a>
Normalize indentation of rustc suggestion lines</li>
<li><a
href="c610b402ae"><code>c610b40</code></a>
Add test that reproduces misalignment of help under note</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.113...1.0.114">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.113&new-version=1.0.114)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-10 20:37:06 +03:00
dependabot[bot]
4cb1b06371 build(deps): bump rust-lang/crates-io-auth-action from 1.0.2 to 1.0.3 (#2195)
Bumps
[rust-lang/crates-io-auth-action](https://github.com/rust-lang/crates-io-auth-action)
from 1.0.2 to 1.0.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/crates-io-auth-action/releases">rust-lang/crates-io-auth-action's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.3</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update dependency eslint to v9.38.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/88">rust-lang/crates-io-auth-action#88</a></li>
<li>chore(deps): update dependency msw to v2.11.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/89">rust-lang/crates-io-auth-action#89</a></li>
<li>chore(deps): update dependency typescript-eslint to v8.46.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/90">rust-lang/crates-io-auth-action#90</a></li>
<li>refactor: Migrate from tsup to tsdown by <a
href="https://github.com/kingsword09"><code>@​kingsword09</code></a> in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/92">rust-lang/crates-io-auth-action#92</a></li>
<li>chore(deps): update dependency typescript-eslint to v8.46.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/97">rust-lang/crates-io-auth-action#97</a></li>
<li>chore(deps): update dependency globals to v16.5.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/96">rust-lang/crates-io-auth-action#96</a></li>
<li>chore(deps): update dependency msw to v2.12.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/98">rust-lang/crates-io-auth-action#98</a></li>
<li>chore(deps): update lycheeverse/lychee-action action to v2.7.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/94">rust-lang/crates-io-auth-action#94</a></li>
<li>chore(deps): update dependency eslint to v9.39.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/93">rust-lang/crates-io-auth-action#93</a></li>
<li>chore(deps): update dependency vitest to v4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/91">rust-lang/crates-io-auth-action#91</a></li>
<li>update tsdown to version 0.16 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/100">rust-lang/crates-io-auth-action#100</a></li>
<li>chore(deps): lock file maintenance by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/95">rust-lang/crates-io-auth-action#95</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/crates-io-auth-action/compare/v1.0.2...v1.0.3">https://github.com/rust-lang/crates-io-auth-action/compare/v1.0.2...v1.0.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b7e9a28ede"><code>b7e9a28</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/95">#95</a>
from rust-lang/renovate/lock-file-maintenance</li>
<li><a
href="7ac4f7f0b8"><code>7ac4f7f</code></a>
chore(deps): lock file maintenance</li>
<li><a
href="eeaaca05a4"><code>eeaaca0</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/100">#100</a>
from rust-lang/update-tsdown-to-version-0-16</li>
<li><a
href="9002361790"><code>9002361</code></a>
update tsdown to version 0.16</li>
<li><a
href="a06c97ab62"><code>a06c97a</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/91">#91</a>
from rust-lang/renovate/major-vitest-monorepo</li>
<li><a
href="2d6d1934da"><code>2d6d193</code></a>
chore(deps): update dependency vitest to v4</li>
<li><a
href="5c091fa7bf"><code>5c091fa</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/93">#93</a>
from rust-lang/renovate/eslint-monorepo</li>
<li><a
href="14c141348e"><code>14c1413</code></a>
chore(deps): update dependency eslint to v9.39.1</li>
<li><a
href="8a0dbdbd2a"><code>8a0dbdb</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/94">#94</a>
from rust-lang/renovate/github-actions</li>
<li><a
href="2c172cf087"><code>2c172cf</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/96">#96</a>
from rust-lang/renovate/globals-16.x-lockfile</li>
<li>Additional commits viewable in <a
href="041cce5b4b...b7e9a28ede">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rust-lang/crates-io-auth-action&package-manager=github_actions&previous-version=1.0.2&new-version=1.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-10 20:24:05 +03:00
dependabot[bot]
09b943d5b9 build(deps): bump crate-ci/typos from 1.38.1 to 1.39.0 (#2181)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.38.1 to
1.39.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.39.0</h2>
<h2>[1.39.0] - 2025-10-31</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1383">October
2025</a> changes</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>When a typo is pluralized, prefer pluralized corrections</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.39.0] - 2025-10-31</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1383">October
2025</a> changes</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>When a typo is pluralized, prefer pluralized corrections</li>
</ul>
<h2>[1.38.1] - 2025-10-07</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore common golang identifiers</li>
</ul>
<h2>[1.38.0] - 2025-10-06</h2>
<h3>Features</h3>
<ul>
<li>Update type list</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>typ</code></li>
<li>Consistently error on unused config fields</li>
</ul>
<h2>[1.37.3] - 2025-10-06</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>PN</code> for <code>bitbake</code> file
types</li>
</ul>
<h2>[1.37.2] - 2025-10-03</h2>
<h3>Fixes</h3>
<ul>
<li>Don't suggest <code>diagnostic</code> for <code>diagnotics</code>,
preferring <code>diagnostics</code></li>
</ul>
<h2>[1.37.1] - 2025-10-01</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="07d900b8fa"><code>07d900b</code></a>
chore: Release</li>
<li><a
href="fcce1f892d"><code>fcce1f8</code></a>
chore: Release</li>
<li><a
href="85692fd91b"><code>85692fd</code></a>
docs: Update changelog</li>
<li><a
href="da7527cc35"><code>da7527c</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1406">#1406</a>
from epage/oct</li>
<li><a
href="9046b5b2e9"><code>9046b5b</code></a>
feat(dict): October additions</li>
<li><a
href="9a86c0a0c0"><code>9a86c0a</code></a>
docs: Update screenshot</li>
<li>See full diff in <a
href="80c8a4945e...07d900b8fa">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.38.1&new-version=1.39.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-11-03 18:41:31 +03:00
dependabot[bot]
ad56456e23 build(deps): bump taiki-e/install-action from 2.62.38 to 2.62.45 (#2182)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.38 to 2.62.45.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.45</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.16.2.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.10.</p>
</li>
<li>
<p>Update <code>ubi@latest</code> to 0.8.4.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.1.</p>
</li>
<li>
<p>Update <code>cargo-semver-checks@latest</code> to 0.45.0.</p>
</li>
</ul>
<h2>2.62.44</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.0.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.110.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.39.0.</p>
</li>
</ul>
<h2>2.62.43</h2>
<ul>
<li>
<p>Update <code>uv@latest</code> to 0.9.7.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.21.</p>
</li>
</ul>
<h2>2.62.42</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.20.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.109.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.4.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.6.</p>
</li>
</ul>
<h2>2.62.41</h2>
<ul>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.2.4.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.16.1.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.2.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.19.</p>
</li>
</ul>
<h2>2.62.40</h2>
<ul>
<li>Update <code>wasm-bindgen@latest</code> to 0.2.105.</li>
</ul>
<h2>2.62.39</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.1.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.1.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.9.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.62.45] - 2025-11-02</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.16.2.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.10.</p>
</li>
<li>
<p>Update <code>ubi@latest</code> to 0.8.4.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.11.1.</p>
</li>
<li>
<p>Update <code>cargo-semver-checks@latest</code> to 0.45.0.</p>
</li>
</ul>
<h2>[2.62.44] - 2025-11-01</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.11.0.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.110.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.39.0.</p>
</li>
</ul>
<h2>[2.62.43] - 2025-10-31</h2>
<ul>
<li>
<p>Update <code>uv@latest</code> to 0.9.7.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.21.</p>
</li>
</ul>
<h2>[2.62.42] - 2025-10-30</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.20.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.109.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.4.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.6.</p>
</li>
</ul>
<h2>[2.62.41] - 2025-10-29</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="81ee1d48d9"><code>81ee1d4</code></a>
Release 2.62.45</li>
<li><a
href="7e77e5bd52"><code>7e77e5b</code></a>
Update <code>zizmor@latest</code> to 1.16.2</li>
<li><a
href="cbe581c5e1"><code>cbe581c</code></a>
Update <code>cargo-binstall@latest</code> to 1.15.10</li>
<li><a
href="f545311470"><code>f545311</code></a>
Update <code>ubi@latest</code> to 0.8.4</li>
<li><a
href="83d4502be0"><code>83d4502</code></a>
Update <code>mise@latest</code> to 2025.11.1</li>
<li><a
href="2daecf63c1"><code>2daecf6</code></a>
Update <code>cargo-semver-checks@latest</code> to 0.45.0</li>
<li><a
href="47be02f2de"><code>47be02f</code></a>
Release 2.62.44</li>
<li><a
href="5f7c916518"><code>5f7c916</code></a>
Update <code>mise@latest</code> to 2025.11.0</li>
<li><a
href="3e60733ebb"><code>3e60733</code></a>
Update <code>cargo-nextest@latest</code> to 0.9.110</li>
<li><a
href="2ef505df34"><code>2ef505d</code></a>
Update <code>typos@latest</code> to 1.39.0</li>
<li>Additional commits viewable in <a
href="c5b1b6f479...81ee1d48d9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.38&new-version=2.62.45)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-03 18:34:59 +03:00
dependabot[bot]
6957bce264 build(deps): bump clap from 4.5.50 to 4.5.51 (#2185)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.50 to 4.5.51.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.51</h2>
<h2>[4.5.51] - 2025-10-29</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Correctly calculate padding for short flags that
take a value</li>
<li><em>(help)</em> Don't panic on short flags using
<code>ArgAction::Count</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.51] - 2025-10-29</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Correctly calculate padding for short flags that
take a value</li>
<li><em>(help)</em> Don't panic on short flags using
<code>ArgAction::Count</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b49dae25ec"><code>b49dae2</code></a>
chore: Release</li>
<li><a
href="d37b0b57ab"><code>d37b0b5</code></a>
docs: Update changelog</li>
<li><a
href="3398b6ab10"><code>3398b6a</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6009">#6009</a>
from gtema/complete_try_generate</li>
<li><a
href="21fc9e46d4"><code>21fc9e4</code></a>
feat(clap-complete): Introduce fallible generator</li>
<li><a
href="bd01bdc0ff"><code>bd01bdc</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6012">#6012</a>
from epage/sub</li>
<li><a
href="ed0c63deba"><code>ed0c63d</code></a>
docs(derive): Specify arg_required_else_help is set for users</li>
<li><a
href="e2188d9af3"><code>e2188d9</code></a>
chore(deps): Update Rust Stable to v1.87 (<a
href="https://redirect.github.com/clap-rs/clap/issues/6004">#6004</a>)</li>
<li><a
href="e01f2b7640"><code>e01f2b7</code></a>
docs: Cleanup unused links</li>
<li><a
href="6b12a81baf"><code>6b12a81</code></a>
chore: Release</li>
<li><a
href="8dd92a792d"><code>8dd92a7</code></a>
docs: Update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.50...clap_complete-v4.5.51">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.50&new-version=4.5.51)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-03 18:34:29 +03:00
dependabot[bot]
06f0c67131 build(deps): bump trybuild from 1.0.112 to 1.0.113 (#2184)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.112 to
1.0.113.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.113</h2>
<ul>
<li>Update <code>target-triple</code> dependency to v1</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f224ff80dc"><code>f224ff8</code></a>
Release 1.0.113</li>
<li><a
href="f19d0bd11d"><code>f19d0bd</code></a>
Update target-triple dependency to v1</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.112...1.0.113">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.112&new-version=1.0.113)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-03 18:34:08 +03:00
dependabot[bot]
f10a9e8308 build(deps): bump kasuari from 0.4.9 to 0.4.10 (#2183)
Bumps [kasuari](https://github.com/ratatui/kasuari) from 0.4.9 to
0.4.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/kasuari/releases">kasuari's
releases</a>.</em></p>
<blockquote>
<h2>v0.4.10</h2>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump thiserror from 2.0.16 to 2.0.17 in the
rust-dependencies group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/36">#36</a>)</li>
<li><em>(features)</em> improve feature flags docs (<a
href="https://redirect.github.com/ratatui/kasuari/pull/35">#35</a>)</li>
<li>Fixed a bug that lead to the leaking of <code>Symbol</code>s in the
objective function. (<a
href="https://redirect.github.com/ratatui/kasuari/pull/37">#37</a>)</li>
<li>Bump MSRV to 1.85 to use clamp functions in const context (<a
href="https://redirect.github.com/ratatui/kasuari/pull/39">#39</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>bump the MSRV to 1.85 and rely on the standard
<code>f64::clamp</code> in const contexts</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/kasuari/blob/main/CHANGELOG.md">kasuari's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/kasuari/compare/v0.4.9...v0.4.10">0.4.10</a>
- 2025-11-02</h2>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump thiserror from 2.0.16 to 2.0.17 in the
rust-dependencies group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/36">#36</a>)</li>
<li><em>(features)</em> improve feature flags docs (<a
href="https://redirect.github.com/ratatui/kasuari/pull/35">#35</a>)</li>
<li>Fixed a bug that lead to the leaking of <code>Symbol</code>s in the
objective function. (<a
href="https://redirect.github.com/ratatui/kasuari/pull/37">#37</a>)</li>
<li>Bump MSRV to 1.85 to use clamp functions in const context (<a
href="https://redirect.github.com/ratatui/kasuari/pull/39">#39</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>bump the MSRV to 1.85 and rely on the standard
<code>f64::clamp</code> in const contexts</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="20e044f28d"><code>20e044f</code></a>
chore: release v0.4.10 (<a
href="https://redirect.github.com/ratatui/kasuari/issues/40">#40</a>)</li>
<li><a
href="3365fcfa78"><code>3365fcf</code></a>
build(deps): bump thiserror from 2.0.16 to 2.0.17 in the
rust-dependencies gr...</li>
<li><a
href="0dabc89b59"><code>0dabc89</code></a>
docs(features): improve feature flags docs (<a
href="https://redirect.github.com/ratatui/kasuari/issues/35">#35</a>)</li>
<li><a
href="c9689a278c"><code>c9689a2</code></a>
Fixed a bug that lead to the leaking of <code>Symbol</code>s in the
objective function. ...</li>
<li><a
href="1c16c27ef5"><code>1c16c27</code></a>
Bump MSRV to 1.85 to use clamp functions in const context (<a
href="https://redirect.github.com/ratatui/kasuari/issues/39">#39</a>)</li>
<li>See full diff in <a
href="https://github.com/ratatui/kasuari/compare/v0.4.9...v0.4.10">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=kasuari&package-manager=cargo&previous-version=0.4.9&new-version=0.4.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-03 18:33:39 +03:00
Josh McKinney
4c3c0540cd feat(serde): Handle null modifiers in serde Style (#2172)
Allow `Style`'s `add_modifier` and `sub_modifier` fields to
deserialize from `null`
2025-11-01 17:47:56 -07:00
Josh McKinney
f919b25ea6 fix: string_to_string lint is now part of implicit_clone (#2173) 2025-11-02 00:48:44 +01:00
Orhun Parmaksız
714c6584c3 chore(workspace): use ratatui dependency from the workspace (#2169)
Fix #2166
2025-11-01 15:55:40 -07:00
Orhun Parmaksız
3812f69997 chore(cargo): update the documentation metadata for crates (#2170)
also follows the same format for the entries (`name` -> `version` ->
`description` -> etc. in order)
2025-11-01 12:36:37 -07:00
Orhun Parmaksız
16b76e36ee fix(demo): update the width of demo2 tape (#2164)
![](https://github.com/ratatui/ratatui/blob/images/examples/demo2.gif?raw=true)

fixes #1721
2025-11-01 14:00:11 +03:00
github-actions[bot]
fbe6549d05 chore: release beta (#2162)
## 🤖 New release

* `ratatui-core`: 0.1.0-alpha.6 -> 0.1.0-beta.0
* `ratatui-crossterm`: 0.1.0-alpha.5 -> 0.1.0-beta.0
* `ratatui-widgets`: 0.3.0-alpha.5 -> 0.3.0-beta.0
* `ratatui-macros`: 0.7.0-alpha.4 -> 0.7.0-beta.0
* `ratatui-termwiz`: 0.1.0-alpha.5 -> 0.1.0-beta.0
* `ratatui-termion`: 0.1.0-alpha.5 -> 0.1.0-beta.0
* `ratatui`: 0.30.0-alpha.5 -> 0.30.0-beta.0

<details><summary><i><b>Changelog</b></i></summary><p>

##
[v0.30.0-beta.0](https://github.com/ratatui/ratatui/releases/tag/v0.30.0-beta.0)
- 2025-10-28

> _"Rats don't just survive; they discover; they create. ... I mean,
just look at what they do with
the terminal!" – Remy & Orhun_

We are excited to announce the biggest release of `ratatui` so far - a
Rust library that's all about cooking up TUIs 👨‍🍳🐀

 **WIP Release highlights**:
<https://ratatui-0-30.ratatui.pages.dev/highlights/v030/>

⚠️ List of breaking changes can be found
[here](https://github.com/ratatui/ratatui/blob/main/BREAKING-CHANGES.md).

### Features

-
[56d5e05](56d5e05762)
_(bar)_ Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

> BREAKING CHANGE:label and text_value now accept `Into<>` types, which
  > breaks type inference.
  >
  > ```diff
  > - Bar::default().label("foo".into());
  > + Bar::default().label("foo");
  > ```
  >
  > ```diff
  > - Bar::default().text_value("bar".into());
  > + Bar::default().text_value("bar");
  > ```

-
[b76ad3b](b76ad3b02e)
_(bar)_ Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

  > Related:https://github.com/ratatui/ratatui/issues/683

-
[e15fefa](e15fefa922)
_(barchar)_ Add BarChart::grouped constructor by @joshka in
[#1513](https://github.com/ratatui/ratatui/pull/1513)

> Add a new constructor to the `BarChart` widget that allows creating a
  > grouped barchart with multiple groups of bars.
  >
> Also add a new constructor to the `BarGroup` widget that allows
creating
  > a group of bars with a label.

-
[369b18e](369b18eef2)
_(barchart)_ Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

  > Adds constructor methods for BarChart, BarGroup, and Bar

-
[2d713d7](2d713d723d)
_(crossterm)_ Allow multiple crossterm versions by @joshka in
[#1841](https://github.com/ratatui/ratatui/pull/1841)

  > This commit introduces feature flags to make it possible for widget
  > library authors to depend on a specific version of crossterm without
> causing version conflicts. This should make it easier for libraries
and
  > apps to update crossterm versions more easily.
  >
> The available feature flags are `crossterm_0_28` and `crossterm_0_29`.
> By default, the latest version is enabled. If a multiple features are
  > enabled we choose the latest version. We will in general support at
  > least the last two major (0.x) versions of crossterm, and will only
  > remove versions in a major version bump.

-
[d99984f](d99984f1e9)
_(layout)_ Add `Flex::SpaceEvenly` by @kdheepak in
[#1952](https://github.com/ratatui/ratatui/pull/1952) [**breaking**]

  > Resolves https://github.com/ratatui/ratatui/issues/1951
  >
> BREAKING CHANGE:Old `Flex::SpaceAround` behavior is available by using
  >
  > `Flex::SpaceEvenly` and new
  >
  > `Flex::SpaceAround` now distributes space evenly around each element
  > except the middle spacers
  > are twice the size of first and last elements
  >
  > With this change, the following variants of `Flex` are supported:
  >
> - `Flex::Start`: Aligns items to the start; excess space appears at
the
  >   end.
  > - `Flex::End`: Aligns items to the end; excess space appears at the
  >   start.
  > - `Flex::Center`: Centers items with equal space on both sides.
> - `Flex::SpaceAround` (**new**): Distributes space _around_ items;
space
  >   between items is _twice_ the edge spacing.
> - `Flex::SpaceBetween`: Distributes space _evenly between_ items
except
  >   no space at the edges.
> - `Flex::SpaceEvenly` (**previously `Flex::SpaceAround`**):
Distributes
  >   space _evenly between_ items and edges.
> - `Flex::Legacy`: Preserves legacy behavior, placing all excess space
at
  >   the end.
  >
  > This aligns behavior of `Flex` with CSS flexbox more closely.
  >
  > The following is a screenshot in action:
  >
  > <img width="1090" alt="image"
  >
>
src="https://github.com/user-attachments/assets/2c7cd797-27bd-4242-a824-4565d369227b"
  > />
  >
  > ***

-
[9275d34](9275d3421c)
_(layout)_ Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[7ad9c29](7ad9c29eac)
_(linegauge)_ Customized symbols by @sectore in
[#1601](https://github.com/ratatui/ratatui/pull/1601)

  > With this PR any symbol (`&str`) can be used to render `filled` and
  > `unfilled` parts of `LineGauge` now. Before that change, only
>
[`symbols::line::Set`](https://docs.rs/ratatui/latest/ratatui/symbols/line/struct.Set.html)
  > was accepted.
  >
  > Note:New methods are introduced to define those symbols:
  > `filled_symbol` and `unfilled_symbol`. The method
>
[`line_set`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.LineGauge.html#method.line_set)
  > is still there, but marked as `deprecated`.
  >
>
![line_gauge](https://github.com/user-attachments/assets/cae308b8-151b-461d-8af6-9a20012adf2f)

-
[92a19cb](92a19cb604)
_(list)_ Highlight symbol styling by @airblast-dev in
[#1595](https://github.com/ratatui/ratatui/pull/1595) [**breaking**]

  > Allow styling for `List`'s highlight symbol
  >
  > This change makes it so anything that implements `Into<Line>` can be
  > used as a highlight symbol.
  >
> BREAKING CHANGE:`List::highlight_symbol` can no longer be used in
const
  > context
  >
  > BREAKING CHANGE:`List::highlight_symbol` accepted `&str`. Conversion
  > methods that rely on type inference will need to be rewritten as the
  > compiler cannot infer the type.
  >
  > closes:https://github.com/ratatui/ratatui/issues/1443
  >
  > ***

-
[e89a526](e89a526aab)
_(no_std)_ Portable-atomic integration for targets with no atomic types
by @j-g00da in [#2076](https://github.com/ratatui/ratatui/pull/2076)

  > Improves compatibility with no-std targets that don't support atomic
  > types.
  >
  > We support three different scenarios depending on the target:
  >
  > 1. Terminal applications and other std targets (e.g. espidf):
  >
  > - `std` enabled, `portable-atomic` disabled
  >
  > 2. Embedded targets with atomic types, bare metal x86, etc.:
  >
  > - `std` disabled `portable-atomic` disabled
  >
  > 3. Embedded targets without atomic types (e.g. single-core MCUs):
  >
  > - `std` disabled, `portable-atomic` enabled
  >
> Turning on `portable-atomic` together with `std` will fall back to
`std`
  > atomic.

-
[1399d95](1399d95ae0)
_(no_std)_ Make palette and serde features depends on std by @j-g00da in
[#1919](https://github.com/ratatui/ratatui/pull/1919)

-
[b32f781](b32f78195b)
_(no_std)_ Make `ratatui-macros` no-std by @j-g00da in
[#1865](https://github.com/ratatui/ratatui/pull/1865)

-
[3e1c72f](3e1c72fb27)
_(no_std)_ Make ratatui compatible with `#![no_std]` by @j-g00da in
[#1794](https://github.com/ratatui/ratatui/pull/1794) [**breaking**]

  > Resolves #1781
  >
  > This PR makes it possible to compile ratatui with `#![no_std]`.
  > Also makes me answer "We Are So Embedded" to "Are We Embedded Yet?"

-
[ab48c06](ab48c06171)
_(no_std)_ Option to disable layout cache for `no_std` compatibility by
@j-g00da in [#1795](https://github.com/ratatui/ratatui/pull/1795)
[**breaking**]

  > Resolves #1780
  >
  > BREAKING CHANGE:Disabling `default-features` will now disable layout
  > cache, which can have a negative impact on performance.
  >
  > `Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` are now only
  > available if `layout-cache` feature is enabled.

-
[09173d1](09173d1829)
_(no_std)_ Make `TestBackend::Error` `Infallible` by @j-g00da in
[#1823](https://github.com/ratatui/ratatui/pull/1823) [**breaking**]

> BREAKING CHANGE:`TestBackend` now uses `core::convert::Infallible` for
  > error handling instead of `std::io::Error`

-
[007713e](007713e50a)
_(no_std)_ Replace `Backend`'s `io::Error` usages with associated
`Error` type by @j-g00da in
[#1778](https://github.com/ratatui/ratatui/pull/1778) [**breaking**]

  > Resolves #1775
  >
> BREAKING CHANGE:Custom backends now have to implement `Backend::Error`
> and `Backend::clear_region`. Additionally some generic `Backend` usage
  > will have to explicitly set trait bounds for `Backend::Error`.

-
[a42a17e](a42a17e184)
_(no_std)_ Make `ratatui-widgets` `no_std` by @j-g00da in
[#1779](https://github.com/ratatui/ratatui/pull/1779)

  > Resolves #1776

-
[5a232a3](5a232a3115)
_(no_std)_ Remove redundant `std` usages in `ratatui-widgets` by
@j-g00da in [#1762](https://github.com/ratatui/ratatui/pull/1762)

-
[ebe10cd](ebe10cd81f)
_(no_std)_ Remove redundant `std` usages in `ratatui-core` by @j-g00da
in [#1753](https://github.com/ratatui/ratatui/pull/1753)

  > Resolves https://github.com/ratatui/ratatui/issues/1751

-
[08b08cc](08b08cc45b)
_(rect)_ Centering by @janTatesa in
[#1814](https://github.com/ratatui/ratatui/pull/1814)

  > Resolves #617

-
[ff729b7](ff729b7607)
_(scrollbar)_ Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

> As of now it is possible to change the position of the Scrollbar but
not
  > possible to retrieve the position for further use. e.g.
  >
  > ```rust
  > let mut state = ScrollbarState::default();
  > state.next();
  > ```
  >
> This commit adds a new method "`current_position`" (since `position`
is
  > already taken by the fluent setter) for that purpose:
  >
  > ```rust
  > let index = state.get_position(); // yay
  > ```
  >
  > See #1545 for the concrete usage of this.

-
[b9da192](b9da1926a0)
_(serde)_ Derive Serialize/Deserialize for alignment enums by @j-g00da
in [#1957](https://github.com/ratatui/ratatui/pull/1957)

  > Resolves #1954

-
[89b7421](89b74214d9)
_(serde)_ Derive Serialize/Deserialize for additional structs/enums by
@aurreland in [#1883](https://github.com/ratatui/ratatui/pull/1883)

  > This PR adds `#[derive(Serialize, Deserialize)]` to the following
  > structs:
  >
  > - `Constraint`
  > - `Direction`
  > - `Spacing`
  > - `Layout`
  > - `AccentedPalette`
  > - `NonAccentedPalette`
  > - `Palette`
  > - `Padding`
  > - `Borders`
  > - `BorderType`
  > - `ListDirection`
  > - `ScrollbarOrientation`
  > - `ScrollDirection`
  > - `RenderDirection`
  > - `HighlightSpacing`
  >
  > Fixes #1877

-
[03f3f6d](03f3f6df35)
_(style)_ Allow add/sub modifiers to be omitted in Style serialization.
by @rcorre in [#2057](https://github.com/ratatui/ratatui/pull/2057)

  > It's really useful that Style supports Deserialize, this allows TUI
  > apps to have configurable theming without much extra code.
  >
  > However, deserializing a style currently fails if `add_modifier` and
  > `sub_modifier` are
  > not specified. That means the following TOML config:
  >
  > ```toml
  > [theme.highlight]
  > fg = "white"
  > bg = "black"
  > ```
  >
> Will fail to deserialize with "missing field `add_modifier`". It
should
  > be possible
  > to omit modifiers and have them default to "none".

-
[985cd05](985cd05573)
_(symbols)_ Add dashed borders by @theotchlx in
[#1573](https://github.com/ratatui/ratatui/pull/1573)

  > Adds several new border sets:
  >
  > - ratatui::symbols::border::LIGHT_DOUBLE_DASHED
  > - ratatui::symbols::border::HEAVY_DOUBLE_DASHED
  > - ratatui::symbols::border::LIGHT_TRIPLE_DASHED
  > - ratatui::symbols::border::HEAVY_TRIPLE_DASHED
  > - ratatui::symbols::border::LIGHT_QUADRUPLE_DASHED
  > - ratatui::symbols::border::HEAVY_QUADRUPLE_DASHED
  >
  > And corresponding variants to the ratatui::widgets::BorderType enum
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1355

-
[4c301e8](4c301e891d)
_(text)_ Implement `AddAssign` for `Text` by @acuteenvy in
[#1956](https://github.com/ratatui/ratatui/pull/1956)

> This makes it possible to add a second `Text` instance to a first one
using the += operator.
  >
  > ```rust
  > let mut text = Text::from("line 1");
  > text += Text::from("line 2");
  > ```
  >
> Style and alignment applied to the second text is ignored (though
styles and alignment of lines and spans are copied).

-
[ce4856a](ce4856a65f)
_(widgets)_ Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

> Allows constructing `Rectangle`, `Points` and `Circle` using the `new`
  > method instead of initializing with the public fields directly.

-
[75b78be](75b78be09f)
_(uncategorized)_ Add width() impl for tabs by @joshka in
[#2049](https://github.com/ratatui/ratatui/pull/2049)

> The purpose of this is to make it easy for apps to easily calculate
the
  > total tab width including all dividers and padding.

-
[8188ed3](8188ed3950)
_(uncategorized)_ Implement UnicodeWidthStr for Text/Line/Span by
@joshka in [#2030](https://github.com/ratatui/ratatui/pull/2030)

  > You can now calculate the width of any Text/Line/Span using the
> UnicodeWidthStr trait instead of the width method on the type. This
also
  > makes it possible to use the width_cjk() method if needed.

-
[c845fec](c845fec765)
_(uncategorized)_ Add conversion from Size to Rect by @joshka in
[#2028](https://github.com/ratatui/ratatui/pull/2028)

  > `Rect::from(size)` returns a new Rect at the origin (0, 0) with the
  > specified `Size`

-
[017af11](017af11b2b)
_(uncategorized)_ Preserve block titles when merging borders by @j-g00da
in [#1977](https://github.com/ratatui/ratatui/pull/1977)

  > Resolves #1939

-
[6dcd53b](6dcd53bc6b)
_(uncategorized)_ Add ergonomic methods for layouting Rects by @joshka
in [#1909](https://github.com/ratatui/ratatui/pull/1909)

> This commit introduces new methods for the `Rect` struct that simplify
> the process of splitting a `Rect` into sub-rects according to a given
> `Layout`. By putting these methods on the `Rect` struct, we make it a
> bit more natural that a layout is applied to the `Rect` itself, rather
  > than passing a `Rect` to the `Layout` struct to be split.
  >
> Adds:- `Rect::layout` and `Rect::try_layout` methods that allow
splitting a
  > `Rect` into an array of sub-rects according to a given `Layout`.
  >
  > - `Rect::layout_vec` method that returns a `Vec` of sub-rects.
> - `Layout::try_areas` method that returns an array of sub-rects, with
  >   compile-time checks for the number of constraints. This is added
  >   mainly for consistency with the new `Rect` methods.
  >
  > ```rust
  > use ratatui_core::layout::{Layout, Constraint, Rect};
  > let area = Rect::new(0, 0, 10, 10);
  > let layout = Layout::vertical([Constraint::Fill(1); 2]);
  >
  > // Rect::layout() infers the number of constraints at compile time:
  > let [top, main] = area.layout(&layout);
  >
> // Rect::try_layout() and Layout::try_areas() do the same, but return
a
  > // Result:
  > let [top, main] = area.try_layout(&layout)?;
  > let [top, main] = layout.try_areas(area)?;
  >
  > // Rect::layout_vec() returns a Vec of sub-rects:
  > let areas_vec = area.layout_vec(&layout);
  >
  > // you can also explicitly specify the number of constraints:
  > let areas = area.layout::<2>(&layout);
  > let areas = area.try_layout::<2>(&layout)?;
  > let areas = layout.try_areas::<2>(area)?;
  > ```

-
[0c3872f](0c3872f1c5)
_(uncategorized)_ Add Rect::outer() by @joshka in
[#1929](https://github.com/ratatui/ratatui/pull/1929)

  > Fixes:https://github.com/ratatui/ratatui/issues/211

-
[7bc78bc](7bc78bca1b)
_(uncategorized)_ Add ratatui::run() method by @joshka in
[#1707](https://github.com/ratatui/ratatui/pull/1707)

> This introduces a new `ratatui::run()` method which runs a closure
with
> a terminal initialized with reasonable defaults for most applications.
  > This calls `ratatui::init()` before running the closure and
> `ratatui::restore()` after the closure completes, and returns the
result
  > of the closure.
  >
  > A minimal hello world example using the new `ratatui::run()` method:
  >
  > ```rust
  > fn main() -> Result<(), Box<dyn std::error::Error>> {
  >     ratatui::run(|terminal| {
  >         loop {
> terminal.draw(|frame| frame.render_widget("Hello World!",
frame.area()))?;
  >             if crossterm::event::read()?.is_key_press() {
  >                 break Ok(());
  >             }
  >         }
  >     })
  > }
  > ```
  >
  > Of course, this also works both with apps that use free methods and
  > structs:
  >
  > ```rust
> fn run(terminal: &mut DefaultTerminal) -> Result<(), AppError> { ... }
  >
  > ratatui::run(run)?;
  > ```
  >
  > ```rust
  > struct App { ... }
  >
  > impl App {
  >     fn new() -> Self { ... }
> fn run(mut self, terminal: &mut DefaultTerminal) -> Result<(),
AppError> { ... }
  > }
  >
  > ratatui::run(|terminal| App::new().run(terminal))?;
  > ```

-
[b6fbfcd](b6fbfcdd1c)
_(uncategorized)_ Add lifetime to symbol sets by @joshka in
[#1935](https://github.com/ratatui/ratatui/pull/1935)

> This makes it possible to create symbol sets at runtime with
non-static
  > lifetimes.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1722

-
[488e5f0](488e5f020f)
_(uncategorized)_ Make `border!` work without importing `Borders` by
@j-g00da in [#1918](https://github.com/ratatui/ratatui/pull/1918)

> Currently using `border!` macro requires explicit import of `Borders`
  > which is unnecessary.

-
[671c2b4](671c2b4fd4)
_(uncategorized)_ Support merging the borders of blocks by @j-g00da

> When two borders overlap, they will automatically merge into a single,
  > clean border instead of overlapping.
  >
> This improves visual clarity and reduces rendering glitches around
corners.
  >
  > For example:
  >
  > ```
> assert_eq!(Cell::new("┘").merge_symbol("┏",
MergeStrategy::Exact).symbol(), "╆");
  > ```

-
[702fff5](702fff501c)
_(uncategorized)_ Implement stylize methods directly on Style by @joshka
in [#1572](https://github.com/ratatui/ratatui/pull/1572) [**breaking**]

> This makes it possible to create constants using the shorthand
methods.
  >
  > ```rust
  > const MY_STYLE: Style = Style::new().blue().on_black();
  > ```
  >
  > Rather than implementing Styled for Style and then adding extension
  > methods that implement the Stylize shorthands, this implements the
  > methods as const functions directly on Style.
  >
  > BREAKING CHANGE:`Style` no longer implements `Styled`. Any calls to
  > methods implemented by the blanket implementation of Stylize are now
> defined directly on Style. Remove the Stylize import if it is no
longer
  > used by your code.
  >
> The `reset()` method does not have a direct replacement, as it clashes
  > with the existing `reset()` method. Use `Style::reset()` rather than
  > `some_style.reset()`
  >
  > Fixes:#1158

-
[4fcd238](4fcd238e1e)
_(uncategorized)_ Support no-std for calendar widget by @joshka in
[#1852](https://github.com/ratatui/ratatui/pull/1852)

> Removes the CalendarEventStore::today() function in no-std
environments

-
[53cdbbc](53cdbbccd5)
_(uncategorized)_ Enable serde propagation to backend crates (crossterm,
termion) by @ArjunKrish7356 in
[#1812](https://github.com/ratatui/ratatui/pull/1812)

> This PR propagates the serde feature from the main ratatui crate to
the
  > ratatui-crossterm and ratatui-termion backend crates. Solves #1805

-
[6836a69](6836a6903e)
_(uncategorized)_ Implement styled for other primitives by @aschey in
[#1684](https://github.com/ratatui/ratatui/pull/1684)

-
[fcb47d6](fcb47d60f3)
_(uncategorized)_ Rename Alignment to HorizontalAlignment and add
VerticalAlignment by @joshka in
[#1735](https://github.com/ratatui/ratatui/pull/1735) [**breaking**]

> We don't anticipate removing or deprecating the type alias in the near
  > future, but it is recommended to update your imports to use the new
  > name.
  >
> Added a VerticalAlignment enum to make the API more consistent. We
don't
> have a specific use case for it yet, but it's better to add it now and
  > be able to use it in the future.
  >
  > BREAKING-CHANGE:The `Alignment` enum has been renamed to
> `HorizontalAlignment` to better reflect its purpose. A type alias has
> been added to maintain backwards compatibility, however there are some
  > cases where type aliases are not enough to maintain backwards
  > compatibility. E.g. when using glob imports to import all the enum
> variants. This should not affect most users, but it is recommended to
  > update your imports to use the new name.
  >
  > ```diff
  > - use ratatui::layout::Alignment;
  > + use ratatui::layout::HorizontalAlignment;
  >
  > - use Alignment::*;
  > + use HorizontalAlignment::*;
  > ```

-
[2714d6b](2714d6b9c3)
_(uncategorized)_ Add array and tuple RGB color conversion methods by
@joshka in [#1703](https://github.com/ratatui/ratatui/pull/1703)

> Other crates (e.g. colorgrad) that deal with colors can convert colors
> to a tuple of 3 or 4 u8 values. This commit adds conversion methods
from
  > these types to a `Color::Rgb` instance. Any alpha value is ignored.
  >
  > ```rust
  > Color::from([255, 0, 0]);
  > Color::from((255, 0, 0));
  > Color::from([255, 0, 0, 255]);
  > Color::from((255, 0, 0, 255));
  > ```

-
[50ba965](50ba96518f)
_(uncategorized)_ Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

  > Move the Mascot from Demo2 into a new widget.
  > Make the Rat grey and adjust the other colors.
  >
  > ```rust
  > frame.render_widget(RatatuiMascot::default(), frame.area());
  > ```

-
[1d28c89](1d28c89fe5)
_(uncategorized)_ Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)
> https://crates.io/crates/anstyle makes it possible to define colors in
> an interoperable way. This makes it possible for applications to
easily
  > load colors from a variety of formats.
  >
> This is gated by the anstyle feature flag which is disabled by
default.
  >
  > ***

### Bug Fixes

-
[a89d3d6](a89d3d62ff)
_(buffer)_ Clear behavior with VS16 wide emojis by @nornagon in
[#2063](https://github.com/ratatui/ratatui/pull/2063)

  > This fixes a bug where certain emojis like ⌨️ would sometimes be
> "overlaid" onto existing content from the buffer, instead of properly
  > clearing.
  >
  > [example demonstrating
>
bug](https://gist.github.com/nornagon/11a79d7a1f2e98aa129fedb4abccc530)
  >
  > This PR was generated by Codex, and validated by me:
  >
> 1. Behavior of the above example code was buggy before this fix
(showed
  >    overlaying "b" on top of the keyboard emoji), and fixed after.
> 2. The U+FE0F check is not strictly required, but I did note that
emoji
> without this char don't exhibit the buggy behavior, even without the
  >    fix.
  >
  > ***

-
[ec30390](ec30390446)
_(canvas)_ Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

  > Previously the canvas coordinates were rounded towards zero, which
> causes the rendering to be off by one pixel in some cases. It also
meant
> that pixels at the extreme edges of the canvas can only be drawn if
the
  > point was exactly on the edge of the canvas. This commit rounds the
> coordinates to the nearest integer instead. This may change the output
  > for some apps using Canvas / Charts.

-
[afd1ce1](afd1ce179b)
_(canvas)_ Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

> Previously lines with points that were outside the canvas bounds were
> not drawn at all. Now they are clipped to the bounds of the canvas so
  > that the portion of the line within the canvas is draw.
  >
> To facilitate this, a new `Painter::bounds()` method which returns the
  > bounds of the canvas is added.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1489

-
[2b0a044](2b0a044ced)
_(ci)_ Add contents write permission to release-plz PR by @marcoieni in
[#2119](https://github.com/ratatui/ratatui/pull/2119)

  > https://release-plz.dev/docs/github/quickstart#3-setup-the-workflow
  >
  > Fixes https://github.com/release-plz/release-plz/issues/2439

-
[18e70d3](18e70d3d51)
_(crossterm)_ Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

  > The Dim removal should behave the same as the logic for Bold removal
> that sends NormalIntensity sequence and then restores Dim when needed.

-
[dca331c](dca331c748)
_(demo)_ Support tab key in demo2 example by @orhun in
[#1726](https://github.com/ratatui/ratatui/pull/1726)

  > see #1721
  >
> Not sure what caused this - it's been there for a while probably and
we
  > didn't realize it since we used `demo2-destroy` mostly.

-
[0fd4753](0fd4753e6b)
_(examples)_ Run the correct example for chart by @orhun in
[#1679](https://github.com/ratatui/ratatui/pull/1679)

  > fixes #1678

-
[39479e2](39479e298c)
_(examples)_ Ensure that example projects are not published by @orhun in
[#1672](https://github.com/ratatui/ratatui/pull/1672)

-
[9314312](93143126b3)
_(layout)_ Feature flag cache related types by @joshka in
[#1842](https://github.com/ratatui/ratatui/pull/1842)

-
[2dd1977](2dd1977c59)
_(layout-cache)_ Import `NonZeroUsize` only when `layout-cache` is
enabled by @j-g00da in
[#1839](https://github.com/ratatui/ratatui/pull/1839)

> This silences unused import warning, when `layout-cache` is disabled.

-
[564a9d7](564a9d76fc)
_(line-gauge)_ Pad default label to display 3 numbers by @martinetd in
[#2053](https://github.com/ratatui/ratatui/pull/2053)

> Display the default label of the LineGauge widget padded to fill 3
cells.
> This makes it so that the label doesn't shift around when going from a
  > single digit to double / triple digits.
  >
> To maintain the existing behavior, use a custom label by calling
`.label()`
  > on the LineGauge.

-
[a692a6e](a692a6e371)
_(lint)_ Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

  > The canvas map constants are now statics instead.
  > Fixes
>
https://rust-lang.github.io/rust-clippy/master/index.html\#large_const_arrays

-
[2e54d5e](2e54d5e22c)
_(macros)_ Use $crate re-export in text macro by @airblast-dev in
[#1832](https://github.com/ratatui/ratatui/pull/1832)

-
[79d5165](79d5165cae)
_(no_std)_ Propagate `std` feature flag to dependencies by @j-g00da in
[#1838](https://github.com/ratatui/ratatui/pull/1838)

> Disables `std` feature flags in dependencies and only enables them
with
> `ratatui` and `ratatui-core`'s `std` feature flag. This partially
fixes the
> issue of still depending on `std`, when `std` feature flag is
disabled.

-
[00da8c6](00da8c6203)
_(no_std)_ Provide `f64` polyfills for `no_std` compatibility by
@j-g00da in [#1840](https://github.com/ratatui/ratatui/pull/1840)

  > Related:https://github.com/rust-lang/rust/issues/137578

-
[3b13240](3b13240728)
_(scrollbar)_ Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

> This adds the `area.is_empty()` back into the scrollbar render method.
  > Without it, the widget panics if the height is 0.

-
[f57b696](f57b696fdc)
_(span)_ Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
_(table)_ Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[0a25bc1](0a25bc166d)
_(tests)_ Update the stderr snapshot for ratatui-macros by @orhun in
[#2161](https://github.com/ratatui/ratatui/pull/2161)

  > New 🦀 broke the CI

-
[5fa342c](5fa342cc52)
_(widgets)_ Fix centered block title truncation by @ognis1205 in
[#1973](https://github.com/ratatui/ratatui/pull/1973)

  > Previously block titles that were aligned center were
  > truncated poorly (aligned to the left, and the last
  > non-fitting title would be truncated on the left and right.
  > This now truncates the titles more obviously centered.

-
[1fe64de](1fe64de09a)
_(uncategorized)_ Include underline color in anstyle conversion by
@aschey in [#2004](https://github.com/ratatui/ratatui/pull/2004)

  > Underline color wasn't included in the style conversion logic.

-
[c1b8528](c1b8528b69)
_(uncategorized)_ Panic when rendering widgets on too small buffer by
@j-g00da in [#1996](https://github.com/ratatui/ratatui/pull/1996)

> Fixes panic on overflow on horizontal `Barchart` and `RatatuiMascot`
and adds proper tests to all widgets.
  >
  > ***

-
[08b21fa](08b21fa55c)
_(uncategorized)_ Fix panic when rendering a `Paragraph` out of bounds
by @jwodder in [#1670](https://github.com/ratatui/ratatui/pull/1670)

  > Fixes #1667.

-
[80bc818](80bc818723)
_(uncategorized)_ Fix truncation of left aligned block titles by @joshka
in [#1931](https://github.com/ratatui/ratatui/pull/1931)

> truncate the right side of left aligned titles rather than the left
side
> of right aligned titles. This is more obvious as the left side of text
  > often contains more important information. And we generally read
  > left to right.
  >
  > This change makes centered titles overwrite left aligned titles and
  > right aligned titles overwrite centered or left aligned titles.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/358

-
[21e3b59](21e3b598ce)
_(uncategorized)_ Fix handling of multi-byte chars in bar chart by
@joshka in [#1934](https://github.com/ratatui/ratatui/pull/1934)

  > The split_at method requires that the split point is at a valid utf8
  > character boundary.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1928

-
[e1e4004](e1e400406c)
_(uncategorized)_ Derive copy for list state by @janTatesa in
[#1921](https://github.com/ratatui/ratatui/pull/1921)

-
[12cb5a2](12cb5a28fe)
_(uncategorized)_ Allow canvas area to exceed u16::MAX by @Daksh14 in
[#1891](https://github.com/ratatui/ratatui/pull/1891)

> This allows Canvas grids where the width \* height exceeds u16::MAX by
  > converting values to usize earlier in several methods.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1449

-
[09cc9ef](09cc9ef57d)
_(uncategorized)_ Typo in changelog by @joshka in
[#1857](https://github.com/ratatui/ratatui/pull/1857)

-
[c238aca](c238aca83a)
_(uncategorized)_ `padding_right()` should set right padding instead of
left by @sxyazi in [#1837](https://github.com/ratatui/ratatui/pull/1837)

  > Fixes https://github.com/ratatui/ratatui/issues/1836

-
[c90ba97](c90ba9781e)
_(uncategorized)_ Avoid unnecessary imports in minimal build by @cgzones
in [#1787](https://github.com/ratatui/ratatui/pull/1787)

  > core::ops::Range is only used with the feature `scrolling-regions`.
  > Ensure a minimal `cargo check` reports no warnings.

-
[416ebdf](416ebdf8c8)
_(uncategorized)_ Correct clippy errors introduced by rust 1.86.0 update
by @j-g00da in [#1755](https://github.com/ratatui/ratatui/pull/1755)

  > New version of rust (1.86.0) caused CI to fail.

-
[4eac5b2](4eac5b2849)
_(uncategorized)_ Make deprecation notes more helpful by @joshka in
[#1702](https://github.com/ratatui/ratatui/pull/1702)

> AI coding assistants use the deprecation notes to automatically
suggest
> fixes. This commit updates the deprecation notes to push those tools
to
  > suggest the correct replacement methods and types.
  >
> Specifically, AI tools often suggest using `Buffer::get(x, y)`,
because
  > of their training data where this was prevalent. When fixing these
> deprecations, they often incorrectly suggest using `Buffer::get(x, y)`
  > instead of `Buffer[(x, y)]`.

-
[35a8642](35a86427ab)
_(uncategorized)_ `Rect::positions()` should be empty when width is 0
and height is nonzero by @jwodder in
[#1669](https://github.com/ratatui/ratatui/pull/1669)

  > Fixes #1666.

-
[f5fc819](f5fc8197ff)
_(uncategorized)_ Avoid extra line break on whitespace only lines when
wrapping paragraphs by @dotdash in
[#1636](https://github.com/ratatui/ratatui/pull/1636)

  > Currently whitespace only lines produces an extra line break when
  > trimming is disabled, because both the trimmed as well as the
  > non-trimmed line get inserted. Fix this by only inserting the
  > non-trimmed one.

-
[2892bdd](2892bddce6)
_(uncategorized)_ Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

>
https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes

-
[36e2d1b](36e2d1bda1)
_(uncategorized)_ Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
_(uncategorized)_ Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

  > StatefulWidget::State and StatefulWidgetRef::State are now ?Sized.
  >
> This allows implementations of the traits to use unsized types for the
  > State associated type. This is turn is useful when doing things like
  > boxing different stateful widget types with State which implements
  > `Any`, are slices or any other dynamically sized type.

-
[7b87509](7b875091e1)
_(uncategorized)_ Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[8d60e96](8d60e96b2b)
_(examples)_ Use crossterm event methods by @joshka in
[#1792](https://github.com/ratatui/ratatui/pull/1792)

> Crossterm 0.29 introduced methods to easily check / extract the event
  > type. E.g. as_key_press_event() and is_key_press(). This commit
  > updates the examples to use these methods instead of matching on
  > the event type. This makes the code cleaner and easier to read.
  >
> Also does a general cleanup of the event handling code in the
examples.

-
[07bec55](07bec55b7d)
_(no_std)_ Make usages of std explicit in ratatui-core. by @ed-2100 in
[#1782](https://github.com/ratatui/ratatui/pull/1782)

  > ### This commit does the following:
  >
  > - Adds `#[no_std]` to `lib.rs`.
  > - Adds `extern crate std;` to `lib.rs`.
> - Updates `ratatui-core` to explicitly `use` items from std and alloc.
  > - Prefers `use`-ing alloc over std when possible.
  >
  > ### Explanation:
  >
> This allows usages of `std` in `ratatui-core` to be clearly pointed
out
  > and dealt with individually.
  >
  > Eventually, when `std` is to be feature gated, the associated commit
  > will be much cleaner.

-
[f132fa1](f132fa1715)
_(table)_ Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[02e53de](02e53de0f8)
_(uncategorized)_ Make use of iter::repeat_n() by @cgzones in
[#1788](https://github.com/ratatui/ratatui/pull/1788)

  > Applied via clippy --fix.
  > Available since 1.82.0.

-
[a195d59](a195d59a47)
_(uncategorized)_ Move xtask commands to small modules by @joshka in
[#1620](https://github.com/ratatui/ratatui/pull/1620)

-
[904b0aa](904b0aa723)
_(uncategorized)_ Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
_(uncategorized)_ Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
_(uncategorized)_ Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

> Backend code is now moved to `ratatui-crossterm`, `ratatui-termion`
and
> `ratatui-termwiz`. This should be backwards compatible with existing
code.

-
[e461b72](e461b724a6)
_(uncategorized)_ Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

> This is a preparatory refactoring for modularization. No user visible
  > changes.

### Documentation

-
[40e96a2](40e96a2a04)
_(block)_ Add collapsed border example by @joshka in
[#1899](https://github.com/ratatui/ratatui/pull/1899)

-
[d291042](d291042e69)
_(block)_ Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

  > - Moves the block example from `ratatui` to `ratatui-widgets`
  > - Simplifies the example (bordered, styled, custom borders)
  >
  > see #1512

-
[0951da5](0951da52f9)
_(breaking-changes)_ Improve migration guide for `Backend::Error` by
@j-g00da in [#1908](https://github.com/ratatui/ratatui/pull/1908)

  > Related:https://github.com/fujiapple852/trippy/pull/1588

-
[bbe1cf9](bbe1cf9497)
_(breaking-changes)_ Change MSRV to 1.85 by @j-g00da in
[#1896](https://github.com/ratatui/ratatui/pull/1896)

> The minimum supported Rust version is now for `ratatui` v0.30 is 1.85

-
[c7912f3](c7912f3990)
_(breaking-changes)_ Fix header level by @j-g00da in
[#1825](https://github.com/ratatui/ratatui/pull/1825)

-
[eb24938](eb249382c9)
_(changelog)_ Add note to ratatui-macros' changelog

-
[fcde9cb](fcde9cb9c3)
_(changelog)_ Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[73488ab](73488abb45)
_(contributing)_ Fix link to `widgets_block_renders` test by @ognis1205
in [#2101](https://github.com/ratatui/ratatui/pull/2101)

  > The `CONTRIBUTING.md` referenced `tests/widgets_block.rs`, but the
> correct path is `ratatui/tests/widgets_block.rs`. Updated the link so
  > that readers can navigate to the test example without 404 error.
  >
  > ***

-
[0b025db](0b025db72b)
_(contributing)_ Fix grammar by @j-g00da in
[#1958](https://github.com/ratatui/ratatui/pull/1958)

-
[1197b2a](1197b2a02c)
_(contributing)_ Add note about using nightly for formatting by @joshka
in [#1816](https://github.com/ratatui/ratatui/pull/1816)

-
[3ae6bf1](3ae6bf1d6f)
_(contributing)_ Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

  > - Updates `CONTRIBUTING.md` about the usage of `xtask`
  > - Removes `Makefile.toml`

-
[22e3e84](22e3e84de8)
_(core)_ Remove link to Paragraph widget by @orhun in
[#1683](https://github.com/ratatui/ratatui/pull/1683)

-
[200b217](200b217722)
_(examples)_ Add VHS tapes and docs for widget examples by @orhun in
[#2114](https://github.com/ratatui/ratatui/pull/2114)

  > fixes #1982
  >
> Later on I'll figure out an easy way to regenerate this in the CI and
  > possibly do the same for the app examples' VHS tapes. That's why I
  > haven't added a script or mentioned anything in the docs yet (hint:
  > #1721)
  >
  > ***

-
[861fbdf](861fbdf5cf)
_(examples)_ Fix a typo by @j-g00da in
[#1890](https://github.com/ratatui/ratatui/pull/1890)

  > Makes CI typos check pass again

-
[882cc3c](882cc3c6c6)
_(examples)_ Update app examples with tapes by @orhun in
[#1673](https://github.com/ratatui/ratatui/pull/1673)

-
[4393fae](4393fae54c)
_(examples)_ Move scrollbar example to examples folder by @orhun in
[#1665](https://github.com/ratatui/ratatui/pull/1665)

-
[9ea70e2](9ea70e28c6)
_(examples)_ Move widget-impl example to examples folder by @orhun in
[#1663](https://github.com/ratatui/ratatui/pull/1663)

-
[774ab78](774ab788d4)
_(examples)_ Move widget-ref-container example to examples folder by
@orhun in [#1664](https://github.com/ratatui/ratatui/pull/1664)

  > see #1512

-
[910d16e](910d16e63a)
_(examples)_ Move user-input example to examples folder by @orhun in
[#1659](https://github.com/ratatui/ratatui/pull/1659)

-
[dbfb7da](dbfb7da9e3)
_(examples)_ Move table example to examples folder by @orhun in
[#1657](https://github.com/ratatui/ratatui/pull/1657)

-
[cb2a58a](cb2a58aaa0)
_(examples)_ Move tracing example to examples folder by @orhun in
[#1658](https://github.com/ratatui/ratatui/pull/1658)

-
[7e00b64](7e00b646fc)
_(examples)_ Move panic example to examples folder by @orhun in
[#1655](https://github.com/ratatui/ratatui/pull/1655)

-
[8127590](8127590812)
_(examples)_ Move modifiers example to examples folder by @orhun in
[#1654](https://github.com/ratatui/ratatui/pull/1654)

-
[7c40c0b](7c40c0bbdd)
_(examples)_ Move popup example to examples folder by @orhun in
[#1656](https://github.com/ratatui/ratatui/pull/1656)

  > see #1512

-
[d87354f](d87354f400)
_(examples)_ Move list example to examples folder by @orhun in
[#1653](https://github.com/ratatui/ratatui/pull/1653)

  > see #1512
  >
  > also renames it to todo-list

-
[621226f](621226f2e2)
_(examples)_ Move inline example to examples folder by @orhun in
[#1651](https://github.com/ratatui/ratatui/pull/1651)

-
[9ba7d25](9ba7d25b71)
_(examples)_ Move hyperlink example to examples folder by @orhun in
[#1650](https://github.com/ratatui/ratatui/pull/1650)

-
[bb94d1c](bb94d1c0fa)
_(examples)_ Move minimal example to examples folder by @orhun in
[#1649](https://github.com/ratatui/ratatui/pull/1649)

-
[9f399ac](9f399ac7a6)
_(examples)_ Move gauge example to examples folder by @orhun in
[#1646](https://github.com/ratatui/ratatui/pull/1646)

-
[104d6a6](104d6a6c2b)
_(examples)_ Move custom-widget example to examples folder by @orhun in
[#1644](https://github.com/ratatui/ratatui/pull/1644)

-
[fa8ca01](fa8ca0121a)
_(examples)_ Move flex example to examples folder by @orhun in
[#1642](https://github.com/ratatui/ratatui/pull/1642)

-
[f5fde0e](f5fde0ef53)
_(examples)_ Move constraints example to examples folder by @orhun in
[#1641](https://github.com/ratatui/ratatui/pull/1641)

-
[fc70288](fc70288954)
_(examples)_ Move constraint-explorer example to examples folder by
@orhun in [#1640](https://github.com/ratatui/ratatui/pull/1640)

-
[325f961](325f96102a)
_(examples)_ Move hello-world example to examples folder by @orhun in
[#1647](https://github.com/ratatui/ratatui/pull/1647)

-
[867c4bc](867c4bc4e9)
_(examples)_ Move colors-rgb example to examples folder by @joshka in
[#1582](https://github.com/ratatui/ratatui/pull/1582)

  > - **docs: move colors-rgb example to examples folder**
  > - **docs: update main examples README**
  >
  > ***

-
[72334ed](72334ed61c)
_(layout)_ Update documentation to point to `kasuari` solver by @a-kenji
in [#2003](https://github.com/ratatui/ratatui/pull/2003)

-
[2be9ccb](2be9ccb120)
_(layout)_ Remove unnecessary path prefix by @j-g00da in
[#1766](https://github.com/ratatui/ratatui/pull/1766)

-
[b669ceb](b669cebcaf)
_(layout)_ Change `cassowary` to `kasuari` crate reference by @j-g00da
in [#1765](https://github.com/ratatui/ratatui/pull/1765)

-
[f907c74](f907c74bb3)
_(license)_ Update copyright years by @LVivona in
[#1639](https://github.com/ratatui/ratatui/pull/1639)

  > Update MIT Licence to copyright year 2025

-
[68b9f67](68b9f67f59)
_(readme)_ Add `Built with Ratatui` badge for downstream projects by
@harilvfs in [#1905](https://github.com/ratatui/ratatui/pull/1905)

-
[088aac1](088aac136d)
_(readme)_ Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
_(readme)_ Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

> This is the result of the re-imagination of a more suitable README.md.
It
  > is simpler and shorter: not giving more information to the user than
  > they actually need.
  >
> Also updates the quickstart code with the up-to-date version and adds
  > link to templates which was missing.
  >
  > ***

-
[8f28247](8f282473b2)
_(readme)_ Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
_(readme)_ Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
_(readme)_ Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[8e5151f](8e5151f83d)
_(rect)_ Fix typo in the Rect::outer function comments by @orhun in
[#2123](https://github.com/ratatui/ratatui/pull/2123)

-
[40f13c6](40f13c6a6c)
_(rect)_ Update the outdated comment for Rect::area() by @eqsdxr in
[#2100](https://github.com/ratatui/ratatui/pull/2100)

> The return value of Rect.area() is no longer of u16 type, and the
value
  > is not being clumped anymore.

-
[ce16692](ce16692b9a)
_(release)_ Fix typo by @j-g00da in
[#1754](https://github.com/ratatui/ratatui/pull/1754)

-
[9a930a6](9a930a6e99)
_(terminal)_ Made usage of Terminal::get_frame() clearer by @Blaeriz in
[#2071](https://github.com/ratatui/ratatui/pull/2071)

  > Closes : https://github.com/ratatui/ratatui/issues/1200
  >
  > ***

-
[b08b4cb](b08b4cbd5e)
_(terminal)_ Add disclaimer about panics to Terminal::new by
@lolbinarycat in [#2088](https://github.com/ratatui/ratatui/pull/2088)

  > part of #2087
  >
  > cc @orhun
  >
  > ***

-
[dafb716](dafb716f9d)
_(widgets)_ Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

  > related #1512
  >
  > ***

-
[ed5dd73](ed5dd73084)
_(widgets)_ Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

  > related #1512
  >
> Also removes the tabs example from ratatui crate since it overlaps
with
> this new example in terms of functionality and it was not following
the
  > general theme of other examples.

-
[fab5321](fab532171d)
_(widgets)_ Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

  > Related to: #1512

-
[898aef6](898aef6e2f)
_(widgets)_ Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

  > Related to: #1512

-
[452366a](452366aa9e)
_(widgets)_ Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

  > related #1512
  >
> Also removes the sparkline example from ratatui crate since this
example
  > is a simplified and easier to understand version of that

-
[6ddde0e](6ddde0e8a8)
_(widgets)_ Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

  > related #1512

-
[93ad6b8](93ad6b828c)
_(widgets)_ Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

  > better stonks

-
[15f442a](15f442a71e)
_(widgets)_ Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

  > related #1512
  >
> Also removes the paragraph example from `ratatui` since these examples
  > are more or less the same.

-
[17bba14](17bba14540)
_(widgets)_ Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

  > related #1512
  >
  > Also updates the code to make it consistent with the other examples

-
[f2451e7](f2451e7f1e)
_(widgets)_ Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

  > related #1512

-
[4f0a8b2](4f0a8b21af)
_(widgets)_ Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

  > related #1512

-
[91147c4](91147c4d75)
_(widgets)_ Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

  > stonks

-
[6dd25a3](6dd25a3111)
_(widgets)_ Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

  > related #1512

-
[99ac005](99ac005b06)
_(widgets)_ Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[f8b0594](f8b0594363)
_(uncategorized)_ Fix: fix typos by @j-g00da in
[#2129](https://github.com/ratatui/ratatui/pull/2129)

  > This fixes the pipeline after bumping typos.

-
[9998000](9998000e36)
_(uncategorized)_ Use shields.io badge by @LitoMore in
[#2040](https://github.com/ratatui/ratatui/pull/2040)

  > Related to:
  >
  > - https://github.com/simple-icons/simple-icons/pull/13593
  > - https://github.com/ratatui/ratatui/pull/1967
  >
  > The Ratatui icon is available on shields.io now ✌️
  >
  > And it's customizable. There are more configurations at
  > https://shields.io/badges.
  >
  > Here are some examples:
  >
  > ```markdown
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
>
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)
>
![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)
  > ```
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
>
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)
  >
>
![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)
  >
>
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)
  >
> I also created a PR to the ratatui-website project to update the
badge.
  > Here is the PR:
  >
  > - https://github.com/ratatui/ratatui-website/pull/924

-
[71ef65b](71ef65b624)
_(uncategorized)_ Add section on collaborative development to
contributing doc by @joshka in
[#2029](https://github.com/ratatui/ratatui/pull/2029)

-
[cba5cca](cba5cca2bd)
_(uncategorized)_ Update heading image for Ratatui 0.30.0 release 🎉 by
@j-g00da in [#2000](https://github.com/ratatui/ratatui/pull/2000)

-
[9836f07](9836f0760d)
_(uncategorized)_ Add AI contribution guidelines by @joshka in
[#2013](https://github.com/ratatui/ratatui/pull/2013)

-
[98f85b8](98f85b8650)
_(uncategorized)_ Update link to scrollable widgets RFC by @MatrixFrog
in [#1994](https://github.com/ratatui/ratatui/pull/1994)

-
[055522e](055522ef7b)
_(uncategorized)_ Add docs for authoring widget crates by @j-g00da in
[#1955](https://github.com/ratatui/ratatui/pull/1955)

  > - added Authoring Widget Libraries sub-section
  > - moved built-in and third-party widgets sections higher

-
[617d318](617d31851a)
_(uncategorized)_ Improve Block docs by @joshka in
[#1953](https://github.com/ratatui/ratatui/pull/1953)

-
[8e2d568](8e2d568428)
_(uncategorized)_ Improve layout related docs by @joshka in
[#1948](https://github.com/ratatui/ratatui/pull/1948)

> Adds module level docs and more comprehensive docs on all the types in
  > the layout module
  >
  > Fixes #1937

-
[4c708dd](4c708ddf8a)
_(uncategorized)_ Improve docs for run/init/restore etc. by @joshka in
[#1947](https://github.com/ratatui/ratatui/pull/1947)

  > - **docs: document the init module**
  > - **docs: use the ratatui::run() methods in the main doc**
> - **docs: add more intradoc / website links and historical perspective
  >   on Terminal / backend**
  > - **docs: add notes about new run/init/restore methods and the
  >   defaultterminal type to terminal docs**

-
[5620e06](5620e06b1a)
_(uncategorized)_ Add crate organization sections to workspace by
@joshka in [#1946](https://github.com/ratatui/ratatui/pull/1946)

  > Adds summary-level crate organization documentation to all crates
> explaining the modular workspace structure and when to use each crate.
  > Links to ARCHITECTURE.md for detailed information.

-
[cfb65e6](cfb65e64ba)
_(uncategorized)_ Add examples for handling state by @joshka in
[#1849](https://github.com/ratatui/ratatui/pull/1849)

> Added comprehensive state management examples covering both immutable
  > and mutable patterns and documentation to help developers choose the
  > right approach for their applications.

-
[3de41a8](3de41a8249)
_(uncategorized)_ Document widgets module by @joshka in
[#1932](https://github.com/ratatui/ratatui/pull/1932)

  > Adds a good overview of the use and implementation of widget traits.
  >
  > Goals with the doc rewrite:
  >
> - document the rationale for the ratatui-widgets crate with info for
app
  >   builders and widget makers.
  > - Show how to use the widgets for rendering as well as implement the
  >   traits- document the differences and reasons for each trait
  > - document the historical perspective (to make it easy to understand
  >   older Ratatui apps as well as migrate to newer approaches
  > - give recommended approaches to implementing traits
  > - explain the differences between Consuming and Shared / Mutable
  >   Reference implementations of Widget
  > - explain the differences between using StatefulWidget and Mutable
  >   References
  > - Explain the use case for WidgetRef and StatefulWidgetRef
  > - Link out to third part widget lists
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/366
  >
  > ***

-
[ca2ad4a](ca2ad4a1f9)
_(uncategorized)_ Simplify ratatui-macro docs by @joshka in
[#1923](https://github.com/ratatui/ratatui/pull/1923)

-
[92b6a16](92b6a16bde)
_(uncategorized)_ Fix grammar in ratatui-widgets README by @sevki in
[#1885](https://github.com/ratatui/ratatui/pull/1885)

-
[da05957](da05957fa0)
_(uncategorized)_ Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

  > Implements ideas alluded to by
>
<https://discord.com/channels/1070692720437383208/1072907135664529508/1323061053990637640>
  > and followup conversations.

-
[1798512](1798512e94)
_(uncategorized)_ Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

  > Fix wording in `user_input.rs` example.

-
[03066d8](03066d81bf)
_(uncategorized)_ Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

  > Fix end of sentence punctuation in canvas.rs docs.

-
[e411d9e](e411d9ec3e)
_(uncategorized)_ Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

  > Demonstrates how to manage the cursor and input focus with a simple
  > form. Uses an enum to track the current input field and passes the
  > input events to the active field.
  >
> This is similar to the json tutorial on the website, but a bit simpler

-
[ed071f3](ed071f3723)
_(uncategorized)_ Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

  > Demonstrates how to handle mouse events

-
[46902f5](46902f5587)
_(uncategorized)_ Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

> Overall makes improvements in the documentation of the workspace
crates and checking them.

-
[a6b5792](a6b579223f)
_(uncategorized)_ Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Performance

-
[1f41a61](1f41a61008)
_(paragraph)_ Avoid unnecessary work when rendering by @alexpasmantier
in [#1622](https://github.com/ratatui/ratatui/pull/1622)

  > Improve render times for paragraphs that are scrolled.
  >
> Currently all `LineComposer`s are considered to be state machines
which
> means rendering a paragraph with a given Y offset requires computing
the
  > entire state up to Y before being able to render from Y onwards.
  >
> While this makes sense for Composers such as the `WordWrapper` (where
> one needs to consider all previous lines to determine where a given
line
> will end up), it means it also penalizes Composers which can render a
> given line "statelessely" (such as the `LineTruncator`) which actually
> end up doing a lot of unnecessary work (and on the critical rendering
  > path) when the offset gets high.

-
[ba9eed7](ba9eed7742)
_(table)_ Replace while loop with simple min operation by @EdJoPaTo in
[#1747](https://github.com/ratatui/ratatui/pull/1747)

### Styling

-
[ac60de3](ac60de3960)
_(uncategorized)_ Fix wrapping in doc comment by @joshka in
[#2104](https://github.com/ratatui/ratatui/pull/2104)

-
[2739391](2739391950)
_(uncategorized)_ Use Module imports_granularity by @joshka in
[#1728](https://github.com/ratatui/ratatui/pull/1728)

> I was swayed by the arguments about this made by the compiler team In
> <https://github.com/rust-lang/compiler-team/issues/750> and decided to
> look at how this organization affects ratatui. I found this reduces
the
> number of lines across the codebase by about 350 and makes the imports
  > more readable and definitely more greppable as you usually only have
> to read a single line. I've found in the past that maintaining imports
  > regularly leads to merge conflicts which have to be resolved by hand
  > and this change should reduce the likelihood of that happening.
  >
  > Main change is in rustfmt.toml, and the rest is just the result of
  > running `cargo xtask format`.
  >
  > While implementing this, cargo machete brings up that the various
  > backend crates are unused by the example crates.
  >
> The re-export of each backend crate under ratatui is to make it
possible
  > for libs that rely on a specific version of ratatui to use the same
  > version of the backend crate. Apps in general should use the backend
> crate directly rather than through ratatui as this is less confusing.
  >
> - Removes all usages of `ratatui::{crossterm, termion, termwiz}`` in
the
  >   examples.
> - Adds the backend crate to the dependencies of the examples that use
  >   the backend crate directly.

### Testing

-
[db65aa0](db65aa0ef7)
_(bench)_ Add benchmark for text by @orhun in
[#2160](https://github.com/ratatui/ratatui/pull/2160)

  > #2138
  >
  > ***

-
[a21501f](a21501f7f4)
_(bench)_ Added a benchmark for constraints by @kashregister in
[#2043](https://github.com/ratatui/ratatui/pull/2043)

  > I've added a new benchmark for constraints, which only takes into
> account the time it takes to generate a full layout using a single
type
  > of constraints only. Avoided rendering here as it resulted in more
> inaccurate benchmarks, and i believe it should be separated
nonetheless.

-
[39cd313](39cd313b3b)
_(layout)_ Add visual buffer tests for Rect methods by @orhun in
[#2124](https://github.com/ratatui/ratatui/pull/2124)

-
[8aefc06](8aefc06a90)
_(macros)_ Regenerate trybuild stderr by @ognis1205 in
[#2093](https://github.com/ratatui/ratatui/pull/2093)

  > ### Overview
  >
  > Updated the `.stderr` file corresponding to the
  > `ratatui-macros/tests/ui/fails.rs` compile-fail test.
  >
  > ### Changes
  >
  > - Updated `tests/ui/fails.stderr` to match the new compiler output.
  >
  > ### Impact
  >
  > - Affects only the trybuild UI tests
  > - No impact on production code
  >
  > ### Notes
  >
  > - The `.stderr` was generated using `TRYBUILD=overwrite cargo test`.
  >
  > Closes https://github.com/ratatui/ratatui/issues/2094

-
[deb1b8e](deb1b8ec43)
_(uncategorized)_ Ensure Style::new() and Style::default() are
equivalent by @cgzones in
[#1789](https://github.com/ratatui/ratatui/pull/1789)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
_(backend)_ Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

  > Adds two traits `IntoCrossterm` and `FromCrossterm` for converting
> between ratatui and crossterm types. This is necessary in order to
avoid
> the orphan rule when implementing `From` for crossterm types once the
  > crossterm types are moved to a separate crate.
  >
> Similarly Termwiz and Termwiz gain FromTermion, IntoTermion,
FromTermwiz
  > and IntoTermwiz traits.
  >
> BREAKING CHANGE:The `From` and `Into` impls for backend types are now
  > replaced
  > with specific backend traits.
  >
  > ```diff
  > + use ratatui::backend::{FromCrossterm, IntoCrossterm};
  >
  > let crossterm_color = crossterm::style::Color::Black;
  > - let ratatui_color = crossterm_color.into();
  > - let ratatui_color = ratatui::style::Color::from(crossterm_color);
> + let ratatui_color =
ratatui::style::Color::from_crossterm(crossterm_color);
  > - let crossterm_color = ratatui_color.into();
> - let crossterm_color = crossterm::style::Color::from(ratatui_color);
  > + let crossterm_color = ratatui_color.into_crossterm();
  >
  > let crossterm_attribute = crossterm::style::types::Attribute::Bold;
  > - let ratatui_modifier = crossterm_attribute.into();
> - let ratatui_modifier =
ratatui::style::Modifier::from(crossterm_attribute);
> + let ratatui_modifier =
ratatui::style::Modifier::from_crossterm(crossterm_attribute);
  > - let crossterm_attribute = ratatui_modifier.into();
> - let crossterm_attribute =
crossterm::style::types::Attribute::from(ratatui_modifier);
  > + let crossterm_attribute = ratatui_modifier.into_crossterm();
  > ```
  >
> Similar conversions for `ContentStyle` -> `Style` and `Attributes` ->
  > `Modifier` exist for Crossterm,
  > and all the Termion and Termwiz types.
  >
  > ***

-
[0a47ebd](0a47ebd94b)
_(bencher)_ Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[b46778d](b46778dd1d)
_(breaking-changes)_ Add details to `no_std`-related breaking changes by
@j-g00da in [#1828](https://github.com/ratatui/ratatui/pull/1828)

  > Some corrections and added details to BREAKING-CHANGES.md.
  >
  > I decided to remove:
  >
  > - `Backend` now uses `Self::Error` for error handling instead of
  >   `std::io::Error`
  > - `Terminal<B>` now uses `B::Error` for error handling instead of
  >   `std::io::Error`
  >
> ...as we are still using `std::io::Error` in built-in backends, so
this
> will only be breaking if a third-party backend decides to use a custom
> error other than `std::io::Error`, which would be a breaking change in
  > downstream and not `ratatui`.
  >
  > The exception to that is `TestBackend`, which uses `Infallible`, but
  > this already has its own breaking changes entry.

-
[a0979d6](a0979d6871)
_(build)_ Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

  > Duplicate crate lint is too noisy and sensitive to upstream changes

-
[ae43ea7](ae43ea796a)
_(cell)_ Use Option instead of space (" ") for symbol by @joshka

> This change makes the `Cell::symbol` field an `Option<CompactString>`,
  > allowing it to represent an empty cell as `None` instead of an empty
  > string. The rationale for this is to later allow the merge symbol
> functionality to act differently based on whether a cell has
previously
> held a symbol or not, rather than always merging with an empty string.
> This will help make it possible to merge borders with titles with
spaces
  > and other symbols, without assuming that an empty string is always
  > equivalent to no symbol.
  >
  > - Default is now derived as `Option::None` works correctly.
> - PartialEq and Eq implementations are updated to treat `None` the
same
  >   as an empty string.
  > - merge_symbol against an empty cell will now just set the symbol
  >   rather than calling MergeStrategy::merge with an empty string.
  > - PartialEq, and Hash are manually implemented instead of being
  >   derived, and are updated to treat `None` equal to an empty string.

-
[887a636](887a6366e5)
_(ci)_ Override RUSTUP_TOOLCHAIN for the check step by @ognis1205 in
[#2116](https://github.com/ratatui/ratatui/pull/2116)

  > Summary
  > Fixes an issue where the "check" CI jobs for MSRV and stable were
> unintentionally using the stable toolchain from `rust-toolchain.toml`
  > instead of the matrix-specified toolchain.
  >
  > Details
  >
> - Added `RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}` to the "check" job
  >   in CI configuration.
  >
  > Additional Context
  >
  > - https://github.com/ratatui/ratatui/pull/2106
> -
https://discord.com/channels/1070692720437383208/1072879985762762812/1422345357131780177
  > - https://rust-lang.github.io/rustup/overrides.html#overrides

-
[34baaf1](34baaf1137)
_(ci)_ Override the toolchain for CI runs by @ognis1205 in
[#2106](https://github.com/ratatui/ratatui/pull/2106)

  > ### Summary
  >
  > Fixes an issue where the beta CI jobs were unintentionally using the
  > stable
  > toolchain from `rust-toolchain.toml` instead of the matrix-specified
  > toolchain.
  > This caused clippy to run against the wrong version.
  >
  > ### Details
  >
  > - Added `RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}` to the CI
  >   configuration
  >
  > ### Additional Context
  >
> -
https://discord.com/channels/1070692720437383208/1072879985762762812/1421990770482745415
  > - https://rust-lang.github.io/rustup/overrides.html#overrides

-
[e48aa9e](e48aa9ec09)
_(ci)_ Stop publish-alpha from running on forks by @j-g00da in
[#1916](https://github.com/ratatui/ratatui/pull/1916)

> I can't sleep because every Saturday alpha release fails on my ratatui
  > fork. This should fix my insomnia.

-
[b3f3c9b](b3f3c9bfd5)
_(ci)_ Disable running release-plz on forked repositories by @orhun in
[#1730](https://github.com/ratatui/ratatui/pull/1730)

  > See https://github.com/jdssl/ratatui/pull/1#issuecomment-2739366609

-
[eaa4038](eaa403856e)
_(ci)_ Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

> `install-action` uses `cargo-binstall` to install the pre-built
binaries
  > of `cargo-rdme` (which was released in
  > https://github.com/orium/cargo-rdme/releases/tag/v1.4.7).
  >
> This will make the `check-readme` step faster in CI (now takes only 10
  > seconds).

-
[e5e2316](e5e2316451)
_(ci)_ Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
_(ci)_ Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

> This removes the need for cargo-make and replaces it with a custom
xtask
  > binary. See <https://github.com/matklad/cargo-xtask> for info.
  >
  > Rearranges the CI workflow to use the new xtask and simplify which
  > workflows that run.
  >
  > ***

-
[98df774](98df774d7f)
_(core)_ Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

> The buffer, layout, style, symbols, text, and the top level of widgets
  > modules are moved to ratatui-core. This is the first step in
  > modularizing the library so that the core types can be used in other
  > projects without the need for the backend / widgets types.
  >
  > This helps reduce the need for updating other crates as often due to
  > semver changes outside of the core types.
  >
  > ***

-
[35eba76](35eba76b4d)
_(example)_ Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
_(examples)_ Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

  > related #1512
  >
  > Moves the colors examples to apps

-
[5c021bf](5c021bf344)
_(examples)_ Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

  > related #1512
  >
  > Moves the chart example to apps

-
[9721300](9721300a47)
_(examples)_ Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

  > related #1512
  >
> This moves the canvas example to the apps and adds some interactivity
  > via changing the marker by pressing enter.

-
[a6a1368](a6a1368250)
_(examples)_ Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

  > Related to #1512
  >
  > As discussed, this moves the calendar example from ratatui to app
> examples as an "explorer" example. It also adds interactivity where
you
  > can press s to toggle between different styles of calendars.
  >
  > ***

-
[819e92c](819e92cd44)
_(examples)_ Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

  > related to #1512

-
[b5f7e44](b5f7e44183)
_(examples)_ Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

  > Move async example to examples/apps/async as full project.
  > Simplify a little by removing the need for the github api token.

-
[17316ec](17316ec5d0)
_(github)_ Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d02995f](d02995fda1)
_(gitignore)_ Add `.env` to `.gitignore` by @j-g00da in
[#1949](https://github.com/ratatui/ratatui/pull/1949)

-
[b4a71e5](b4a71e5fd5)
_(lint)_ Add `std` instead of `core`/`alloc` lints to `ratatui-widgets`
by @j-g00da in [#1763](https://github.com/ratatui/ratatui/pull/1763)

  > Resolves #1761

-
[cef617c](cef617cc35)
_(lint)_ Add `std` instead of `core`/`alloc` lints to `ratatui-core` by
@j-g00da in [#1759](https://github.com/ratatui/ratatui/pull/1759)

  > Resolves #1752

-
[d3f01eb](d3f01ebf6e)
_(lint)_ Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

  > - Move lints to workspace manifest
  > - Add lint config to backend crates
  > - Fix one small lint error

-
[9fb0544](9fb054453d)
_(release)_ Initialize release-plz by @orhun in
[#1550](https://github.com/ratatui/ratatui/pull/1550)

  > See https://github.com/ratatui/ratatui/pull/1550

-
[60a8191](60a81913ed)
_(widgets)_ Move crossterm to dev-dependencies by @j-g00da in
[#1834](https://github.com/ratatui/ratatui/pull/1834)

  > Crossterm in widgets is used only in tests.

-
[2b7ec5c](2b7ec5cb7f)
_(widgets)_ Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

  > We now expect that you disable the default features if you want less
  > dependencies

-
[d201b8e](d201b8e5dd)
_(xtask)_ Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

  > Makes it possible to filter workspace packages by their targets.
> (e.g. when we want to retrieve all the binary targets / examples,
etc.)

-
[297d264](297d264c6b)
_(uncategorized)_ Update maintainers by @orhun in
[#2122](https://github.com/ratatui/ratatui/pull/2122)

-
[91fa249](91fa249cd4)
_(uncategorized)_ Remove obsolete doc_auto_cfg feature by @ognis1205 in
[#2103](https://github.com/ratatui/ratatui/pull/2103)

  > The doc_auto_cfg feature was incorporated into the doc_cfg feature
  > in https://github.com/rust-lang/rust/pull/138907
  >
  > Closes #2102

-
[46e7c6c](46e7c6cbbf)
_(uncategorized)_ Document rustfmt options by @joshka in
[#2055](https://github.com/ratatui/ratatui/pull/2055)

-
[719badb](719badb5b8)
_(uncategorized)_ Skip `alpha` and `beta` tags in `cliff.toml` by
@j-g00da in [#2026](https://github.com/ratatui/ratatui/pull/2026)

  > https://github.com/ratatui/ratatui/pull/2025#issuecomment-3135177683

-
[0afb1a9](0afb1a99af)
_(uncategorized)_ Ignore `beta` and `rc` tags in `cliff.toml` by
@j-g00da in [#2025](https://github.com/ratatui/ratatui/pull/2025)

-
[5ae224b](5ae224b244)
_(uncategorized)_ Prepare for beta release by @j-g00da in
[#2022](https://github.com/ratatui/ratatui/pull/2022)

-
[cfebd68](cfebd68e18)
_(uncategorized)_ Fix typo in CONTRIBUTING.md by @kdheepak in
[#2001](https://github.com/ratatui/ratatui/pull/2001)

  > Removes a hanging opening code block:
  >
  > ````
  > ```suggestion
  > ````

-
[572749f](572749f388)
_(uncategorized)_ Update contributing guidelines and add
copilot-instructions by @joshka in
[#1998](https://github.com/ratatui/ratatui/pull/1998)

  > See
>
https://docs.github.com/en/copilot/how-tos/agents/copilot-code-review/using-copilot-code-review
  >
> These instructions will be used by copilot when it performs automated
PR
> reviews, and helps provide guardrails for our standards. Over time we
> might grow these to capture any consistent problems that we start
seeing
  > when reviewing.
  >
  > ***

-
[0148b62](0148b62f0c)
_(uncategorized)_ Remove cargo_metadata dep from xtask by @joshka in
[#1993](https://github.com/ratatui/ratatui/pull/1993)

  > Removed due to hard N-2 MSRV requirement, whereas we use a soft N-2
> (only update when necessary). This makes it painful to be able to test
> our actual msrv (as the xtask has to be built with the version that
its
> deps support, while still wanting to check the msrv version, so we'd
end
  > up with 2 versions in the one CI task and this would get annoying to
  > check).
  >
> See https://github.com/rust-lang/cargo/issues/15746 for more details.
  >
> Partially implements #1820 - mainly as a problem solution rather than
a
  > specific goal to use cargo-hack

-
[9bc5739](9bc573931c)
_(uncategorized)_ Remove clap-cargo from xtask by @joshka in
[#1992](https://github.com/ratatui/ratatui/pull/1992)

  > Removed to avoid needing to bump our msrv. See
>
https://github.com/rust-lang/cargo/issues/15746\#issuecomment-3071774343
  > for more details.

-
[0e10170](0e10170e19)
_(uncategorized)_ Change Borders::NONE to a proper const by @joshka in
[#1985](https://github.com/ratatui/ratatui/pull/1985)

  > https://docs.rs/bitflags/latest/bitflags/#zero-bit-flags
  >
  > > Flags with no bits set should be avoided because they interact
  > > strangely with
  >
>
[Flags::contains](https://docs.rs/bitflags/latest/bitflags/trait.Flags.html#method.contains)
  > and
  >
>
[Flags::intersects](https://docs.rs/bitflags/latest/bitflags/trait.Flags.html#method.intersects).
> A zero-bit flag is always contained, but is never intersected. The
names
  > of zero-bit flags can be parsed, but are never formatted.
  >
> Removing this simplifies the manual Debug impl that previously had to
  > check for Borders::NONE and now does not.

-
[8e3bd11](8e3bd11d60)
_(uncategorized)_ Add svg logo asset by @LitoMore in
[#1967](https://github.com/ratatui/ratatui/pull/1967)

> Added a shields.io style svg logo and a nicer version of the original
logo.
> The simplified icon will be added and available directly from
shields.io via:
  >
  > - https://github.com/simple-icons/simple-icons/pull/13593

-
[92bb9b2](92bb9b2219)
_(uncategorized)_ Remove `Title` references by @j-g00da in
[#1943](https://github.com/ratatui/ratatui/pull/1943)

-
[d6647db](d6647db744)
_(uncategorized)_ Remove some allow attributes for fixed clippy bugs by
@joshka in [#1944](https://github.com/ratatui/ratatui/pull/1944)

-
[3f48bde](3f48bde3c6)
_(uncategorized)_ Remove OpenSSL license by @joshka in
[#1942](https://github.com/ratatui/ratatui/pull/1942)

  > Only keep licenses in the allow list that are actually used

-
[4c86513](4c86513790)
_(uncategorized)_ Remove block::Title by @joshka in
[#1926](https://github.com/ratatui/ratatui/pull/1926)

> The title alignment is better expressed in the `Line` as this fits
more
  > coherently with the rest of the library.
  >
  > BREAKING CHANGES:
  >
  > - `widgets::block` is no longer exported
  > - `widgets::block::Title` no longer exists
  > - `widgets::block::Position` is now `widgets::TitlePosition`
> - `Block::title()` now accepts `Into::<Line>` instead of `Into<Title>`
  > - `BlockExt` is now exported at widgets::`BlockExt`
  >
  > Closes:https://github.com/ratatui/ratatui/issues/738

-
[272f5c0](272f5c05dc)
_(uncategorized)_ Fix new lints by @joshka in
[#1922](https://github.com/ratatui/ratatui/pull/1922)

-
[770cb7c](770cb7c3c3)
_(uncategorized)_ Add tests for combining list styles by @joshka in
[#1884](https://github.com/ratatui/ratatui/pull/1884)

-
[dbfb2c3](dbfb2c3399)
_(uncategorized)_ Upgrade to Rust Edition 2024 by @MatrixFrog in
[#1863](https://github.com/ratatui/ratatui/pull/1863)

  > https://doc.rust-lang.org/edition-guide/rust-2024/index.html
  >
  > Fixes #1727

-
[7cb35d4](7cb35d4be1)
_(uncategorized)_ Update to Rust version 1.85.0 by @MatrixFrog in
[#1860](https://github.com/ratatui/ratatui/pull/1860)

  > This is a small step toward fixing #1727

-
[a07f5be](a07f5bec20)
_(uncategorized)_ Move dependency management to workspace by @joshka in
[#1858](https://github.com/ratatui/ratatui/pull/1858)

  > Move all dependency management to the workspace level. This makes it
> easier to manage dependencies across multiple crates in the workspace.
  >
> This also changes the versions of each dependency to track based on
the
> semver compatible version of the dependency (e.g. 0.1 instead of 0.1.0
  > or 2.9 instead of 2.9.0 to avoid having to regularly update the toml
  > files and to communicate that Ratatui will still generally work with
> versions of the dependencies that are not the fully latest version.
The
  > exact version of the dependencies is still tracked in the Cargo.lock
  > file.
  >
> Several dependencies that are fairly stable are changed to track a
less
  > specific version (e.g. serde 1 instead of 1.0.x).
  >
  > The following dependencies are updated to their latest versions:
  >
  > - bitflags (2.3 -> 2.9)
  > - strum (0.26 -> 0.27)
  > - strum_macros (0.26 -> 0.27)
  > - all other semver compatible updates

-
[1874b9d](1874b9dd55)
_(uncategorized)_ Move time to dev-dependencies by @j-g00da in
[#1835](https://github.com/ratatui/ratatui/pull/1835)

-
[d88cd29](d88cd29079)
_(uncategorized)_ Add 'const' to functions where possible. by
@MatrixFrog in [#1802](https://github.com/ratatui/ratatui/pull/1802)

> The Clippy check for this (missing_const_for_fn) is already enabled,
but
  > catches more cases in upcoming toolchain versions.
  >
  > This is part of the work to unblock #1727

-
[bb06889](bb068892c9)
_(uncategorized)_ Fix io_other_error clippy lints by @joshka in
[#1756](https://github.com/ratatui/ratatui/pull/1756)

> Pre-emptive fix for new lint to be added in 1.87 (currently in beta).
  >
>
https://rust-lang.github.io/rust-clippy/master/index.html\#io_other_error

-
[0f80c5e](0f80c5e87e)
_(uncategorized)_ Use expect() instead of allow() for lint overrides by
@cgzones in [#1786](https://github.com/ratatui/ratatui/pull/1786)
[**breaking**]

  > BREAKING CHANGE:MSRV is now 1.81

-
[fe8577c](fe8577c070)
_(uncategorized)_ Remove paste dependency by @joshka in
[#1713](https://github.com/ratatui/ratatui/pull/1713)

> The paste crate is no longer maintained. Replaces the usages of this
in
> the Stylize declarative macros with hard coded values. These macros
are
> internal implementation detail to ratatui and so the changes should
have
  > no impact on users.
  >
  > Fixes:https://github.com/ratatui/ratatui/issues/1712

-
[255e466](255e4661a8)
_(uncategorized)_ Cargo update - pull in fixed version of ring crate by
@joshka in [#1710](https://github.com/ratatui/ratatui/pull/1710)

-
[f05feac](f05feac337)
_(uncategorized)_ Sort dependencies in Cargo.toml by @canac in
[#1662](https://github.com/ratatui/ratatui/pull/1662)

-
[7eab88f](7eab88fe9a)
_(uncategorized)_ Remove unused deps by @joshka in
[#1661](https://github.com/ratatui/ratatui/pull/1661)

-
[37a1c6f](37a1c6f89b)
_(uncategorized)_ Remove some examples by @orhun in
[#1645](https://github.com/ratatui/ratatui/pull/1645)

-
[6f21319](6f213191ef)
_(uncategorized)_ Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

> These will eventually be moved / consolidated elsewhere, but this
clears
  > the warnings while building for now.

-
[11cbb2b](11cbb2ba87)
_(uncategorized)_ Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
_(uncategorized)_ Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
_(uncategorized)_ Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

  > ```bash
> find . -type f -not -path './.git/*' -not -name '*.bash' -exec chmod
644 {} +
  > ```
  >
  > fixes #1576

-
[357ae7e](357ae7e251)
_(uncategorized)_ Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

  > - Move Terminal, TerminalOptions, ViewPort, CompletedFrame, Frame to
  >   ratatui-core crate
> - Move render_widget_ref() and render_stateful_widget_ref() to
extension
  >   trait (FrameExt) due as the Ref types are unstable and kept in the
  >   main lib instead of -core
  > - Fix rustdoc errors / feature config issues
  >
  > BREAKING CHANGE:to call `Frame::render_widget_ref()` or
  >
  > `Frame::render_stateful_widget_ref()` you now need to import the
  > FrameExt trait from `ratatui::widgets` and enable the
  > `unstable-widget-ref` feature.

-
[21e62d8](21e62d84c2)
_(uncategorized)_ Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

  > Add a top level examples folder for more app-ish examples
  > Move the demo example into the top level folder.
  >
  > ***

-
[fbf6050](fbf6050c86)
_(uncategorized)_ Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

> This is the first modularization -alpha release. It captures the
changes
  > necessary to manual publish. And ensures all the crates are properly
> setup and to set a baseline for comparison in future release checks
etc.
  >
  > This does not update / check the git-cliff setup / changelog
  >
  > Part of: #1388

-
[e4e95bc](e4e95bcecf)
_(uncategorized)_ Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

  > No longer necessary as of bacon 3.3

-
[a41c97b](a41c97b413)
_(uncategorized)_ Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

  > These are less stable than the non-ref traits as we have not yet
  > committed to the exact API. This change moves them to ratatui from
  > ratatui-core.
  >
  > To facilitate this:
  >
> - implementations of WidgetRef for all internal widgets are removed
and
  >   replaced with implementations of Widget for references to those
  >   widgets.
> - Widget is now implemented for Option<W> where W: Widget, allowing
for
  >   rendering of optional widgets.
> - The blanket implementation of Widget for WidgetRef is reversed, to
be
  >   a blanket implementation of WidgetRef for all &W where W: Widget.
  >
> BREAKING CHANGE:implementations of WidgetRef no longer have a blanket
  > implementation of Widget, so Widgets should generally implement the
  > Widget trait on a reference to the widget rather than implementing
  > WidgetRef directly. This has the advantage of not requiring unstable
  > features to be enabled.
  >
  > Part of: https://github.com/ratatui/ratatui/issues/1388

-
[e7085e3](e7085e3a3e)
_(uncategorized)_ Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

> All the widgets now live in their own ratatui-widgets crate, but are
re-exported in the main ratatui crate.
> This makes it easier to use portions of the ratatui library and is
part of the effort to modularize
  >
  > Part of: #1388
  >
  > ***

-
[f1d0a18](f1d0a18375)
_(uncategorized)_ Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

  > This is the first step towards modularization. Handling the move
  > as a separate step rather than combining it should make it easier
  > to rebase other PRs when necessary.
  >
  > ***

-
[55fb2d2](55fb2d2e56)
_(uncategorized)_ Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[c01b7d4](c01b7d43ea)
_(uncategorized)_ Remove old release workflows by @joshka in
[#2015](https://github.com/ratatui/ratatui/pull/2015)

-
[02ca587](02ca5870c5)
_(uncategorized)_ Add environment to release workflow by @joshka in
[#1983](https://github.com/ratatui/ratatui/pull/1983)

>
https://github.com/rust-lang/crates.io/issues/11564#issuecomment-3066696820

-
[821611f](821611f76f)
_(uncategorized)_ Use trusted publishing by @joshka in
[#1981](https://github.com/ratatui/ratatui/pull/1981)

>
https://blog.rust-lang.org/2025/07/11/crates-io-development-update-2025-07/
  >
  > https://crates.io/docs/trusted-publishing

-
[1f0c2ee](1f0c2ee18e)
_(uncategorized)_ Audit github workflows with zizmor by @joshka in
[#1961](https://github.com/ratatui/ratatui/pull/1961)

  > Fixes https://github.com/ratatui/ratatui/issues/1950

-
[a0746ba](a0746bad7e)
_(uncategorized)_ Add job to check no-std build by @joshka in
[#1851](https://github.com/ratatui/ratatui/pull/1851)

> Uses x86_64-unknown-none as an arbitrary target that does not support
  > the std library
  >
  > Resolves:https://github.com/ratatui/ratatui/issues/1843

-
[5a3be12](5a3be12ebd)
_(uncategorized)_ Run clippy using rust stable and beta by @joshka in
[#1757](https://github.com/ratatui/ratatui/pull/1757)

> This makes it possible to pre-emptively catch upcoming clippy issues.
We
  > should not block PRs on these generally (unless the PR introduces a
> valid clippy warning), so the workflow is set up to not fail on beta.

-
[e7defb3](e7defb36de)
_(uncategorized)_ Remove bencher workflows by @joshka in
[#1719](https://github.com/ratatui/ratatui/pull/1719)

  > These actions are currently unused as we haven't
  > invested the time necessary to understand how best
  > to use them. We can always re-add them later if we
  > find them useful.

-
[9398a25](9398a2550a)
_(uncategorized)_ Add workflow_dispatch trigger for release-plz by
@joshka in [#1693](https://github.com/ratatui/ratatui/pull/1693)

-
[57c2326](57c2326574)
_(uncategorized)_ Run cargo-deny directly rather than via action by
@joshka in [#1621](https://github.com/ratatui/ratatui/pull/1621)

  > Improves CI time

-
[4a871f9](4a871f993e)
_(uncategorized)_ Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

  > - format toml files using taplo
  > - add toml formatting check to CI
  > - use xtask consistently from bacon
> - refactor xtask commands to take params instead of multiple commands

### Reverted Commits

-
[cace1e0](cace1e099c)
_(release)_ Prepare for beta release by @orhun in
[#2117](https://github.com/ratatui/ratatui/pull/2117)

  > This reverts commit 5ae224b244 so that
  > `release-plz` is being triggered again.
  >
> See
https://github.com/ratatui/ratatui/pull/2022#issuecomment-3349094310
  > for rationale.

</details>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-11-01 02:22:55 +03:00
Orhun Parmaksız
39cd313b3b test(layout): add visual buffer tests for Rect methods (#2124) 2025-11-01 00:07:15 +03:00
Orhun Parmaksız
db65aa0ef7 test(bench): add benchmark for text (#2160)
#2138

---------

Signed-off-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
Co-authored-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
2025-10-31 23:53:51 +03:00
Orhun Parmaksız
0a25bc166d fix(tests): update the stderr snapshot for ratatui-macros (#2161)
New 🦀 broke the CI
2025-10-31 19:46:57 +03:00
Jagoda Estera Ślązak
3582052c30 chore(changelog): fix typos (#2157)
Fix yet more typos in commits...
2025-10-28 23:06:52 +03:00
dependabot[bot]
12d3c78aa4 build(deps): bump taiki-e/install-action from 2.62.33 to 2.62.38 (#2156)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.33 to 2.62.38.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.38</h2>
<ul>
<li>
<p>Update <code>coreutils@latest</code> to 0.3.0.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 38.0.3.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.17.</p>
</li>
<li>
<p>Update <code>cargo-tarpaulin@latest</code> to 0.34.1.</p>
</li>
</ul>
<h2>2.62.37</h2>
<ul>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.8.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.16.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.16.</p>
</li>
</ul>
<h2>2.62.36</h2>
<ul>
<li>
<p>Update <code>syft@latest</code> to 1.36.0.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.15.</p>
</li>
</ul>
<h2>2.62.35</h2>
<ul>
<li>
<p>Update <code>wasmtime@latest</code> to 38.0.2.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.108.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.14.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.9.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.5.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.13.</p>
</li>
</ul>
<h2>2.62.34</h2>
<ul>
<li>
<p>Update <code>sccache@latest</code> to 0.12.0.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 38.0.1.</p>
</li>
<li>
<p>Update <code>rclone@latest</code> to 1.71.2.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.12.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.8.</p>
</li>
<li>
<p>Update <code>ubi@latest</code> to 0.8.2.</p>
</li>
<li>
<p>Update <code>cargo-tarpaulin@latest</code> to 0.34.0.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>Update <code>mise@latest</code> to 2025.10.18.</li>
</ul>
<h2>[2.62.38] - 2025-10-25</h2>
<ul>
<li>
<p>Update <code>coreutils@latest</code> to 0.3.0.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 38.0.3.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.17.</p>
</li>
<li>
<p>Update <code>cargo-tarpaulin@latest</code> to 0.34.1.</p>
</li>
</ul>
<h2>[2.62.37] - 2025-10-24</h2>
<ul>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.8.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.16.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.16.</p>
</li>
</ul>
<h2>[2.62.36] - 2025-10-23</h2>
<ul>
<li>
<p>Update <code>syft@latest</code> to 1.36.0.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.19.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.15.</p>
</li>
</ul>
<h2>[2.62.35] - 2025-10-22</h2>
<ul>
<li>
<p>Update <code>wasmtime@latest</code> to 38.0.2.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.108.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.14.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.9.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c5b1b6f479"><code>c5b1b6f</code></a>
Release 2.62.38</li>
<li><a
href="7cd74f6aac"><code>7cd74f6</code></a>
Update <code>coreutils@latest</code> to 0.3.0</li>
<li><a
href="def9901333"><code>def9901</code></a>
Update <code>wasmtime@latest</code> to 38.0.3</li>
<li><a
href="a9d3853729"><code>a9d3853</code></a>
Update coreutils manifest</li>
<li><a
href="958d48b0c9"><code>958d48b</code></a>
Update <code>mise@latest</code> to 2025.10.17</li>
<li><a
href="fb485991fd"><code>fb48599</code></a>
Update <code>cargo-tarpaulin@latest</code> to 0.34.1</li>
<li><a
href="1c7b1d35fc"><code>1c7b1d3</code></a>
Release 2.62.37</li>
<li><a
href="18cba62798"><code>18cba62</code></a>
Update <code>cargo-binstall@latest</code> to 1.15.8</li>
<li><a
href="f3c0c6962a"><code>f3c0c69</code></a>
Update <code>zizmor@latest</code> to 1.16.0</li>
<li><a
href="99fc3e5b1e"><code>99fc3e5</code></a>
Update <code>mise@latest</code> to 2025.10.16</li>
<li>Additional commits viewable in <a
href="e43a5023a7...c5b1b6f479">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.33&new-version=2.62.38)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 19:38:20 +03:00
dependabot[bot]
40d3116b2a build(deps): bump bitflags from 2.9.4 to 2.10.0 (#2153)
Bumps [bitflags](https://github.com/bitflags/bitflags) from 2.9.4 to
2.10.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/releases">bitflags's
releases</a>.</em></p>
<blockquote>
<h2>2.10.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Implement iterator for all named flags by <a
href="https://github.com/ssrlive"><code>@​ssrlive</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/465">bitflags/bitflags#465</a></li>
<li>Depend on serde_core instead of serde by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/467">bitflags/bitflags#467</a></li>
<li>Prepare for 2.10.0 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/468">bitflags/bitflags#468</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/ssrlive"><code>@​ssrlive</code></a> made
their first contribution in <a
href="https://redirect.github.com/bitflags/bitflags/pull/465">bitflags/bitflags#465</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0">https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md">bitflags's
changelog</a>.</em></p>
<blockquote>
<h1>2.10.0</h1>
<h2>What's Changed</h2>
<ul>
<li>Implement iterator for all named flags by <a
href="https://github.com/ssrlive"><code>@​ssrlive</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/465">bitflags/bitflags#465</a></li>
<li>Depend on serde_core instead of serde by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/467">bitflags/bitflags#467</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/ssrlive"><code>@​ssrlive</code></a> made
their first contribution in <a
href="https://redirect.github.com/bitflags/bitflags/pull/465">bitflags/bitflags#465</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0">https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7cc8595e93"><code>7cc8595</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/468">#468</a>
from bitflags/cargo/2.10.0</li>
<li><a
href="ea9b2f7990"><code>ea9b2f7</code></a>
prepare for 2.10.0 release</li>
<li><a
href="7fdc68c7f5"><code>7fdc68c</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/467">#467</a>
from KodrAus/feat/serde_core</li>
<li><a
href="fdc1d4a371"><code>fdc1d4a</code></a>
depend on serde_core instead of serde</li>
<li><a
href="79225854ca"><code>7922585</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/466">#466</a>
from KodrAus/chore/iter-named-tests</li>
<li><a
href="409666ecc1"><code>409666e</code></a>
rename iter_named to iter_defined_names</li>
<li><a
href="50fab9141c"><code>50fab91</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/465">#465</a>
from ssrlive/main</li>
<li><a
href="f88648983a"><code>f886489</code></a>
Fix bitflags_custom_bits.stderr &amp; bitflags_trait_custom.stderr</li>
<li><a
href="39bd761932"><code>39bd761</code></a>
rename all_named_flags to iter_named</li>
<li><a
href="3e52578f1f"><code>3e52578</code></a>
Implement iterator for all named flags</li>
<li>See full diff in <a
href="https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bitflags&package-manager=cargo&previous-version=2.9.4&new-version=2.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-10-27 19:06:20 +03:00
dependabot[bot]
d3017046b9 build(deps): bump document-features from 0.2.11 to 0.2.12 (#2152)
Bumps [document-features](https://github.com/slint-ui/document-features)
from 0.2.11 to 0.2.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/slint-ui/document-features/blob/master/CHANGELOG.md">document-features's
changelog</a>.</em></p>
<blockquote>
<h2>0.2.12 - 2025-10-24</h2>
<ul>
<li>Update litrs dependency to 1.0.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="721e708012"><code>721e708</code></a>
Prepare for release</li>
<li><a
href="21ec1eb99c"><code>21ec1eb</code></a>
Update MSRV</li>
<li><a
href="1c70d0aa83"><code>1c70d0a</code></a>
chore: fix wrong test function name (<a
href="https://redirect.github.com/slint-ui/document-features/issues/35">#35</a>)</li>
<li><a
href="21cdfeccbc"><code>21cdfec</code></a>
Update litrs dependency to v1.0</li>
<li><a
href="bb0dea8b10"><code>bb0dea8</code></a>
Fix typo in CHANGELOG.md</li>
<li>See full diff in <a
href="https://github.com/slint-ui/document-features/compare/v0.2.11...v0.2.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=document-features&package-manager=cargo&previous-version=0.2.11&new-version=0.2.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 19:05:01 +03:00
dependabot[bot]
6e5d79747f build(deps): bump indoc from 2.0.6 to 2.0.7 (#2154)
Bumps [indoc](https://github.com/dtolnay/indoc) from 2.0.6 to 2.0.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/indoc/releases">indoc's
releases</a>.</em></p>
<blockquote>
<h2>2.0.7</h2>
<ul>
<li>Support C-string literals <code>indoc! {c&quot;...&quot;}</code>,
<code>indoc! {cr&quot;...&quot;}</code> (<a
href="https://redirect.github.com/dtolnay/indoc/issues/67">#67</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8d78216b3f"><code>8d78216</code></a>
Release 2.0.7</li>
<li><a
href="23472ff7f3"><code>23472ff</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/indoc/issues/67">#67</a> from
dtolnay/cstring</li>
<li><a
href="8d05562cbe"><code>8d05562</code></a>
Hide C-string tests from old toolchain versions</li>
<li><a
href="7c92efb718"><code>7c92efb</code></a>
Recognize C-string literals</li>
<li><a
href="fe39de460f"><code>fe39de4</code></a>
Generalize Error constructors</li>
<li><a
href="27e015160e"><code>27e0151</code></a>
Add C-string tests</li>
<li><a
href="57f6fbb4da"><code>57f6fbb</code></a>
Sort tests</li>
<li><a
href="170a079558"><code>170a079</code></a>
Raise minimum tested compiler to rust 1.76</li>
<li><a
href="2f6ef0452d"><code>2f6ef04</code></a>
Opt in to generate-macro-expansion when building on docs.rs</li>
<li><a
href="ce1bed41bb"><code>ce1bed4</code></a>
Update ui test suite to nightly-2025-09-12</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/indoc/compare/2.0.6...2.0.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=indoc&package-manager=cargo&previous-version=2.0.6&new-version=2.0.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 19:04:16 +03:00
dependabot[bot]
f18154bcfe build(deps): bump clap from 4.5.49 to 4.5.50 (#2155)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.49 to 4.5.50.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.50</h2>
<h2>[4.5.50] - 2025-10-20</h2>
<h3>Features</h3>
<ul>
<li>Accept <code>Cow</code> where <code>String</code> and
<code>&amp;str</code> are accepted</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.50] - 2025-10-20</h2>
<h3>Features</h3>
<ul>
<li>Accept <code>Cow</code> where <code>String</code> and
<code>&amp;str</code> are accepted</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d8acd47298"><code>d8acd47</code></a>
chore: Release</li>
<li><a
href="7c2b8d9ad4"><code>7c2b8d9</code></a>
docs: Update changelog</li>
<li><a
href="e69a2ea55b"><code>e69a2ea</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5987">#5987</a>
from mernen/fix-bash-comp-words-loop</li>
<li><a
href="e03cc2e798"><code>e03cc2e</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5988">#5988</a>
from cordx56/fix-builder-custom-version-docs</li>
<li><a
href="5ab2579844"><code>5ab2579</code></a>
fix: Minor fix for builder docs about version</li>
<li><a
href="2f66432721"><code>2f66432</code></a>
fix(complete): Only parse arguments before current</li>
<li><a
href="4d9d2100f7"><code>4d9d210</code></a>
test(complete): Illustrate current behavior in Bash</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.49...clap_complete-v4.5.50">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.49&new-version=4.5.50)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 19:03:47 +03:00
dependabot[bot]
1e11ca4536 build(deps): bump unicode-width from 0.2.1 to 0.2.2 (#2141)
Bumps [unicode-width](https://github.com/unicode-rs/unicode-width) from
0.2.1 to 0.2.2.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9d98411769"><code>9d98411</code></a>
Publish 0.2.2 (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/79">#79</a>)</li>
<li><a
href="4bba1d1e48"><code>4bba1d1</code></a>
Support Unicode 17 (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/75">#75</a>)</li>
<li>See full diff in <a
href="https://github.com/unicode-rs/unicode-width/compare/v0.2.1...v0.2.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=unicode-width&package-manager=cargo&previous-version=0.2.1&new-version=0.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 23:43:39 -07:00
dependabot[bot]
fa73ff095d build(deps): bump octocrab from 0.44.1 to 0.47.0 (#2143)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.44.1 to
0.47.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.47.0</h2>
<h3>Added</h3>
<ul>
<li>add <code>immutable</code> Release field (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/806">#806</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>added creating a review (POST
&quot;/repos/{owner}/{repo}/pulls/{pull_number}/reviews&quot;) (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/805">#805</a>)</li>
</ul>
<h2>v0.46.0</h2>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] make CommitAuthor email nullable (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/799">#799</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Expose <code>digest</code> field in Asset model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/804">#804</a>)</li>
<li>cargo clippy (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/803">#803</a>)</li>
<li>fix doc url for ProjectHandler (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/802">#802</a>)</li>
</ul>
<h2>v0.45.0</h2>
<h3>Added</h3>
<ul>
<li>add <code>redelivery</code> field for hook deliveries (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/797">#797</a>)</li>
<li>added PATCH /user (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/792">#792</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] change some fields to optional types in
CheckSuite struct (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/784">#784</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>:repos::Commit -&gt; models::commits::Commit (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/781">#781</a>)</li>
<li>cargo clippy --fix (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/783">#783</a>)</li>
<li>cargo clippy --fix (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/774">#774</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.46.0...v0.47.0">0.47.0</a>
- 2025-10-06</h2>
<h3>Added</h3>
<ul>
<li>add <code>immutable</code> Release field (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/806">#806</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>added creating a review (POST
&quot;/repos/{owner}/{repo}/pulls/{pull_number}/reviews&quot;) (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/805">#805</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.45.0...v0.46.0">0.46.0</a>
- 2025-09-28</h2>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] make CommitAuthor email nullable (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/799">#799</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Expose <code>digest</code> field in Asset model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/804">#804</a>)</li>
<li>cargo clippy (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/803">#803</a>)</li>
<li>fix doc url for ProjectHandler (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/802">#802</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.44.1...v0.45.0">0.45.0</a>
- 2025-09-14</h2>
<h3>Added</h3>
<ul>
<li>add <code>redelivery</code> field for hook deliveries (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/797">#797</a>)</li>
<li>added PATCH /user (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/792">#792</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] change some fields to optional types in
CheckSuite struct (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/784">#784</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>:repos::Commit -&gt; models::commits::Commit (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/781">#781</a>)</li>
<li>cargo clippy --fix (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/783">#783</a>)</li>
<li>cargo clippy --fix (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/774">#774</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="73a4dd0b1c"><code>73a4dd0</code></a>
chore: release v0.46.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/807">#807</a>)</li>
<li><a
href="0e0e43d8d8"><code>0e0e43d</code></a>
feat: add <code>immutable</code> Release field (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/806">#806</a>)</li>
<li><a
href="eac8ccb6e8"><code>eac8ccb</code></a>
added creating a review (POST
&quot;/repos/{owner}/{repo}/pulls/{pull_number}/revi...</li>
<li><a
href="e37b2c0ea6"><code>e37b2c0</code></a>
chore: release v0.46.0 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/800">#800</a>)</li>
<li><a
href="a6e52f78cb"><code>a6e52f7</code></a>
Expose <code>digest</code> field in Asset model (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/804">#804</a>)</li>
<li><a
href="ed51c79b77"><code>ed51c79</code></a>
cargo clippy (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/803">#803</a>)</li>
<li><a
href="c14cfa4f9a"><code>c14cfa4</code></a>
doc: fix doc url for ProjectHandler (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/802">#802</a>)</li>
<li><a
href="0b57b29106"><code>0b57b29</code></a>
fix!: make CommitAuthor email nullable (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/799">#799</a>)</li>
<li><a
href="c3169920cb"><code>c316992</code></a>
chore: release v0.45.0 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/785">#785</a>)</li>
<li><a
href="1cad4325c7"><code>1cad432</code></a>
feat: add <code>redelivery</code> field for hook deliveries (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/797">#797</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.44.1...v0.47.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.44.1&new-version=0.47.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 23:21:52 -07:00
dependabot[bot]
efcc633f72 build(deps): bump clap from 4.5.48 to 4.5.49 (#2147)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.48 to 4.5.49.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.49] - 2025-10-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Correctly wrap when ANSI escape codes are
present</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6abe2f8c61"><code>6abe2f8</code></a>
chore: Release</li>
<li><a
href="d5c74542ce"><code>d5c7454</code></a>
docs: Update changelog</li>
<li><a
href="5b2e960267"><code>5b2e960</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5985">#5985</a>
from mernen/bash-cur</li>
<li><a
href="e426f4ee7a"><code>e426f4e</code></a>
fix(complete): Improve handling of current word in Bash</li>
<li><a
href="d5229218e8"><code>d522921</code></a>
test(complete): Demonstrate current behavior</li>
<li><a
href="74072bab6f"><code>74072ba</code></a>
chore(deps): Update compatible (dev) (<a
href="https://redirect.github.com/clap-rs/clap/issues/5983">#5983</a>)</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.48...clap_complete-v4.5.49">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.48&new-version=4.5.49)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 20:35:17 +03:00
dependabot[bot]
817895b554 build(deps): bump trybuild from 1.0.111 to 1.0.112 (#2145)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.111 to
1.0.112.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.112</h2>
<ul>
<li>Normalize indentation of consteval notes (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/318">#318</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f3b3d1e2d1"><code>f3b3d1e</code></a>
Release 1.0.112</li>
<li><a
href="579b2c39ad"><code>579b2c3</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/318">#318</a>
from dtolnay/headingnote</li>
<li><a
href="9485845429"><code>9485845</code></a>
Normalize indentation of consteval notes</li>
<li><a
href="6b1de1e13a"><code>6b1de1e</code></a>
Add test of consteval error with notes</li>
<li><a
href="e1d19ae2e9"><code>e1d19ae</code></a>
Raise required compiler to Rust 1.76</li>
<li><a
href="b4a1fc7dd6"><code>b4a1fc7</code></a>
Opt in to generate-macro-expansion when building on docs.rs</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.111...1.0.112">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.111&new-version=1.0.112)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 19:01:08 +03:00
dependabot[bot]
8d715e2e51 build(deps): bump tokio from 1.47.1 to 1.48.0 (#2144)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.47.1 to 1.48.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.48.0</h2>
<h1>1.48.0 (October 14th, 2025)</h1>
<p>The MSRV is increased to 1.71.</p>
<h3>Added</h3>
<ul>
<li>fs: add <code>File::max_buf_size</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7594">#7594</a>)</li>
<li>io: export <code>Chain</code> of <code>AsyncReadExt::chain</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7599">#7599</a>)</li>
<li>net: add <code>SocketAddr::as_abstract_name</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7491">#7491</a>)</li>
<li>net: add <code>TcpStream::quickack</code> and
<code>TcpStream::set_quickack</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7490">#7490</a>)</li>
<li>net: implement <code>AsRef&lt;Self&gt;</code> for
<code>TcpStream</code> and <code>UnixStream</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7573">#7573</a>)</li>
<li>task: add <code>LocalKey::try_get</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7666">#7666</a>)</li>
<li>task: implement <code>Ord</code> for <code>task::Id</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7530">#7530</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>deps: bump windows-sys to version 0.61 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7645">#7645</a>)</li>
<li>fs: preserve <code>max_buf_size</code> when cloning a
<code>File</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7593">#7593</a>)</li>
<li>macros: suppress <code>clippy::unwrap_in_result</code> in
<code>#[tokio::main]</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7651">#7651</a>)</li>
<li>net: remove <code>PollEvented</code> noise from Debug formats (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7675">#7675</a>)</li>
<li>process: upgrade <code>Command::spawn_with</code> to use
<code>FnOnce</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7511">#7511</a>)</li>
<li>sync: remove inner mutex in <code>SetOnce</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7554">#7554</a>)</li>
<li>sync: use <code>UnsafeCell::get_mut</code> in
<code>Mutex::get_mut</code> and <code>RwLock::get_mut</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7569">#7569</a>)</li>
<li>time: reduce the generated code size of
<code>Timeout&lt;T&gt;::poll</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7535">#7535</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>macros: fix hygiene issue in <code>join!</code> and
<code>try_join!</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7638">#7638</a>)</li>
<li>net: fix copy/paste errors in udp peek methods (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7604">#7604</a>)</li>
<li>process: fix error when runtime is shut down on nightly-2025-10-12
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7672">#7672</a>)</li>
<li>runtime: use release ordering in <code>wake_by_ref()</code> even if
already woken (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7622">#7622</a>)</li>
<li>sync: close the <code>broadcast::Sender</code> in
<code>broadcast::Sender::new()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7629">#7629</a>)</li>
<li>sync: fix implementation of unused <code>RwLock::try_*</code>
methods (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7587">#7587</a>)</li>
</ul>
<h3>Unstable</h3>
<ul>
<li>tokio: use cargo features instead of <code>--cfg</code> flags for
<code>taskdump</code> and <code>io_uring</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7655">#7655</a>,
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7621">#7621</a>)</li>
<li>fs: support <code>io_uring</code> in <code>fs::write</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7567">#7567</a>)</li>
<li>fs: support <code>io_uring</code> with <code>File::open()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7617">#7617</a>)</li>
<li>fs: support <code>io_uring</code> with <code>OpenOptions</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7321">#7321</a>)</li>
<li>macros: add <code>local</code> runtime flavor (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7375">#7375</a>,
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7597">#7597</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>io: clarify the zero capacity case of
<code>AsyncRead::poll_read</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7580">#7580</a>)</li>
<li>io: fix typos in the docs of <code>AsyncFd</code> readiness guards
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7583">#7583</a>)</li>
<li>net: clarify socket gets closed on drop (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7526">#7526</a>)</li>
<li>net: clarify the behavior of <code>UCred::pid()</code> on Cygwin (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7611">#7611</a>)</li>
<li>net: clarify the supported platform of <code>set_reuseport()</code>
and <code>reuseport()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7628">#7628</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="556820ff84"><code>556820f</code></a>
chore: prepare Tokio v1.48.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7677">#7677</a>)</li>
<li><a
href="fd1659a052"><code>fd1659a</code></a>
chore: prepare tokio-macros v2.6.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7676">#7676</a>)</li>
<li><a
href="53e8acac64"><code>53e8aca</code></a>
ci: update nightly version to 2025-10-12 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7670">#7670</a>)</li>
<li><a
href="9e5527d1d5"><code>9e5527d</code></a>
process: fix error when runtime is shut down on nightly-2025-10-12 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7672">#7672</a>)</li>
<li><a
href="25a24de0e6"><code>25a24de</code></a>
net: remove PollEvented noise from Debug formats (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7675">#7675</a>)</li>
<li><a
href="c1fa25f300"><code>c1fa25f</code></a>
task: clarify the behavior of several <code>spawn_local</code> methods
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7669">#7669</a>)</li>
<li><a
href="e7e02fcf0f"><code>e7e02fc</code></a>
fs: use <code>FileOptions</code> inside <code>fs::File</code> to support
uring (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7617">#7617</a>)</li>
<li><a
href="f7a7f62959"><code>f7a7f62</code></a>
ci: remove cargo-deny Unicode-DFS-2016 license exception config (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7619">#7619</a>)</li>
<li><a
href="d1f1499f63"><code>d1f1499</code></a>
tokio: use cargo feature for taskdump support instead of cfg (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7655">#7655</a>)</li>
<li><a
href="ad6f618952"><code>ad6f618</code></a>
runtime: clarify the behavior of <code>Handle::block_on</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7665">#7665</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.47.1...tokio-1.48.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.47.1&new-version=1.48.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 19:00:53 +03:00
dependabot[bot]
934a54cd67 build(deps): bump taiki-e/install-action from 2.62.28 to 2.62.33 (#2142)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.28 to 2.62.33.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.33</h2>
<ul>
<li>Update <code>mise@latest</code> to 2025.10.10.</li>
</ul>
<h2>2.62.32</h2>
<ul>
<li>
<p>Update <code>syft@latest</code> to 1.34.2.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.7.</p>
</li>
</ul>
<h2>2.62.31</h2>
<ul>
<li>
<p>Update <code>protoc@latest</code> to 3.33.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.3.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.34.1.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.9.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.0.</p>
</li>
</ul>
<h2>2.62.30</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.6.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.15.2.</p>
</li>
</ul>
<h2>2.62.29</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.15.1.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.106.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.8.</p>
</li>
<li>
<p>Update <code>ubi@latest</code> to 0.8.1.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.8.</p>
</li>
<li>
<p>Update <code>ubi@latest</code> to 0.8.2.</p>
</li>
<li>
<p>Update <code>cargo-tarpaulin@latest</code> to 0.34.0.</p>
</li>
<li>
<p>Update <code>cargo-auditable@latest</code> to 0.7.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.4.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.11.</p>
</li>
</ul>
<h2>[2.62.33] - 2025-10-17</h2>
<ul>
<li>Update <code>mise@latest</code> to 2025.10.10.</li>
</ul>
<h2>[2.62.32] - 2025-10-16</h2>
<ul>
<li>
<p>Update <code>syft@latest</code> to 1.34.2.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.7.</p>
</li>
</ul>
<h2>[2.62.31] - 2025-10-16</h2>
<ul>
<li>
<p>Update <code>protoc@latest</code> to 3.33.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.3.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.34.1.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.9.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.6.0.</p>
</li>
</ul>
<h2>[2.62.30] - 2025-10-15</h2>
<ul>
<li>Update <code>vacuum@latest</code> to 0.18.6.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e43a5023a7"><code>e43a502</code></a>
Release 2.62.33</li>
<li><a
href="2ae4258c3d"><code>2ae4258</code></a>
Update <code>mise@latest</code> to 2025.10.10</li>
<li><a
href="e79914c740"><code>e79914c</code></a>
Release 2.62.32</li>
<li><a
href="40168eab5f"><code>40168ea</code></a>
Update <code>syft@latest</code> to 1.34.2</li>
<li><a
href="6d89b16c49"><code>6d89b16</code></a>
Update <code>vacuum@latest</code> to 0.18.7</li>
<li><a
href="0005e0116e"><code>0005e01</code></a>
Release 2.62.31</li>
<li><a
href="6936d999d9"><code>6936d99</code></a>
Update <code>protoc@latest</code> to 3.33.0</li>
<li><a
href="ac7ad6efa1"><code>ac7ad6e</code></a>
Update <code>uv@latest</code> to 0.9.3</li>
<li><a
href="005833aaf1"><code>005833a</code></a>
Update <code>syft@latest</code> to 1.34.1</li>
<li><a
href="2b32ff6f3d"><code>2b32ff6</code></a>
Update <code>mise@latest</code> to 2025.10.9</li>
<li>Additional commits viewable in <a
href="e7ef886cf8...e43a5023a7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.28&new-version=2.62.33)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-10-20 19:00:14 +03:00
dependabot[bot]
23ab1f5a68 build(deps): bump rust-lang/crates-io-auth-action from 1.0.1 to 1.0.2 (#2146)
Bumps
[rust-lang/crates-io-auth-action](https://github.com/rust-lang/crates-io-auth-action)
from 1.0.1 to 1.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/crates-io-auth-action/releases">rust-lang/crates-io-auth-action's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>update dependencies</li>
<li>contributing: fix header levels by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/37">rust-lang/crates-io-auth-action#37</a></li>
<li>document how to publish a new version by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/38">rust-lang/crates-io-auth-action#38</a></li>
<li>disable node renovate updates by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/48">rust-lang/crates-io-auth-action#48</a>
and <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/49">rust-lang/crates-io-auth-action#49</a></li>
<li>fix zizmor lint by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/68">rust-lang/crates-io-auth-action#68</a></li>
<li>ci: Skip fragment check for Zulip client-side routing links by <a
href="https://github.com/kingsword09"><code>@​kingsword09</code></a> in
<a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/80">rust-lang/crates-io-auth-action#80</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/kingsword09"><code>@​kingsword09</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/pull/80">rust-lang/crates-io-auth-action#80</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/crates-io-auth-action/compare/v1.0.1...v1.0.2">https://github.com/rust-lang/crates-io-auth-action/compare/v1.0.1...v1.0.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="041cce5b4b"><code>041cce5</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/86">#86</a>
from rust-lang/update-dependencies</li>
<li><a
href="0400f617d6"><code>0400f61</code></a>
update dependencies</li>
<li><a
href="6a0951d3a2"><code>6a0951d</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/84">#84</a>
from rust-lang/renovate/github-actions</li>
<li><a
href="be8f8cfa3c"><code>be8f8cf</code></a>
chore(deps): pin dependencies</li>
<li><a
href="deea6c8fa2"><code>deea6c8</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/85">#85</a>
from rust-lang/remove-yaml-anchor-in-github-actions</li>
<li><a
href="f0eb76abb5"><code>f0eb76a</code></a>
remove yaml anchor in github actions</li>
<li><a
href="7d0a98d6f1"><code>7d0a98d</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/83">#83</a>
from rust-lang/fix-renovate-github-actions-update</li>
<li><a
href="52d74a7cdc"><code>52d74a7</code></a>
fix renovate github actions update</li>
<li><a
href="6db1cc5747"><code>6db1cc5</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/crates-io-auth-action/issues/82">#82</a>
from rust-lang/update-pnpm-to-10-18-3</li>
<li><a
href="231886e9ea"><code>231886e</code></a>
update pnpm to 10.18.3</li>
<li>Additional commits viewable in <a
href="e919bc7605...041cce5b4b">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rust-lang/crates-io-auth-action&package-manager=github_actions&previous-version=1.0.1&new-version=1.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 18:58:48 +03:00
dependabot[bot]
f50fc86b84 build(deps): bump lru from 0.16.1 to 0.16.2 (#2140)
Bumps [lru](https://github.com/jeromefroe/lru-rs) from 0.16.1 to 0.16.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jeromefroe/lru-rs/blob/master/CHANGELOG.md">lru's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/jeromefroe/lru-rs/tree/0.16.2">v0.16.2</a> -
2025-10-14</h2>
<ul>
<li>Upgrade hashbrown dependency to 0.16.0.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c1f843ded0"><code>c1f843d</code></a>
Merge pull request <a
href="https://redirect.github.com/jeromefroe/lru-rs/issues/223">#223</a>
from jeromefroe/jerome/prepare-0-16-2-release</li>
<li><a
href="fc4f30953e"><code>fc4f309</code></a>
Prepare 0.16.2 release</li>
<li><a
href="e91ea2bd85"><code>e91ea2b</code></a>
Merge pull request <a
href="https://redirect.github.com/jeromefroe/lru-rs/issues/222">#222</a>
from torokati44/hashbrown-0.16</li>
<li><a
href="90d05feff3"><code>90d05fe</code></a>
Update hashbrown to 0.16</li>
<li>See full diff in <a
href="https://github.com/jeromefroe/lru-rs/compare/0.16.1...0.16.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lru&package-manager=cargo&previous-version=0.16.1&new-version=0.16.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 18:57:47 +03:00
dependabot[bot]
71c6ad9de6 build(deps): bump crate-ci/typos from 1.37.2 to 1.38.1 (#2134)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.37.2 to
1.38.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.38.1</h2>
<h2>[1.38.1] - 2025-10-07</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore common golang identifiers</li>
</ul>
<h2>v1.38.0</h2>
<h2>[1.38.0] - 2025-10-06</h2>
<h3>Features</h3>
<ul>
<li>Update type list</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>typ</code></li>
<li>Consistently error on unused config fields</li>
</ul>
<h2>v1.37.3</h2>
<h2>[1.37.3] - 2025-10-06</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>PN</code> for <code>bitbake</code> file
types</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.38.1] - 2025-10-07</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore common golang identifiers</li>
</ul>
<h2>[1.38.0] - 2025-10-06</h2>
<h3>Features</h3>
<ul>
<li>Update type list</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>typ</code></li>
<li>Consistently error on unused config fields</li>
</ul>
<h2>[1.37.3] - 2025-10-06</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>PN</code> for <code>bitbake</code> file
types</li>
</ul>
<h2>[1.37.2] - 2025-10-03</h2>
<h3>Fixes</h3>
<ul>
<li>Don't suggest <code>diagnostic</code> for <code>diagnotics</code>,
preferring <code>diagnostics</code></li>
</ul>
<h2>[1.37.1] - 2025-10-01</h2>
<h3>Fixes</h3>
<ul>
<li>Don't offer corrections to <code>&quot;&quot;</code></li>
</ul>
<h2>[1.37.0] - 2025-09-30</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1370">September
2025</a> changes</li>
<li>Pull in other dictionary updates</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="80c8a4945e"><code>80c8a49</code></a>
chore: Release</li>
<li><a
href="c1008ce1b6"><code>c1008ce</code></a>
docs: Update changelog</li>
<li><a
href="62a3b5083a"><code>62a3b50</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1398">#1398</a>
from ccoveille-forks/go-exclusions</li>
<li><a
href="e6bedbde77"><code>e6bedbd</code></a>
fix(config): Add some Go exclusions</li>
<li><a
href="90cacd60e8"><code>90cacd6</code></a>
docs(ref): Speak to glob ambiguity</li>
<li><a
href="b81b12ea1b"><code>b81b12e</code></a>
docs(ref): Clarify directories are not spell checked</li>
<li><a
href="eaf25df994"><code>eaf25df</code></a>
docs(ref): Speak to locale's behavior</li>
<li><a
href="a9735e2e14"><code>a9735e2</code></a>
docs(ref): Provide identifier/word config examples</li>
<li><a
href="3c14191fcc"><code>3c14191</code></a>
docs(ref): Talk about include lists</li>
<li><a
href="d0f81dc972"><code>d0f81dc</code></a>
docs(ref): Re-organize help more like cargo</li>
<li>Additional commits viewable in <a
href="7436548694...80c8a4945e">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.37.2&new-version=1.38.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-10-14 07:38:08 +03:00
dependabot[bot]
89a9fa1cfd build(deps): bump taiki-e/install-action from 2.62.21 to 2.62.28 (#2132)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.21 to 2.62.28.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.28</h2>
<ul>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.148.</p>
</li>
<li>
<p>Update <code>cargo-sort@latest</code> to 2.0.2.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.7.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.2.</p>
</li>
<li>
<p>Update <code>sccache@latest</code> to 0.11.0.</p>
</li>
</ul>
<h2>2.62.27</h2>
<ul>
<li>Update <code>cargo-llvm-cov@latest</code> to 0.6.21.</li>
</ul>
<h2>2.62.26</h2>
<ul>
<li>
<p>Update <code>trivy@latest</code> to 0.67.2.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.4.1.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.7.</p>
</li>
</ul>
<h2>2.62.25</h2>
<ul>
<li>
<p>Update <code>uv@latest</code> to 0.9.1.</p>
</li>
<li>
<p>Update <code>trivy@latest</code> to 0.67.1.</p>
</li>
<li>
<p>Update <code>cargo-valgrind@latest</code> to 2.3.3.</p>
</li>
</ul>
<h2>2.62.24</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.6.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.0.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.38.1.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 37.0.2.</p>
</li>
<li>
<p>Update <code>cargo-dinghy@latest</code> to 0.8.2.</p>
</li>
</ul>
<h2>2.62.23</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.5.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.8.24.</p>
</li>
</ul>
<h2>2.62.22</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.38.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.4.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>Update <code>ubi@latest</code> to 0.8.1.</li>
</ul>
<h2>[2.62.28] - 2025-10-11</h2>
<ul>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.148.</p>
</li>
<li>
<p>Update <code>cargo-sort@latest</code> to 2.0.2.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.7.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.9.2.</p>
</li>
<li>
<p>Update <code>sccache@latest</code> to 0.11.0.</p>
</li>
</ul>
<h2>[2.62.27] - 2025-10-10</h2>
<ul>
<li>Update <code>cargo-llvm-cov@latest</code> to 0.6.21.</li>
</ul>
<h2>[2.62.26] - 2025-10-10</h2>
<ul>
<li>
<p>Update <code>trivy@latest</code> to 0.67.2.</p>
</li>
<li>
<p>Update <code>editorconfig-checker@latest</code> to 3.4.1.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.10.7.</p>
</li>
</ul>
<h2>[2.62.25] - 2025-10-10</h2>
<ul>
<li>
<p>Update <code>uv@latest</code> to 0.9.1.</p>
</li>
<li>
<p>Update <code>trivy@latest</code> to 0.67.1.</p>
</li>
<li>
<p>Update <code>cargo-valgrind@latest</code> to 2.3.3.</p>
</li>
</ul>
<h2>[2.62.24] - 2025-10-08</h2>
<ul>
<li>Update <code>mise@latest</code> to 2025.10.6.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e7ef886cf8"><code>e7ef886</code></a>
Release 2.62.28</li>
<li><a
href="c493876e9d"><code>c493876</code></a>
Update cargo-sort manifest</li>
<li><a
href="acf024d407"><code>acf024d</code></a>
ci: Mark cargo-sort as glibc_pre_2_34_incompat</li>
<li><a
href="ec66e446df"><code>ec66e44</code></a>
Update <code>release-plz@latest</code> to 0.3.148</li>
<li><a
href="a9a6260eac"><code>a9a6260</code></a>
Update <code>cargo-sort@latest</code> to 2.0.2</li>
<li><a
href="3c80d80324"><code>3c80d80</code></a>
Update <code>cargo-binstall@latest</code> to 1.15.7</li>
<li><a
href="4830d35beb"><code>4830d35</code></a>
codegen: Allow lacking x86_64_macos when aarch64_macos is available</li>
<li><a
href="3c7706401f"><code>3c77064</code></a>
ci: Test macos-15-intel</li>
<li><a
href="7d66b55c1c"><code>7d66b55</code></a>
Update <code>uv@latest</code> to 0.9.2</li>
<li><a
href="bf8fb45a9e"><code>bf8fb45</code></a>
Update <code>sccache@latest</code> to 0.11.0</li>
<li>Additional commits viewable in <a
href="522492a8c1...e7ef886cf8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.21&new-version=2.62.28)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 07:37:21 +03:00
dependabot[bot]
b176d04e59 build(deps): bump release-plz/action from 0.5.117 to 0.5.118 (#2133)
Bumps [release-plz/action](https://github.com/release-plz/action) from
0.5.117 to 0.5.118.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-plz/action/releases">release-plz/action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.118</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.148 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/224">release-plz/action#224</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.118">https://github.com/release-plz/action/compare/v0.5...v0.5.118</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d529f731ae"><code>d529f73</code></a>
Update to 0.3.148 (<a
href="https://redirect.github.com/release-plz/action/issues/224">#224</a>)</li>
<li>See full diff in <a
href="acb9246af4...d529f731ae">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-plz/action&package-manager=github_actions&previous-version=0.5.117&new-version=0.5.118)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 07:36:44 +03:00
Orhun Parmaksız
8e5151f83d docs(rect): fix typo in the Rect::outer function comments (#2123) 2025-10-07 10:49:57 +03:00
Jagoda Estera Ślązak
f8b0594363 docs: fix typos (#2129)
This fixes the pipeline after bumping typos.
2025-10-07 10:12:26 +03:00
dependabot[bot]
f764546ece build(deps): bump serde_json from 1.0.143 to 1.0.145 (#2125)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.143 to
1.0.145.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.145</h2>
<ul>
<li>Raise serde version requirement to &gt;=1.0.220</li>
</ul>
<h2>v1.0.144</h2>
<ul>
<li>Switch serde dependency to serde_core (<a
href="https://redirect.github.com/serde-rs/json/issues/1285">#1285</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="efa66e3a1d"><code>efa66e3</code></a>
Release 1.0.145</li>
<li><a
href="23679e2b9d"><code>23679e2</code></a>
Add serde version constraint</li>
<li><a
href="fc27bafbf7"><code>fc27baf</code></a>
Release 1.0.144</li>
<li><a
href="caef3c6ea6"><code>caef3c6</code></a>
Ignore uninlined_format_args pedantic clippy lint</li>
<li><a
href="81ba3aaaff"><code>81ba3aa</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1285">#1285</a>
from dtolnay/serdecore</li>
<li><a
href="d21e8ce7a7"><code>d21e8ce</code></a>
Switch serde dependency to serde_core</li>
<li><a
href="6beb6cd596"><code>6beb6cd</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1286">#1286</a>
from dtolnay/up</li>
<li><a
href="1dbc803749"><code>1dbc803</code></a>
Raise required compiler to Rust 1.61</li>
<li><a
href="0bf5d87003"><code>0bf5d87</code></a>
Enforce trybuild &gt;= 1.0.108</li>
<li><a
href="d12e943590"><code>d12e943</code></a>
Update actions/checkout@v4 -&gt; v5</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.143...v1.0.145">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.143&new-version=1.0.145)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 19:55:32 +03:00
dependabot[bot]
281459aeae build(deps): bump anstyle from 1.0.12 to 1.0.13 (#2126)
Bumps [anstyle](https://github.com/rust-cli/anstyle) from 1.0.12 to
1.0.13.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="14dd743496"><code>14dd743</code></a>
chore: Release</li>
<li><a
href="2baaec7772"><code>2baaec7</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/271">#271</a>
from epage/template</li>
<li><a
href="5d7026ccf0"><code>5d7026c</code></a>
chore: Update from _rust template</li>
<li><a
href="f218f4ae7a"><code>f218f4a</code></a>
docs(docsrs): Update to new doc_cfg feature name</li>
<li><a
href="676066ac62"><code>676066a</code></a>
chore(deps): Update Rust Stable to v1.90 (<a
href="https://redirect.github.com/rust-cli/anstyle/issues/30">#30</a>)</li>
<li><a
href="3bfcdc25c2"><code>3bfcdc2</code></a>
chore: Add license for libfuzzer</li>
<li><a
href="5afd57342b"><code>5afd573</code></a>
chore(ci): Fix env variable syntax</li>
<li><a
href="addd8718e9"><code>addd871</code></a>
chore(ci): Reduce cached content</li>
<li><a
href="a6942ae749"><code>a6942ae</code></a>
docs: Switch links to https</li>
<li><a
href="5fb0a8e7f3"><code>5fb0a8e</code></a>
chore(deps): Update Rust Stable to v1.89 (<a
href="https://redirect.github.com/rust-cli/anstyle/issues/29">#29</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-cli/anstyle/compare/v1.0.12...v1.0.13">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anstyle&package-manager=cargo&previous-version=1.0.12&new-version=1.0.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 19:55:10 +03:00
dependabot[bot]
0ef33d1318 build(deps): bump crate-ci/typos from 1.36.3 to 1.37.2 (#2127)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.36.3 to
1.37.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.37.2</h2>
<h2>[1.37.2] - 2025-10-03</h2>
<h3>Fixes</h3>
<ul>
<li>Don't suggest <code>diagnostic</code> for <code>diagnotics</code>,
preferring <code>diagnostics</code></li>
</ul>
<h2>v1.37.1</h2>
<h2>[1.37.1] - 2025-10-01</h2>
<h3>Fixes</h3>
<ul>
<li>Don't offer corrections to <code>&quot;&quot;</code></li>
</ul>
<h2>v1.37.0</h2>
<h2>[1.37.0] - 2025-09-30</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1370">September
2025</a> changes</li>
<li>Pull in other dictionary updates</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.37.2] - 2025-10-03</h2>
<h3>Fixes</h3>
<ul>
<li>Don't suggest <code>diagnostic</code> for <code>diagnotics</code>,
preferring <code>diagnostics</code></li>
</ul>
<h2>[1.37.1] - 2025-10-01</h2>
<h3>Fixes</h3>
<ul>
<li>Don't offer corrections to <code>&quot;&quot;</code></li>
</ul>
<h2>[1.37.0] - 2025-09-30</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1370">September
2025</a> changes</li>
<li>Pull in other dictionary updates</li>
</ul>
<h2>[1.36.3] - 2025-09-25</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>analysises</code></li>
</ul>
<h2>[1.36.2] - 2025-09-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix regression from 1.36.1 when rendering an error for a line with
invalid UTF-8</li>
</ul>
<h2>[1.36.1] - 2025-09-03</h2>
<h3>Fixes</h3>
<ul>
<li>Replaced the error rendering for various quality of life
improvements</li>
</ul>
<h2>[1.36.0] - 2025-09-02</h2>
<h3>Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7436548694"><code>7436548</code></a>
chore: Release</li>
<li><a
href="1823e2b025"><code>1823e2b</code></a>
docs: Update changelog</li>
<li><a
href="f0ee432398"><code>f0ee432</code></a>
chore: Release</li>
<li><a
href="c29d486d28"><code>c29d486</code></a>
chore: Release</li>
<li><a
href="38f26066b2"><code>38f2606</code></a>
chore: Release</li>
<li><a
href="e8116273bc"><code>e811627</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1391">#1391</a>
from epage/corrections</li>
<li><a
href="89bd858038"><code>89bd858</code></a>
fix(dict): Remove correction to focus on nearest option</li>
<li><a
href="ac57a77c74"><code>ac57a77</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1390">#1390</a>
from epage/update</li>
<li><a
href="5f38952876"><code>5f38952</code></a>
style: Make clippy happy</li>
<li><a
href="17f77b960b"><code>17f77b9</code></a>
chore: Update dependencies</li>
<li>Additional commits viewable in <a
href="0c17dabcee...7436548694">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.36.3&new-version=1.37.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 19:54:32 +03:00
dependabot[bot]
928ddee9f1 build(deps): bump taiki-e/install-action from 2.62.13 to 2.62.21 (#2128)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.13 to 2.62.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.21</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.3.</p>
</li>
<li>
<p>Update <code>cargo-tarpaulin@latest</code> to 0.33.0.</p>
</li>
</ul>
<h2>2.62.20</h2>
<ul>
<li>Update <code>uv@latest</code> to 0.8.23.</li>
</ul>
<h2>2.62.19</h2>
<ul>
<li>Update <code>cargo-llvm-cov@latest</code> to 0.6.20.</li>
</ul>
<h2>2.62.18</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.2.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.37.2.</p>
</li>
</ul>
<h2>2.62.17</h2>
<ul>
<li>Update <code>cargo-nextest@latest</code> to 0.9.105.</li>
</ul>
<h2>2.62.16</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.0.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.37.1.</p>
</li>
</ul>
<h2>2.62.15</h2>
<ul>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.2.3.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.37.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.25.</p>
</li>
</ul>
<h2>2.62.14</h2>
<ul>
<li>
<p>Update <code>trivy@latest</code> to 0.67.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.24.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.62.21] - 2025-10-06</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.3.</p>
</li>
<li>
<p>Update <code>cargo-tarpaulin@latest</code> to 0.33.0.</p>
</li>
</ul>
<h2>[2.62.20] - 2025-10-05</h2>
<ul>
<li>Update <code>uv@latest</code> to 0.8.23.</li>
</ul>
<h2>[2.62.19] - 2025-10-04</h2>
<ul>
<li>Update <code>cargo-llvm-cov@latest</code> to 0.6.20.</li>
</ul>
<h2>[2.62.18] - 2025-10-04</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.2.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.37.2.</p>
</li>
</ul>
<h2>[2.62.17] - 2025-10-03</h2>
<ul>
<li>Update <code>cargo-nextest@latest</code> to 0.9.105.</li>
</ul>
<h2>[2.62.16] - 2025-10-02</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.10.0.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.37.1.</p>
</li>
</ul>
<h2>[2.62.15] - 2025-10-01</h2>
<ul>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.2.3.</p>
</li>
<li>
<p>Update <code>typos@latest</code> to 1.37.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.25.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="522492a8c1"><code>522492a</code></a>
Release 2.62.21</li>
<li><a
href="3a71859bab"><code>3a71859</code></a>
Update <code>mise@latest</code> to 2025.10.3</li>
<li><a
href="8df25fe764"><code>8df25fe</code></a>
Update <code>cargo-tarpaulin@latest</code> to 0.33.0</li>
<li><a
href="f355b1dcaf"><code>f355b1d</code></a>
Release 2.62.20</li>
<li><a
href="d839a0e7f9"><code>d839a0e</code></a>
Update <code>uv@latest</code> to 0.8.23</li>
<li><a
href="9f532f95f2"><code>9f532f9</code></a>
Release 2.62.19</li>
<li><a
href="279b968aa6"><code>279b968</code></a>
Update <code>cargo-llvm-cov@latest</code> to 0.6.20</li>
<li><a
href="e825cea3ae"><code>e825cea</code></a>
Release 2.62.18</li>
<li><a
href="0204df0e22"><code>0204df0</code></a>
Update changelog</li>
<li><a
href="5767aec4bd"><code>5767aec</code></a>
Update <code>mise@latest</code> to 2025.10.2</li>
<li>Additional commits viewable in <a
href="d0f4f69b07...522492a8c1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.13&new-version=2.62.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 19:49:23 +03:00
Orhun Parmaksız
297d264c6b chore: update maintainers (#2122) 2025-10-05 12:07:06 -07:00
Marco Ieni
2b0a044ced fix(ci): add contents write permission to release-plz PR (#2119)
https://release-plz.dev/docs/github/quickstart#3-setup-the-workflow

Fixes https://github.com/release-plz/release-plz/issues/2439
2025-10-01 12:43:59 -07:00
Orhun Parmaksız
cace1e099c revert(release): prepare for beta release (#2022) (#2117)
This reverts commit 5ae224b244 so that
`release-plz` is being triggered again.

See https://github.com/ratatui/ratatui/pull/2022#issuecomment-3349094310
for rationale.

<!-- Please read CONTRIBUTING.md before submitting any pull request. -->
2025-10-01 10:51:06 +03:00
Orhun Parmaksız
200b217722 docs(examples): add VHS tapes and docs for widget examples (#2114)
fixes #1982

Later on I'll figure out an easy way to regenerate this in the CI and
possibly do the same for the app examples' VHS tapes. That's why I
haven't added a script or mentioned anything in the docs yet (hint:
#1721)

---------

Co-authored-by: Jagoda Estera Ślązak <128227338+j-g00da@users.noreply.github.com>
2025-09-30 22:22:30 +03:00
dependabot[bot]
849f4badbf build(deps): bump crate-ci/typos from 1.36.2 to 1.36.3 (#2115)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.36.2 to
1.36.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.36.3</h2>
<h2>[1.36.3] - 2025-09-25</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>analysises</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.36.3] - 2025-09-25</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>analysises</code></li>
</ul>
<h2>[1.36.2] - 2025-09-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix regression from 1.36.1 when rendering an error for a line with
invalid UTF-8</li>
</ul>
<h2>[1.36.1] - 2025-09-03</h2>
<h3>Fixes</h3>
<ul>
<li>Replaced the error rendering for various quality of life
improvements</li>
</ul>
<h2>[1.36.0] - 2025-09-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1345">August
2025</a> changes</li>
</ul>
<h2>[1.35.8] - 2025-09-02</h2>
<h2>[1.35.7] - 2025-08-29</h2>
<h3>Documentation</h3>
<ul>
<li>Expand PyPI metadata</li>
</ul>
<h2>[1.35.6] - 2025-08-28</h2>
<h3>Fixes</h3>
<ul>
<li>Track <code>go.mod</code> as a golang file (regression from
1.13.21)</li>
</ul>
<h2>[1.35.5] - 2025-08-18</h2>
<h3>Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0c17dabcee"><code>0c17dab</code></a>
chore: Release</li>
<li><a
href="d4a3b7b012"><code>d4a3b7b</code></a>
docs: Update changelog</li>
<li><a
href="8feb042263"><code>8feb042</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1379">#1379</a>
from epage/dict</li>
<li><a
href="6995b89f82"><code>6995b89</code></a>
fix(dict): Don't correct too analysises</li>
<li><a
href="87d09ddc37"><code>87d09dd</code></a>
fix(codespell): Update to 2f3751e</li>
<li><a
href="5e1db27ee9"><code>5e1db27</code></a>
docs(readme): Specify --locked</li>
<li><a
href="2abc5d928a"><code>2abc5d9</code></a>
chore(deps): Update Rust Stable to v1.90 (<a
href="https://redirect.github.com/crate-ci/typos/issues/1375">#1375</a>)</li>
<li>See full diff in <a
href="85f62a8a84...0c17dabcee">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.36.2&new-version=1.36.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 22:22:28 -07:00
Blaeriz
9a930a6e99 docs(terminal): Made usage of Terminal::get_frame() clearer (#2071)
Closes : https://github.com/ratatui/ratatui/issues/1200

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-09-30 07:30:42 +03:00
dependabot[bot]
08afbeef39 build(deps): bump anstyle from 1.0.11 to 1.0.12 (#2112)
Bumps [anstyle](https://github.com/rust-cli/anstyle) from 1.0.11 to
1.0.12.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2a2bebb199"><code>2a2bebb</code></a>
chore: Release</li>
<li><a
href="98b79906a3"><code>98b7990</code></a>
docs: Update changelog</li>
<li><a
href="f28db2de10"><code>f28db2d</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/269">#269</a>
from Muscraft/no-leading-zero</li>
<li><a
href="20258de73f"><code>20258de</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/270">#270</a>
from Muscraft/coverage-rustfmt</li>
<li><a
href="b8a3a15f0b"><code>b8a3a15</code></a>
fix: Ensuse rustfmt is installed for coverage</li>
<li><a
href="ba45662034"><code>ba45662</code></a>
fix: Don't add leading zero to single digit ansi 256</li>
<li><a
href="82b1c6c433"><code>82b1c6c</code></a>
test: Add a test for leading zeros</li>
<li><a
href="d6c494232b"><code>d6c4942</code></a>
chore(deps): Update Rust Stable to v1.90 (<a
href="https://redirect.github.com/rust-cli/anstyle/issues/268">#268</a>)</li>
<li><a
href="d90a7bcb14"><code>d90a7bc</code></a>
style: Fix rustc warning</li>
<li><a
href="942f283356"><code>942f283</code></a>
chore: Release</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-cli/anstyle/compare/v1.0.11...v1.0.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anstyle&package-manager=cargo&previous-version=1.0.11&new-version=1.0.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-09-30 07:29:51 +03:00
dependabot[bot]
424fcbf679 build(deps): bump line-clipping from 0.3.3 to 0.3.4 (#2111)
Bumps [line-clipping](https://github.com/joshka/line-clipping) from
0.3.3 to 0.3.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/joshka/line-clipping/releases">line-clipping's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.4</h2>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/17">#17</a>)</li>
<li><em>(deps)</em> bump actions/checkout in the github-actions group
(<a
href="https://redirect.github.com/joshka/line-clipping/pull/16">#16</a>)</li>
<li><em>(deps)</em> bump rstest in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/14">#14</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/joshka/line-clipping/blob/main/CHANGELOG.md">line-clipping's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/joshka/line-clipping/compare/v0.3.3...v0.3.4">0.3.4</a>
- 2025-09-28</h2>
<h3>Other</h3>
<ul>
<li><em>(deps)</em> bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/17">#17</a>)</li>
<li><em>(deps)</em> bump actions/checkout in the github-actions group
(<a
href="https://redirect.github.com/joshka/line-clipping/pull/16">#16</a>)</li>
<li><em>(deps)</em> bump rstest in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/pull/14">#14</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5394ebf7b1"><code>5394ebf</code></a>
chore: release v0.3.4 (<a
href="https://redirect.github.com/joshka/line-clipping/issues/15">#15</a>)</li>
<li><a
href="f30cb0c44f"><code>f30cb0c</code></a>
build(deps): bump bitflags in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/issues/17">#17</a>)</li>
<li><a
href="c403f01190"><code>c403f01</code></a>
build(deps): bump actions/checkout in the github-actions group (<a
href="https://redirect.github.com/joshka/line-clipping/issues/16">#16</a>)</li>
<li><a
href="ce1e44f28a"><code>ce1e44f</code></a>
build(deps): bump rstest in the rust-dependencies group (<a
href="https://redirect.github.com/joshka/line-clipping/issues/14">#14</a>)</li>
<li>See full diff in <a
href="https://github.com/joshka/line-clipping/compare/v0.3.3...v0.3.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=line-clipping&package-manager=cargo&previous-version=0.3.3&new-version=0.3.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-09-30 07:27:44 +03:00
dependabot[bot]
442fb54ace build(deps): bump lru from 0.16.0 to 0.16.1 (#2109)
Bumps [lru](https://github.com/jeromefroe/lru-rs) from 0.16.0 to 0.16.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jeromefroe/lru-rs/blob/master/CHANGELOG.md">lru's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/jeromefroe/lru-rs/tree/0.16.1">v0.16.1</a> -
2025-09-08</h2>
<ul>
<li>Fix <code>Clone</code> for unbounded cache.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c699209232"><code>c699209</code></a>
Merge pull request <a
href="https://redirect.github.com/jeromefroe/lru-rs/issues/220">#220</a>
from jeromefroe/jerome/prepare-0-16-1-release</li>
<li><a
href="2bd8207030"><code>2bd8207</code></a>
Prepare 0.16.1 release</li>
<li><a
href="1b21bf1c59"><code>1b21bf1</code></a>
Merge pull request <a
href="https://redirect.github.com/jeromefroe/lru-rs/issues/219">#219</a>
from wqfish/bk</li>
<li><a
href="3ec42b6369"><code>3ec42b6</code></a>
Fix clone implementation for unbounded cache</li>
<li>See full diff in <a
href="https://github.com/jeromefroe/lru-rs/compare/0.16.0...0.16.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lru&package-manager=cargo&previous-version=0.16.0&new-version=0.16.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-30 07:23:10 +03:00
dependabot[bot]
6fb2ec1753 build(deps): bump thiserror from 2.0.16 to 2.0.17 (#2110)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.16 to
2.0.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/thiserror/releases">thiserror's
releases</a>.</em></p>
<blockquote>
<h2>2.0.17</h2>
<ul>
<li>Use differently named __private module per patch release (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/434">#434</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="72ae716e6d"><code>72ae716</code></a>
Release 2.0.17</li>
<li><a
href="599fdce83a"><code>599fdce</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/434">#434</a>
from dtolnay/private</li>
<li><a
href="9ec05f6b38"><code>9ec05f6</code></a>
Use differently named __private module per patch release</li>
<li><a
href="d2c492b549"><code>d2c492b</code></a>
Raise minimum tested compiler to rust 1.76</li>
<li><a
href="fc3ab9501d"><code>fc3ab95</code></a>
Opt in to generate-macro-expansion when building on docs.rs</li>
<li><a
href="819fe29dbb"><code>819fe29</code></a>
Update ui test suite to nightly-2025-09-12</li>
<li><a
href="259f48c549"><code>259f48c</code></a>
Enforce trybuild &gt;= 1.0.108</li>
<li><a
href="470e6a681c"><code>470e6a6</code></a>
Update ui test suite to nightly-2025-08-24</li>
<li><a
href="544e191e6e"><code>544e191</code></a>
Update actions/checkout@v4 -&gt; v5</li>
<li><a
href="cbc1ebad3e"><code>cbc1eba</code></a>
Delete duplicate cap-lints flag from build script</li>
<li>See full diff in <a
href="https://github.com/dtolnay/thiserror/compare/2.0.16...2.0.17">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thiserror&package-manager=cargo&previous-version=2.0.16&new-version=2.0.17)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-30 07:22:52 +03:00
dependabot[bot]
8a5fbd3c58 build(deps): bump serde from 1.0.219 to 1.0.228 (#2113)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.219 to
1.0.228.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.228</h2>
<ul>
<li>Allow building documentation with
<code>RUSTDOCFLAGS='--cfg=docsrs'</code> set for the whole dependency
graph (<a
href="https://redirect.github.com/serde-rs/serde/issues/2995">#2995</a>)</li>
</ul>
<h2>v1.0.227</h2>
<ul>
<li>Documentation improvements (<a
href="https://redirect.github.com/serde-rs/serde/issues/2991">#2991</a>)</li>
</ul>
<h2>v1.0.226</h2>
<ul>
<li>Deduplicate variant matching logic inside generated Deserialize impl
for adjacently tagged enums (<a
href="https://redirect.github.com/serde-rs/serde/issues/2935">#2935</a>,
thanks <a
href="https://github.com/Mingun"><code>@​Mingun</code></a>)</li>
</ul>
<h2>v1.0.225</h2>
<ul>
<li>Avoid triggering a deprecation warning in derived Serialize and
Deserialize impls for a data structure that contains its own
deprecations (<a
href="https://redirect.github.com/serde-rs/serde/issues/2879">#2879</a>,
thanks <a
href="https://github.com/rcrisanti"><code>@​rcrisanti</code></a>)</li>
</ul>
<h2>v1.0.224</h2>
<ul>
<li>Remove private types being suggested in rustc diagnostics (<a
href="https://redirect.github.com/serde-rs/serde/issues/2979">#2979</a>)</li>
</ul>
<h2>v1.0.223</h2>
<ul>
<li>Fix serde_core documentation links (<a
href="https://redirect.github.com/serde-rs/serde/issues/2978">#2978</a>)</li>
</ul>
<h2>v1.0.222</h2>
<ul>
<li>Make <code>serialize_with</code> attribute produce code that works
if respanned to 2024 edition (<a
href="https://redirect.github.com/serde-rs/serde/issues/2950">#2950</a>,
thanks <a href="https://github.com/aytey"><code>@​aytey</code></a>)</li>
</ul>
<h2>v1.0.221</h2>
<ul>
<li>Documentation improvements (<a
href="https://redirect.github.com/serde-rs/serde/issues/2973">#2973</a>)</li>
<li>Deprecate <code>serde_if_integer128!</code> macro (<a
href="https://redirect.github.com/serde-rs/serde/issues/2975">#2975</a>)</li>
</ul>
<h2>v1.0.220</h2>
<ul>
<li>Add a way for data formats to depend on serde traits without waiting
for serde_derive compilation: <a
href="https://docs.rs/serde_core">https://docs.rs/serde_core</a> (<a
href="https://redirect.github.com/serde-rs/serde/issues/2608">#2608</a>,
thanks <a
href="https://github.com/osiewicz"><code>@​osiewicz</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a866b336f1"><code>a866b33</code></a>
Release 1.0.228</li>
<li><a
href="5adc9e816c"><code>5adc9e8</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2995">#2995</a>
from dtolnay/rustdocflags</li>
<li><a
href="ab581789f4"><code>ab58178</code></a>
Workaround for RUSTDOCFLAGS='--cfg=docsrs'</li>
<li><a
href="415d9fc560"><code>415d9fc</code></a>
Release 1.0.227</li>
<li><a
href="7c58427e12"><code>7c58427</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2991">#2991</a>
from dtolnay/inlinecoredoc</li>
<li><a
href="9d3410e3f4"><code>9d3410e</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2992">#2992</a>
from dtolnay/inplaceseed</li>
<li><a
href="2fb6748bf1"><code>2fb6748</code></a>
Remove InPlaceSeed public re-export</li>
<li><a
href="f8137c79a2"><code>f8137c7</code></a>
Inline serde_core into serde in docsrs mode</li>
<li><a
href="b7dbf7e3cb"><code>b7dbf7e</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2990">#2990</a>
from dtolnay/integer128</li>
<li><a
href="7c836915fc"><code>7c83691</code></a>
No longer macro_use integer128 module</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/serde/compare/v1.0.219...v1.0.228">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.219&new-version=1.0.228)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-30 07:21:28 +03:00
Shingo OKAWA
887a6366e5 chore(ci): override RUSTUP_TOOLCHAIN for the check step (#2116)
Summary
Fixes an issue where the "check" CI jobs for MSRV and stable were
unintentionally using the stable toolchain from `rust-toolchain.toml`
instead of the matrix-specified toolchain.

Details
- Added `RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}` to the "check" job
in CI configuration.

Additional Context
- https://github.com/ratatui/ratatui/pull/2106
-
https://discord.com/channels/1070692720437383208/1072879985762762812/1422345357131780177
- https://rust-lang.github.io/rustup/overrides.html#overrides

Signed-off-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
2025-09-30 07:19:06 +03:00
dependabot[bot]
b2872fb53c build(deps): bump taiki-e/install-action from 2.62.6 to 2.62.13 (#2107)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.62.6 to 2.62.13.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.13</h2>
<ul>
<li>Update <code>zizmor@latest</code> to 1.14.2.</li>
</ul>
<h2>2.62.12</h2>
<ul>
<li>Update <code>mise@latest</code> to 2025.9.23.</li>
</ul>
<h2>2.62.11</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.21.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.43.0.</p>
</li>
</ul>
<h2>2.62.10</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.20.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.14.1.</p>
</li>
</ul>
<h2>2.62.9</h2>
<ul>
<li>
<p>Update <code>espup@latest</code> to 0.16.0.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.6.</p>
</li>
</ul>
<h2>2.62.8</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.36.3.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.19.</p>
</li>
</ul>
<h2>2.62.7</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.18.</p>
</li>
<li>
<p>Update <code>rclone@latest</code> to 1.71.1.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.62.13] - 2025-09-29</h2>
<ul>
<li>Update <code>zizmor@latest</code> to 1.14.2.</li>
</ul>
<h2>[2.62.12] - 2025-09-29</h2>
<ul>
<li>Update <code>mise@latest</code> to 2025.9.23.</li>
</ul>
<h2>[2.62.11] - 2025-09-28</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.21.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.43.0.</p>
</li>
</ul>
<h2>[2.62.10] - 2025-09-27</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.20.</p>
</li>
<li>
<p>Update <code>zizmor@latest</code> to 1.14.1.</p>
</li>
</ul>
<h2>[2.62.9] - 2025-09-26</h2>
<ul>
<li>
<p>Update <code>espup@latest</code> to 0.16.0.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.15.6.</p>
</li>
</ul>
<h2>[2.62.8] - 2025-09-26</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.36.3.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.19.</p>
</li>
</ul>
<h2>[2.62.7] - 2025-09-25</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.18.</p>
</li>
<li>
<p>Update <code>rclone@latest</code> to 1.71.1.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d0f4f69b07"><code>d0f4f69</code></a>
Release 2.62.13</li>
<li><a
href="79f2c3bc22"><code>79f2c3b</code></a>
Update <code>zizmor@latest</code> to 1.14.2</li>
<li><a
href="1eaae0c172"><code>1eaae0c</code></a>
Update .deny.toml</li>
<li><a
href="5ab30948b9"><code>5ab3094</code></a>
Release 2.62.12</li>
<li><a
href="d108ea068c"><code>d108ea0</code></a>
Update changelog</li>
<li><a
href="33fea01368"><code>33fea01</code></a>
Update <code>mise@latest</code> to 2025.9.23</li>
<li><a
href="9473c731b1"><code>9473c73</code></a>
Update <code>mise@latest</code> to 2025.9.22</li>
<li><a
href="efd8b64311"><code>efd8b64</code></a>
Release 2.62.11</li>
<li><a
href="83dbb79ca7"><code>83dbb79</code></a>
Update <code>mise@latest</code> to 2025.9.21</li>
<li><a
href="dfef5625a2"><code>dfef562</code></a>
Update <code>just@latest</code> to 1.43.0</li>
<li>Additional commits viewable in <a
href="4575ae687e...d0f4f69b07">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.62.6&new-version=2.62.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 20:25:16 +03:00
dependabot[bot]
837af96e98 build(deps): bump Swatinem/rust-cache from 2.8.0 to 2.8.1 (#2108)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from
2.8.0 to 2.8.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/swatinem/rust-cache/releases">Swatinem/rust-cache's
releases</a>.</em></p>
<blockquote>
<h2>v2.8.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Set empty <code>CARGO_ENCODED_RUSTFLAGS</code> in workspace metadata
retrieval by <a href="https://github.com/ark0f"><code>@​ark0f</code></a>
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/249">Swatinem/rust-cache#249</a></li>
<li>chore(deps): update dependencies by <a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/251">Swatinem/rust-cache#251</a></li>
<li>chore: fix dependabot groups by <a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/253">Swatinem/rust-cache#253</a></li>
<li>Bump the prd-patch group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/254">Swatinem/rust-cache#254</a></li>
<li>chore(dependabot): regenerate and commit dist/ by <a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/257">Swatinem/rust-cache#257</a></li>
<li>Bump <code>@​types/node</code> from 22.16.3 to 24.2.1 in the
dev-major group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/255">Swatinem/rust-cache#255</a></li>
<li>Bump typescript from 5.8.3 to 5.9.2 in the dev-minor group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/256">Swatinem/rust-cache#256</a></li>
<li>Bump actions/setup-node from 4 to 5 in the actions group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/259">Swatinem/rust-cache#259</a></li>
<li>Update README.md by <a
href="https://github.com/Propfend"><code>@​Propfend</code></a> in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/234">Swatinem/rust-cache#234</a></li>
<li>Bump <code>@​types/node</code> from 24.2.1 to 24.3.0 in the
dev-minor group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/258">Swatinem/rust-cache#258</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/ark0f"><code>@​ark0f</code></a> made
their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/249">Swatinem/rust-cache#249</a></li>
<li><a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/251">Swatinem/rust-cache#251</a></li>
<li><a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/254">Swatinem/rust-cache#254</a></li>
<li><a href="https://github.com/Propfend"><code>@​Propfend</code></a>
made their first contribution in <a
href="https://redirect.github.com/Swatinem/rust-cache/pull/234">Swatinem/rust-cache#234</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Swatinem/rust-cache/compare/v2...v2.8.1">https://github.com/Swatinem/rust-cache/compare/v2...v2.8.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>2.8.1</h2>
<ul>
<li>Set empty <code>CARGO_ENCODED_RUSTFLAGS</code> when retrieving
metadata</li>
<li>Various dependency updates</li>
</ul>
<h2>2.8.0</h2>
<ul>
<li>Add support for <code>warpbuild</code> cache provider</li>
<li>Add new <code>cache-workspace-crates</code> feature</li>
</ul>
<h2>2.7.8</h2>
<ul>
<li>Include CPU arch in the cache key</li>
</ul>
<h2>2.7.7</h2>
<ul>
<li>Also cache <code>cargo install</code> metadata</li>
</ul>
<h2>2.7.6</h2>
<ul>
<li>Allow opting out of caching $CARGO_HOME/bin</li>
<li>Add runner OS in cache key</li>
<li>Adds an option to do lookup-only of the cache</li>
</ul>
<h2>2.7.5</h2>
<ul>
<li>Support Cargo.lock format cargo-lock v4</li>
<li>Only run macOsWorkaround() on macOS</li>
</ul>
<h2>2.7.3</h2>
<ul>
<li>Work around upstream problem that causes cache saving to hang for
minutes.</li>
</ul>
<h2>2.7.2</h2>
<ul>
<li>Only key by <code>Cargo.toml</code> and <code>Cargo.lock</code>
files of workspace members.</li>
</ul>
<h2>2.7.1</h2>
<ul>
<li>Update toml parser to fix parsing errors.</li>
</ul>
<h2>2.7.0</h2>
<ul>
<li>Properly cache <code>trybuild</code> tests.</li>
</ul>
<h2>2.6.2</h2>
<ul>
<li>Fix <code>toml</code> parsing.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f13886b937"><code>f13886b</code></a>
2.8.1</li>
<li><a
href="5abb1e2a95"><code>5abb1e2</code></a>
update dependencies, prepare for release</li>
<li><a
href="3c68c31fe5"><code>3c68c31</code></a>
Bump <code>@​types/node</code> from 24.2.1 to 24.3.0 in the dev-minor
group (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/258">#258</a>)</li>
<li><a
href="5467cca14c"><code>5467cca</code></a>
Update README.md (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/234">#234</a>)</li>
<li><a
href="94b28bf00e"><code>94b28bf</code></a>
Bump actions/setup-node from 4 to 5 in the actions group (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/259">#259</a>)</li>
<li><a
href="cb8ffc21fa"><code>cb8ffc2</code></a>
Bump typescript from 5.8.3 to 5.9.2 in the dev-minor group (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/256">#256</a>)</li>
<li><a
href="c4f0bbdf58"><code>c4f0bbd</code></a>
Bump <code>@​types/node</code> from 22.16.3 to 24.2.1 in the dev-major
group (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/255">#255</a>)</li>
<li><a
href="d8c5063361"><code>d8c5063</code></a>
chore(dependabot): regenerate and commit dist/ (<a
href="https://redirect.github.com/swatinem/rust-cache/issues/257">#257</a>)</li>
<li><a
href="267a8a94c9"><code>267a8a9</code></a>
Merge pull request <a
href="https://redirect.github.com/swatinem/rust-cache/issues/254">#254</a>
from Swatinem/dependabot/npm_and_yarn/prd-patch-d0e2e...</li>
<li><a
href="46cb408fba"><code>46cb408</code></a>
Bump the prd-patch group with 2 updates</li>
<li>Additional commits viewable in <a
href="98c8021b55...f13886b937">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Swatinem/rust-cache&package-manager=github_actions&previous-version=2.8.0&new-version=2.8.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 20:21:10 +03:00
Shingo OKAWA
34baaf1137 chore(ci): override the toolchain for CI runs (#2106)
### Summary
Fixes an issue where the beta CI jobs were unintentionally using the
stable
toolchain from `rust-toolchain.toml` instead of the matrix-specified
toolchain.
This caused clippy to run against the wrong version.

### Details
- Added `RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}` to the CI
configuration

### Additional Context
-
https://discord.com/channels/1070692720437383208/1072879985762762812/1421990770482745415
- https://rust-lang.github.io/rustup/overrides.html#overrides

Signed-off-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
2025-09-29 12:10:48 +03:00
Josh McKinney
ac60de3960 style: fix wrapping in doc comment (#2104) 2025-09-28 11:35:25 +03:00
Shingo OKAWA
91fa249cd4 chore: remove obsolete doc_auto_cfg feature (#2103)
The doc_auto_cfg feature was incorporated into the doc_cfg feature
in https://github.com/rust-lang/rust/pull/138907

Closes #2102

Signed-off-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
2025-09-28 00:38:45 -07:00
Shingo OKAWA
73488abb45 docs(contributing): fix link to widgets_block_renders test (#2101)
The `CONTRIBUTING.md` referenced `tests/widgets_block.rs`, but the
correct path is `ratatui/tests/widgets_block.rs`. Updated the link so
that readers can navigate to the test example without 404 error.

---------

Signed-off-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
2025-09-27 10:07:07 +03:00
eqsdxr
40f13c6a6c docs(rect): update the outdated comment for Rect::area() (#2100)
The return value of Rect.area() is no longer of u16 type, and the value
is not being clumped anymore.
2025-09-25 22:35:05 +03:00
Jeremy Rose
a89d3d62ff fix(buffer): clear behavior with VS16 wide emojis (#2063)
This fixes a bug where certain emojis like ⌨️ would sometimes be
"overlaid" onto existing content from the buffer, instead of properly
clearing.

[example demonstrating
bug](https://gist.github.com/nornagon/11a79d7a1f2e98aa129fedb4abccc530)

This PR was generated by Codex, and validated by me:
1. Behavior of the above example code was buggy before this fix (showed
overlaying "b" on top of the keyboard emoji), and fixed after.
2. The U+FE0F check is not strictly required, but I did note that emoji
without this char don't exhibit the buggy behavior, even without the
fix.

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-09-25 00:27:10 +03:00
dependabot[bot]
42a4e9e9af build(deps): bump bnjbvr/cargo-machete from 0.8.0 to 0.9.1 (#2059)
Bumps [bnjbvr/cargo-machete](https://github.com/bnjbvr/cargo-machete)
from 0.8.0 to 0.9.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bnjbvr/cargo-machete/releases">bnjbvr/cargo-machete's
releases</a>.</em></p>
<blockquote>
<h2>v0.9.1</h2>
<p>Hotfix for the Github Action, no other changes in behavior since
v0.9.0.</p>
<h2>v0.9.0</h2>
<h2>Shiny new things</h2>
<ul>
<li>Add pre-commit hook by <a
href="https://github.com/jpmelos"><code>@​jpmelos</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/164">bnjbvr/cargo-machete#164</a></li>
<li>Handle multiple dependency tables and dependency delimiters by <a
href="https://github.com/mkatychev"><code>@​mkatychev</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/112">bnjbvr/cargo-machete#112</a></li>
<li>feat(<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/152">#152</a>):
add renamed configuration field by <a
href="https://github.com/jalil-salame"><code>@​jalil-salame</code></a>
in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/153">bnjbvr/cargo-machete#153</a></li>
<li>chore(ci): add aarch64 linux by <a
href="https://github.com/jarjk"><code>@​jarjk</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/179">bnjbvr/cargo-machete#179</a></li>
<li>feat: improve Dockerfile by <a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/174">bnjbvr/cargo-machete#174</a></li>
</ul>
<h2>Internal changes / refactorinsg</h2>
<ul>
<li>Add a release process by <a
href="https://github.com/bnjbvr"><code>@​bnjbvr</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/157">bnjbvr/cargo-machete#157</a></li>
<li>refactor: use ?-operator to simplify some and_then chains by <a
href="https://github.com/bnjbvr"><code>@​bnjbvr</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/166">bnjbvr/cargo-machete#166</a></li>
<li>Bump ring from 0.17.9 to 0.17.14 in
/integration-tests/renamed-dep-workspace by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/165">bnjbvr/cargo-machete#165</a></li>
<li>Bump ring from 0.17.8 to 0.17.14 in /integration-tests/renamed-dep
by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/167">bnjbvr/cargo-machete#167</a></li>
<li>doc: rename job name in example workflow by <a
href="https://github.com/kyu08"><code>@​kyu08</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/168">bnjbvr/cargo-machete#168</a></li>
<li>chore: update dependencies by <a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/177">bnjbvr/cargo-machete#177</a></li>
<li>Bump cargo_toml from 0.22.1 to 0.22.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/180">bnjbvr/cargo-machete#180</a></li>
<li>refactor: collect_paths by <a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/176">bnjbvr/cargo-machete#176</a></li>
<li>chore: add github sponsoring to FUNDING.yml by <a
href="https://github.com/bnjbvr"><code>@​bnjbvr</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/183">bnjbvr/cargo-machete#183</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jpmelos"><code>@​jpmelos</code></a> made
their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/164">bnjbvr/cargo-machete#164</a></li>
<li><a href="https://github.com/mkatychev"><code>@​mkatychev</code></a>
made their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/112">bnjbvr/cargo-machete#112</a></li>
<li><a
href="https://github.com/jalil-salame"><code>@​jalil-salame</code></a>
made their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/153">bnjbvr/cargo-machete#153</a></li>
<li><a href="https://github.com/kyu08"><code>@​kyu08</code></a> made
their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/168">bnjbvr/cargo-machete#168</a></li>
<li><a
href="https://github.com/reneleonhardt"><code>@​reneleonhardt</code></a>
made their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/177">bnjbvr/cargo-machete#177</a></li>
<li><a href="https://github.com/jarjk"><code>@​jarjk</code></a> made
their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/179">bnjbvr/cargo-machete#179</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bnjbvr/cargo-machete/compare/v0.8.0...v0.9.0">https://github.com/bnjbvr/cargo-machete/compare/v0.8.0...v0.9.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7959c84578"><code>7959c84</code></a>
chore: release v0.9.1</li>
<li><a
href="7e41788742"><code>7e41788</code></a>
fix(action): request to use the rust stable toolchain when
installing</li>
<li><a
href="ffca7bed89"><code>ffca7be</code></a>
chore: release 0.9.0</li>
<li><a
href="86e260dd1d"><code>86e260d</code></a>
chore: bump dependencies before the release</li>
<li><a
href="ddb305d9bc"><code>ddb305d</code></a>
chore: add github sponsoring to FUNDING.yml</li>
<li><a
href="373b106eaa"><code>373b106</code></a>
feat: improve Dockerfile</li>
<li><a
href="57a61aabbe"><code>57a61aa</code></a>
refactor: simplify <code>collect_path</code></li>
<li><a
href="73318504c4"><code>7331850</code></a>
chore(ci): add aarch64 linux (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/179">#179</a>)</li>
<li><a
href="c24779f18b"><code>c24779f</code></a>
Bump cargo_toml from 0.22.1 to 0.22.3</li>
<li><a
href="c725183eab"><code>c725183</code></a>
chore: update dependencies and set up automatic dependency updates</li>
<li>Additional commits viewable in <a
href="b54422fa33...7959c84578">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bnjbvr/cargo-machete&package-manager=github_actions&previous-version=0.8.0&new-version=0.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-25 00:25:50 +03:00
dependabot[bot]
74558dafae build(deps): bump amannn/action-semantic-pull-request from 5.5.3 to 6.1.1 (#2067)
Bumps
[amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request)
from 5.5.3 to 6.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/amannn/action-semantic-pull-request/releases">amannn/action-semantic-pull-request's
releases</a>.</em></p>
<blockquote>
<h2>v6.1.1</h2>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v6.1.0...v6.1.1">6.1.1</a>
(2025-08-22)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Parse <code>headerPatternCorrespondence</code> properly (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/295">#295</a>)
(<a
href="800da4c97f">800da4c</a>)</li>
</ul>
<h2>v6.1.0</h2>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v6.0.1...v6.1.0">6.1.0</a>
(2025-08-19)</h2>
<h3>Features</h3>
<ul>
<li>Support providing regexps for types (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/292">#292</a>)
(<a
href="a30288bf13">a30288b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Remove trailing whitespace from &quot;unknown release type&quot;
error message (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/291">#291</a>)
(<a
href="afa4edb1c4">afa4edb</a>)</li>
</ul>
<h2>v6.0.1</h2>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v6.0.0...v6.0.1">6.0.1</a>
(2025-08-13)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Actually execute action (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/289">#289</a>)
(<a
href="58e4ab40f5">58e4ab4</a>)</li>
</ul>
<h2>v6.0.0</h2>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v5.5.3...v6.0.0">6.0.0</a>
(2025-08-13)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>Upgrade action to use Node.js 24 and ESM (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/287">#287</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>Upgrade action to use Node.js 24 and ESM (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/287">#287</a>)
(<a
href="bc0c9a79ab">bc0c9a7</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md">amannn/action-semantic-pull-request's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v6.1.0...v6.1.1">6.1.1</a>
(2025-08-22)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Parse <code>headerPatternCorrespondence</code> properly (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/295">#295</a>)
(<a
href="800da4c97f">800da4c</a>)</li>
</ul>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v6.0.1...v6.1.0">6.1.0</a>
(2025-08-19)</h2>
<h3>Features</h3>
<ul>
<li>Support providing regexps for types (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/292">#292</a>)
(<a
href="a30288bf13">a30288b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Remove trailing whitespace from &quot;unknown release type&quot;
error message (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/291">#291</a>)
(<a
href="afa4edb1c4">afa4edb</a>)</li>
</ul>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v6.0.0...v6.0.1">6.0.1</a>
(2025-08-13)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Actually execute action (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/289">#289</a>)
(<a
href="58e4ab40f5">58e4ab4</a>)</li>
</ul>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v5.5.3...v6.0.0">6.0.0</a>
(2025-08-13)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>Upgrade action to use Node.js 24 and ESM (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/287">#287</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>Upgrade action to use Node.js 24 and ESM (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/287">#287</a>)
(<a
href="bc0c9a79ab">bc0c9a7</a>)</li>
</ul>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v5.5.2...v5.5.3">5.5.3</a>
(2024-06-28)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Bump <code>braces</code> dependency (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/269">#269</a>.
by <a href="https://github.com/EelcoLos"><code>@​EelcoLos</code></a>)
(<a
href="2d952a1bf9">2d952a1</a>)</li>
</ul>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v5.5.1...v5.5.2">5.5.2</a>
(2024-04-24)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Bump tar from 6.1.11 to 6.2.1 (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/262">#262</a>
by <a href="https://github.com/EelcoLos"><code>@​EelcoLos</code></a>)
(<a
href="9a90d5a5ac">9a90d5a</a>)</li>
</ul>
<h2><a
href="https://github.com/amannn/action-semantic-pull-request/compare/v5.5.0...v5.5.1">5.5.1</a>
(2024-04-24)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="48f256284b"><code>48f2562</code></a>
chore: Release 6.1.1 [skip ci]</li>
<li><a
href="800da4c97f"><code>800da4c</code></a>
fix: Parse <code>headerPatternCorrespondence</code> properly (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/295">#295</a>)</li>
<li><a
href="677b89571e"><code>677b895</code></a>
test: Fix broken test</li>
<li><a
href="24e6f016c1"><code>24e6f01</code></a>
ci: Fix permissions for tagger</li>
<li><a
href="7f33ba7922"><code>7f33ba7</code></a>
chore: Release 6.1.0 [skip ci]</li>
<li><a
href="afa4edb1c4"><code>afa4edb</code></a>
fix: Remove trailing whitespace from &quot;unknown release type&quot;
error message (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/291">#291</a>)</li>
<li><a
href="a30288bf13"><code>a30288b</code></a>
feat: Support providing regexps for types (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/292">#292</a>)</li>
<li><a
href="a46a7c8dc4"><code>a46a7c8</code></a>
build: Move Vitest to <code>devDependencies</code> (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/290">#290</a>)</li>
<li><a
href="fdd4d3ddf6"><code>fdd4d3d</code></a>
chore: Release 6.0.1 [skip ci]</li>
<li><a
href="58e4ab40f5"><code>58e4ab4</code></a>
fix: Actually execute action (<a
href="https://redirect.github.com/amannn/action-semantic-pull-request/issues/289">#289</a>)</li>
<li>Additional commits viewable in <a
href="0723387faa...48f256284b">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=amannn/action-semantic-pull-request&package-manager=github_actions&previous-version=5.5.3&new-version=6.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:56:31 +03:00
dependabot[bot]
3c54e91420 build(deps): bump serde_json from 1.0.142 to 1.0.143 (#2068)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.142 to
1.0.143.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.143</h2>
<ul>
<li>Implement Clone and Debug for serde_json::Map iterators (<a
href="https://redirect.github.com/serde-rs/json/issues/1264">#1264</a>,
thanks <a
href="https://github.com/xlambein"><code>@​xlambein</code></a>)</li>
<li>Implement Default for CompactFormatter (<a
href="https://redirect.github.com/serde-rs/json/issues/1268">#1268</a>,
thanks <a href="https://github.com/SOF3"><code>@​SOF3</code></a>)</li>
<li>Implement FromStr for serde_json::Map (<a
href="https://redirect.github.com/serde-rs/json/issues/1271">#1271</a>,
thanks <a
href="https://github.com/mickvangelderen"><code>@​mickvangelderen</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="10102c49bf"><code>10102c4</code></a>
Release 1.0.143</li>
<li><a
href="2a5b85312c"><code>2a5b853</code></a>
Replace super::super with absolute path within crate</li>
<li><a
href="447170bd38"><code>447170b</code></a>
Merge pull request 1271 from
mickvangelderen/mick/impl-from-str-for-map</li>
<li><a
href="ec190d6dfd"><code>ec190d6</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1264">#1264</a>
from xlambein/master</li>
<li><a
href="8be664752f"><code>8be6647</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1268">#1268</a>
from SOF3/compact-default</li>
<li><a
href="ba5b3cccea"><code>ba5b3cc</code></a>
Revert &quot;Pin nightly toolchain used for miri job&quot;</li>
<li><a
href="fd35a02901"><code>fd35a02</code></a>
Implement FromStr for Map&lt;String, Value&gt;</li>
<li><a
href="bea0fe6b3e"><code>bea0fe6</code></a>
Implement Default for CompactFormatter</li>
<li><a
href="0c0e9f6bfa"><code>0c0e9f6</code></a>
Add Clone and Debug impls to map iterators</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.142...v1.0.143">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.142&new-version=1.0.143)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:55:53 +03:00
dependabot[bot]
3673d360cf build(deps): bump codecov/codecov-action from 5.4.3 to 5.5.1 (#2081)
Bumps
[codecov/codecov-action](https://github.com/codecov/codecov-action) from
5.4.3 to 5.5.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/releases">codecov/codecov-action's
releases</a>.</em></p>
<blockquote>
<h2>v5.5.1</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1833">codecov/codecov-action#1833</a></li>
<li>build(deps): bump github/codeql-action from 3.28.18 to 3.29.9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1861">codecov/codecov-action#1861</a></li>
<li>Document a <code>codecov-cli</code> version reference example by <a
href="https://github.com/webknjaz"><code>@​webknjaz</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1774">codecov/codecov-action#1774</a></li>
<li>docs: fix typo in README by <a
href="https://github.com/datalater"><code>@​datalater</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1866">codecov/codecov-action#1866</a></li>
<li>fix: update to use local app/ dir by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1872">codecov/codecov-action#1872</a></li>
<li>build(deps): bump github/codeql-action from 3.29.9 to 3.29.11 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1867">codecov/codecov-action#1867</a></li>
<li>build(deps): bump actions/checkout from 4.2.2 to 5.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1868">codecov/codecov-action#1868</a></li>
<li>fix: overwrite pr number on fork by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1871">codecov/codecov-action#1871</a></li>
<li>chore(release): 5.5.1 by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1873">codecov/codecov-action#1873</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/datalater"><code>@​datalater</code></a>
made their first contribution in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1866">codecov/codecov-action#1866</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.5.0...v5.5.1">https://github.com/codecov/codecov-action/compare/v5.5.0...v5.5.1</a></p>
<h2>v5.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump github/codeql-action from 3.28.17 to 3.28.18 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1829">codecov/codecov-action#1829</a></li>
<li>docs: Refine OIDC docs by <a
href="https://github.com/spalmurray"><code>@​spalmurray</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1837">codecov/codecov-action#1837</a></li>
<li>fix: Typo in README by <a
href="https://github.com/spalmurray"><code>@​spalmurray</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1838">codecov/codecov-action#1838</a></li>
<li>fix: check reqs exist by <a
href="https://github.com/joseph-sentry"><code>@​joseph-sentry</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1835">codecov/codecov-action#1835</a></li>
<li>Pin actions/github-script by Git SHA by <a
href="https://github.com/martincostello"><code>@​martincostello</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1859">codecov/codecov-action#1859</a></li>
<li>feat: upgrade wrapper to 0.2.4 by <a
href="https://github.com/jviall"><code>@​jviall</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1864">codecov/codecov-action#1864</a></li>
<li>chore(release): 5.5.0 by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1865">codecov/codecov-action#1865</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/spalmurray"><code>@​spalmurray</code></a> made
their first contribution in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1837">codecov/codecov-action#1837</a></li>
<li><a
href="https://github.com/martincostello"><code>@​martincostello</code></a>
made their first contribution in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1859">codecov/codecov-action#1859</a></li>
<li><a href="https://github.com/jviall"><code>@​jviall</code></a> made
their first contribution in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1864">codecov/codecov-action#1864</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.4.3...v5.5.0">https://github.com/codecov/codecov-action/compare/v5.4.3...v5.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md">codecov/codecov-action's
changelog</a>.</em></p>
<blockquote>
<h2>v5.5.1</h2>
<h3>What's Changed</h3>
<ul>
<li>fix: overwrite pr number on fork by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1871">codecov/codecov-action#1871</a></li>
<li>build(deps): bump actions/checkout from 4.2.2 to 5.0.0 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1868">codecov/codecov-action#1868</a></li>
<li>build(deps): bump github/codeql-action from 3.29.9 to 3.29.11 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1867">codecov/codecov-action#1867</a></li>
<li>fix: update to use local app/ dir by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1872">codecov/codecov-action#1872</a></li>
<li>docs: fix typo in README by <a
href="https://github.com/datalater"><code>@​datalater</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1866">codecov/codecov-action#1866</a></li>
<li>Document a <code>codecov-cli</code> version reference example by <a
href="https://github.com/webknjaz"><code>@​webknjaz</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1774">codecov/codecov-action#1774</a></li>
<li>build(deps): bump github/codeql-action from 3.28.18 to 3.29.9 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1861">codecov/codecov-action#1861</a></li>
<li>build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1833">codecov/codecov-action#1833</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.5.0..v5.5.1">https://github.com/codecov/codecov-action/compare/v5.5.0..v5.5.1</a></p>
<h2>v5.5.0</h2>
<h3>What's Changed</h3>
<ul>
<li>feat: upgrade wrapper to 0.2.4 by <a
href="https://github.com/jviall"><code>@​jviall</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1864">codecov/codecov-action#1864</a></li>
<li>Pin actions/github-script by Git SHA by <a
href="https://github.com/martincostello"><code>@​martincostello</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1859">codecov/codecov-action#1859</a></li>
<li>fix: check reqs exist by <a
href="https://github.com/joseph-sentry"><code>@​joseph-sentry</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1835">codecov/codecov-action#1835</a></li>
<li>fix: Typo in README by <a
href="https://github.com/spalmurray"><code>@​spalmurray</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1838">codecov/codecov-action#1838</a></li>
<li>docs: Refine OIDC docs by <a
href="https://github.com/spalmurray"><code>@​spalmurray</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1837">codecov/codecov-action#1837</a></li>
<li>build(deps): bump github/codeql-action from 3.28.17 to 3.28.18 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1829">codecov/codecov-action#1829</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.4.3..v5.5.0">https://github.com/codecov/codecov-action/compare/v5.4.3..v5.5.0</a></p>
<h2>v5.4.3</h2>
<h3>What's Changed</h3>
<ul>
<li>build(deps): bump github/codeql-action from 3.28.13 to 3.28.17 by
<code>@​app/dependabot</code> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1822">codecov/codecov-action#1822</a></li>
<li>fix: OIDC on forks by <a
href="https://github.com/joseph-sentry"><code>@​joseph-sentry</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1823">codecov/codecov-action#1823</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.4.2..v5.4.3">https://github.com/codecov/codecov-action/compare/v5.4.2..v5.4.3</a></p>
<h2>v5.4.2</h2>
<h3>What's Changed</h3>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/codecov/codecov-action/compare/v5.4.1..v5.4.2">https://github.com/codecov/codecov-action/compare/v5.4.1..v5.4.2</a></p>
<h2>v5.4.1</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5a1091511a"><code>5a10915</code></a>
chore(release): 5.5.1 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1873">#1873</a>)</li>
<li><a
href="3e0ce21cac"><code>3e0ce21</code></a>
fix: overwrite pr number on fork (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1871">#1871</a>)</li>
<li><a
href="c4741c8197"><code>c4741c8</code></a>
build(deps): bump actions/checkout from 4.2.2 to 5.0.0 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1868">#1868</a>)</li>
<li><a
href="17370e8add"><code>17370e8</code></a>
build(deps): bump github/codeql-action from 3.29.9 to 3.29.11 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1867">#1867</a>)</li>
<li><a
href="18fdacf0ce"><code>18fdacf</code></a>
fix: update to use local app/ dir (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1872">#1872</a>)</li>
<li><a
href="206148c4b8"><code>206148c</code></a>
docs: fix typo in README (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1866">#1866</a>)</li>
<li><a
href="3cb13a1234"><code>3cb13a1</code></a>
Document a <code>codecov-cli</code> version reference example (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1774">#1774</a>)</li>
<li><a
href="a4803c1f8d"><code>a4803c1</code></a>
build(deps): bump github/codeql-action from 3.28.18 to 3.29.9 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1861">#1861</a>)</li>
<li><a
href="3139621497"><code>3139621</code></a>
build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1833">#1833</a>)</li>
<li><a
href="fdcc847654"><code>fdcc847</code></a>
chore(release): 5.5.0 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1865">#1865</a>)</li>
<li>Additional commits viewable in <a
href="18283e04ce...5a1091511a">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=5.4.3&new-version=5.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:54:46 +03:00
dependabot[bot]
28e5f35b17 build(deps): bump crate-ci/typos from 1.35.3 to 1.36.2 (#2080)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.35.3 to
1.36.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.36.2</h2>
<h2>[1.36.2] - 2025-09-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix regression from 1.36.1 when rendering an error for a line with
invalid UTF-8</li>
</ul>
<h2>v1.36.1</h2>
<h2>[1.36.1] - 2025-09-03</h2>
<h3>Fixes</h3>
<ul>
<li>Replaced the error rendering for various quality of life
improvements</li>
</ul>
<h2>v1.36.0</h2>
<h2>[1.36.0] - 2025-09-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1345">August
2025</a> changes</li>
</ul>
<h2>v1.35.8</h2>
<h2>[1.35.8] - 2025-09-02</h2>
<h2>v1.35.7</h2>
<h2>[1.35.7] - 2025-08-29</h2>
<h3>Documentation</h3>
<ul>
<li>Expand PyPI metadata</li>
</ul>
<h2>v1.35.6</h2>
<h2>[1.35.6] - 2025-08-28</h2>
<h3>Fixes</h3>
<ul>
<li>Track <code>go.mod</code> as a golang file (regression from
1.13.21)</li>
</ul>
<h2>v1.35.5</h2>
<h2>[1.35.5] - 2025-08-18</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>accidently</code></li>
<li>Fix typo in correction to <code>dynamincally</code></li>
<li>Fix typo in correction to <code>interruptability</code></li>
<li>Fix typo in correction to <code>interruptability</code></li>
<li>Fix typo in correction to <code>messager</code></li>
<li>Fix typo in correction to <code>preferables</code></li>
<li>Fix typo in correction to <code>producibles</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.36.2] - 2025-09-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix regression from 1.36.1 when rendering an error for a line with
invalid UTF-8</li>
</ul>
<h2>[1.36.1] - 2025-09-03</h2>
<h3>Fixes</h3>
<ul>
<li>Replaced the error rendering for various quality of life
improvements</li>
</ul>
<h2>[1.36.0] - 2025-09-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1345">August
2025</a> changes</li>
</ul>
<h2>[1.35.8] - 2025-09-02</h2>
<h2>[1.35.7] - 2025-08-29</h2>
<h3>Documentation</h3>
<ul>
<li>Expand PyPI metadata</li>
</ul>
<h2>[1.35.6] - 2025-08-28</h2>
<h3>Fixes</h3>
<ul>
<li>Track <code>go.mod</code> as a golang file (regression from
1.13.21)</li>
</ul>
<h2>[1.35.5] - 2025-08-18</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>accidently</code></li>
<li>Fix typo in correction to <code>dynamincally</code></li>
<li>Fix typo in correction to <code>interruptability</code></li>
<li>Fix typo in correction to <code>interruptability</code></li>
<li>Fix typo in correction to <code>messager</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="85f62a8a84"><code>85f62a8</code></a>
chore: Release</li>
<li><a
href="6f26306a91"><code>6f26306</code></a>
docs: Update changelog</li>
<li><a
href="6bd8b39b57"><code>6bd8b39</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1374">#1374</a>
from epage/invalid</li>
<li><a
href="f5e19d3038"><code>f5e19d3</code></a>
fix(cli): Don't panic with invalid utf-8</li>
<li><a
href="5062775d92"><code>5062775</code></a>
test(cli): Generalize utf16 tests</li>
<li><a
href="b6297a6a50"><code>b6297a6</code></a>
chore: Release</li>
<li><a
href="e6d718928a"><code>e6d7189</code></a>
docs: Update changelog</li>
<li><a
href="1bf1ed2584"><code>1bf1ed2</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1372">#1372</a>
from epage/render</li>
<li><a
href="9e79b8d2c6"><code>9e79b8d</code></a>
refactor(cli): Give control over the whole group</li>
<li><a
href="a5fa603453"><code>a5fa603</code></a>
refactor(cli): Extract snippet creation</li>
<li>Additional commits viewable in <a
href="52bd719c2c...85f62a8a84">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.35.3&new-version=1.36.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:53:57 +03:00
dependabot[bot]
ba37ecebdb build(deps): bump actions/github-script from 7 to 8 (#2082)
Bumps [actions/github-script](https://github.com/actions/github-script)
from 7 to 8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/github-script/releases">actions/github-script's
releases</a>.</em></p>
<blockquote>
<h2>v8.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update Node.js version support to 24.x by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/637">actions/github-script#637</a></li>
<li>README for updating actions/github-script from v7 to v8 by <a
href="https://github.com/sneha-krip"><code>@​sneha-krip</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/653">actions/github-script#653</a></li>
</ul>
<h2>⚠️ Minimum Compatible Runner Version</h2>
<p><strong>v2.327.1</strong><br />
<a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<p>Make sure your runner is updated to this version or newer to use this
release.</p>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/637">actions/github-script#637</a></li>
<li><a
href="https://github.com/sneha-krip"><code>@​sneha-krip</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/653">actions/github-script#653</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/github-script/compare/v7.1.0...v8.0.0">https://github.com/actions/github-script/compare/v7.1.0...v8.0.0</a></p>
<h2>v7.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Upgrade husky to v9 by <a
href="https://github.com/benelan"><code>@​benelan</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/482">actions/github-script#482</a></li>
<li>Add workflow file for publishing releases to immutable action
package by <a
href="https://github.com/Jcambass"><code>@​Jcambass</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/485">actions/github-script#485</a></li>
<li>Upgrade IA Publish by <a
href="https://github.com/Jcambass"><code>@​Jcambass</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/486">actions/github-script#486</a></li>
<li>Fix workflow status badges by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/497">actions/github-script#497</a></li>
<li>Update usage of <code>actions/upload-artifact</code> by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/512">actions/github-script#512</a></li>
<li>Clear up package name confusion by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/514">actions/github-script#514</a></li>
<li>Update dependencies with <code>npm audit fix</code> by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/515">actions/github-script#515</a></li>
<li>Specify that the used script is JavaScript by <a
href="https://github.com/timotk"><code>@​timotk</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/478">actions/github-script#478</a></li>
<li>chore: Add Dependabot for NPM and Actions by <a
href="https://github.com/nschonni"><code>@​nschonni</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/472">actions/github-script#472</a></li>
<li>Define <code>permissions</code> in workflows and update actions by
<a href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in
<a
href="https://redirect.github.com/actions/github-script/pull/531">actions/github-script#531</a></li>
<li>chore: Add Dependabot for .github/actions/install-dependencies by <a
href="https://github.com/nschonni"><code>@​nschonni</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/532">actions/github-script#532</a></li>
<li>chore: Remove .vscode settings by <a
href="https://github.com/nschonni"><code>@​nschonni</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/533">actions/github-script#533</a></li>
<li>ci: Use github/setup-licensed by <a
href="https://github.com/nschonni"><code>@​nschonni</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/473">actions/github-script#473</a></li>
<li>make octokit instance available as octokit on top of github, to make
it easier to seamlessly copy examples from GitHub rest api or octokit
documentations by <a
href="https://github.com/iamstarkov"><code>@​iamstarkov</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/508">actions/github-script#508</a></li>
<li>Remove <code>octokit</code> README updates for v7 by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/557">actions/github-script#557</a></li>
<li>docs: add &quot;exec&quot; usage examples by <a
href="https://github.com/neilime"><code>@​neilime</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/546">actions/github-script#546</a></li>
<li>Bump ruby/setup-ruby from 1.213.0 to 1.222.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/github-script/pull/563">actions/github-script#563</a></li>
<li>Bump ruby/setup-ruby from 1.222.0 to 1.229.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/github-script/pull/575">actions/github-script#575</a></li>
<li>Clearly document passing inputs to the <code>script</code> by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/603">actions/github-script#603</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/610">actions/github-script#610</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/benelan"><code>@​benelan</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/482">actions/github-script#482</a></li>
<li><a href="https://github.com/Jcambass"><code>@​Jcambass</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/485">actions/github-script#485</a></li>
<li><a href="https://github.com/timotk"><code>@​timotk</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/478">actions/github-script#478</a></li>
<li><a
href="https://github.com/iamstarkov"><code>@​iamstarkov</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/508">actions/github-script#508</a></li>
<li><a href="https://github.com/neilime"><code>@​neilime</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/546">actions/github-script#546</a></li>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/610">actions/github-script#610</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/github-script/compare/v7...v7.1.0">https://github.com/actions/github-script/compare/v7...v7.1.0</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ed597411d8"><code>ed59741</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/github-script/issues/653">#653</a>
from actions/sneha-krip/readme-for-v8</li>
<li><a
href="2dc352e4ba"><code>2dc352e</code></a>
Bold minimum Actions Runner version in README</li>
<li><a
href="01e118c8d0"><code>01e118c</code></a>
Update README for Node 24 runtime requirements</li>
<li><a
href="8b222ac82e"><code>8b222ac</code></a>
Apply suggestion from <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a></li>
<li><a
href="adc0eeac99"><code>adc0eea</code></a>
README for updating actions/github-script from v7 to v8</li>
<li><a
href="20fe497b3f"><code>20fe497</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/github-script/issues/637">#637</a>
from actions/node24</li>
<li><a
href="e7b7f222b1"><code>e7b7f22</code></a>
update licenses</li>
<li><a
href="2c81ba05f3"><code>2c81ba0</code></a>
Update Node.js version support to 24.x</li>
<li>See full diff in <a
href="https://github.com/actions/github-script/compare/v7...v8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/github-script&package-manager=github_actions&previous-version=7&new-version=8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:53:23 +03:00
dependabot[bot]
a2b2f98868 build(deps): bump hashbrown from 0.15.5 to 0.16.0 (#2084)
Bumps [hashbrown](https://github.com/rust-lang/hashbrown) from 0.15.5 to
0.16.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/hashbrown/releases">hashbrown's
releases</a>.</em></p>
<blockquote>
<h2>v0.16.0</h2>
<h3>Changed</h3>
<ul>
<li>Bump foldhash, the default hasher, to 0.2.0.</li>
<li>Replaced <code>DefaultHashBuilder</code> with a newtype wrapper
around <code>foldhash</code> instead of re-exporting it directly.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md">hashbrown's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/hashbrown/compare/v0.15.5...v0.16.0">0.16.0</a>
- 2025-08-28</h2>
<h3>Changed</h3>
<ul>
<li>Bump foldhash, the default hasher, to 0.2.0.</li>
<li>Replaced <code>DefaultHashBuilder</code> with a newtype wrapper
around <code>foldhash</code> instead
of re-exporting it directly.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8d4def0edc"><code>8d4def0</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/643">#643</a>
from cuviper/newtype-hasher</li>
<li><a
href="e0f404cc0b"><code>e0f404c</code></a>
use <code>feature(hasher_prefixfree_extras)</code></li>
<li><a
href="95ffed34ed"><code>95ffed3</code></a>
Change <code>DefaultHashBuilder</code> to an opaque newtype</li>
<li><a
href="bf35a11329"><code>bf35a11</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/641">#641</a>
from hoxxep/foldhash-0.2</li>
<li><a
href="e2a634b37f"><code>e2a634b</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/642">#642</a>
from heiher/loong-simd-types</li>
<li><a
href="88794e7fc5"><code>88794e7</code></a>
loongarch64: Use unified data types for SIMD intrinsics</li>
<li><a
href="b22dd85cc3"><code>b22dd85</code></a>
perf: Bump foldhash to 0.2.0</li>
<li><a
href="fe72a08e63"><code>fe72a08</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/639">#639</a>
from gaujay/unbloat-get_inner-perf</li>
<li><a
href="71f8f37413"><code>71f8f37</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/637">#637</a>
from gaujay/add-benchmarks</li>
<li><a
href="f1c039c1f6"><code>f1c039c</code></a>
Un-bloat get_inner functions to restore lookup performance</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/hashbrown/compare/v0.15.5...v0.16.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hashbrown&package-manager=cargo&previous-version=0.15.5&new-version=0.16.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:43:23 +03:00
dependabot[bot]
e799b732b6 build(deps): bump zizmorcore/zizmor-action from 0.1.1 to 0.2.0 (#2089)
Bumps
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)
from 0.1.1 to 0.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.2.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add support for <code>color</code> input by <a
href="https://github.com/birjj"><code>@​birjj</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/37">zizmorcore/zizmor-action#37</a></li>
<li>Adding option for GitHub annotations by <a
href="https://github.com/abdelq"><code>@​abdelq</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/45">zizmorcore/zizmor-action#45</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/birjj"><code>@​birjj</code></a> made
their first contribution in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/37">zizmorcore/zizmor-action#37</a></li>
<li><a href="https://github.com/abdelq"><code>@​abdelq</code></a> made
their first contribution in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/45">zizmorcore/zizmor-action#45</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.1.2...v0.2.0">https://github.com/zizmorcore/zizmor-action/compare/v0.1.2...v0.2.0</a></p>
<h2>v0.1.2</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: allow version prefix of <code>v</code> by <a
href="https://github.com/martincostello"><code>@​martincostello</code></a>
in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/31">zizmorcore/zizmor-action#31</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/martincostello"><code>@​martincostello</code></a>
made their first contribution in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/31">zizmorcore/zizmor-action#31</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.1.1...v0.1.2">https://github.com/zizmorcore/zizmor-action/compare/v0.1.1...v0.1.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e673c3917a"><code>e673c39</code></a>
Adding option for GitHub annotations (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/45">#45</a>)</li>
<li><a
href="2d5a33f24d"><code>2d5a33f</code></a>
chore: add missing license (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/44">#44</a>)</li>
<li><a
href="a016d81e77"><code>a016d81</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/39">#39</a>)</li>
<li><a
href="a8fb1d7e7d"><code>a8fb1d7</code></a>
feat: add support for <code>color</code> input (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/37">#37</a>)</li>
<li><a
href="09680325f5"><code>0968032</code></a>
chore(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/35">#35</a>)</li>
<li><a
href="7f2abfff74"><code>7f2abff</code></a>
README: bump pins (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/33">#33</a>)</li>
<li><a
href="5ca5fc7a47"><code>5ca5fc7</code></a>
README: add note about v prefix (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/32">#32</a>)</li>
<li><a
href="9c58446551"><code>9c58446</code></a>
fix: allow version prefix of <code>v</code> (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/31">#31</a>)</li>
<li><a
href="c17832b972"><code>c17832b</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/30">#30</a>)</li>
<li><a
href="383d31df2e"><code>383d31d</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/27">#27</a>)</li>
<li>Additional commits viewable in <a
href="f52a838cfa...e673c3917a">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zizmorcore/zizmor-action&package-manager=github_actions&previous-version=0.1.1&new-version=0.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:42:10 +03:00
lolbinarycat
b08b4cbd5e docs(terminal): add disclaimer about panics to Terminal::new (#2088)
<!-- Please read CONTRIBUTING.md before submitting any pull request. -->
part of #2087

cc @orhun

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-09-24 23:41:09 +03:00
dependabot[bot]
881d2452e0 build(deps): bump trybuild from 1.0.110 to 1.0.111 (#2092)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.110 to
1.0.111.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.111</h2>
<ul>
<li>Normalize dependency crate's version in filepaths (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/316">#316</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="31fbbb2dc6"><code>31fbbb2</code></a>
Release 1.0.111</li>
<li><a
href="d4dfc63d0a"><code>d4dfc63</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/316">#316</a>
from dtolnay/version</li>
<li><a
href="3caa02a1f0"><code>3caa02a</code></a>
Normalize dependency crate's version in paths</li>
<li><a
href="e1cfaadab8"><code>e1cfaad</code></a>
Update actions/checkout@v4 -&gt; v5</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.110...1.0.111">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.110&new-version=1.0.111)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:40:47 +03:00
dependabot[bot]
cedad530fe build(deps): bump release-plz/action from 0.5.110 to 0.5.117 (#2090)
Bumps [release-plz/action](https://github.com/release-plz/action) from
0.5.110 to 0.5.117.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-plz/action/releases">release-plz/action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.117</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.146 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/222">release-plz/action#222</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.117">https://github.com/release-plz/action/compare/v0.5...v0.5.117</a></p>
<h2>v0.5.116</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.145 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/220">release-plz/action#220</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.116">https://github.com/release-plz/action/compare/v0.5...v0.5.116</a></p>
<h2>v0.5.115</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.144 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/219">release-plz/action#219</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.115">https://github.com/release-plz/action/compare/v0.5...v0.5.115</a></p>
<h2>v0.5.114</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.143 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/218">release-plz/action#218</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.114">https://github.com/release-plz/action/compare/v0.5...v0.5.114</a></p>
<h2>v0.5.113</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.142 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/217">release-plz/action#217</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.113">https://github.com/release-plz/action/compare/v0.5...v0.5.113</a></p>
<h2>v0.5.112</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.141 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/215">release-plz/action#215</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.112">https://github.com/release-plz/action/compare/v0.5...v0.5.112</a></p>
<h2>v0.5.111</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/release-plz/action/pull/212">release-plz/action#212</a></li>
<li>update cargo semver checks to v0.43 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/213">release-plz/action#213</a></li>
<li>Update to 0.3.140 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/214">release-plz/action#214</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.111">https://github.com/release-plz/action/compare/v0.5...v0.5.111</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="acb9246af4"><code>acb9246</code></a>
Update to 0.3.146 (<a
href="https://redirect.github.com/release-plz/action/issues/222">#222</a>)</li>
<li><a
href="27195cf771"><code>27195cf</code></a>
Update to 0.3.145 (<a
href="https://redirect.github.com/release-plz/action/issues/220">#220</a>)</li>
<li><a
href="574c1d0ed8"><code>574c1d0</code></a>
Update to 0.3.144 (<a
href="https://redirect.github.com/release-plz/action/issues/219">#219</a>)</li>
<li><a
href="d15ad33e74"><code>d15ad33</code></a>
Update to 0.3.143 (<a
href="https://redirect.github.com/release-plz/action/issues/218">#218</a>)</li>
<li><a
href="f4facd4a76"><code>f4facd4</code></a>
Update to 0.3.142 (<a
href="https://redirect.github.com/release-plz/action/issues/217">#217</a>)</li>
<li><a
href="f9715bc3b4"><code>f9715bc</code></a>
Update to 0.3.141 (<a
href="https://redirect.github.com/release-plz/action/issues/215">#215</a>)</li>
<li><a
href="a4ffad5637"><code>a4ffad5</code></a>
Update to 0.3.140 (<a
href="https://redirect.github.com/release-plz/action/issues/214">#214</a>)</li>
<li><a
href="8e4ec4422c"><code>8e4ec44</code></a>
update cargo semver checks to v0.43 (<a
href="https://redirect.github.com/release-plz/action/issues/213">#213</a>)</li>
<li><a
href="a27e254757"><code>a27e254</code></a>
build(deps): bump actions/checkout from 4 to 5 (<a
href="https://redirect.github.com/release-plz/action/issues/212">#212</a>)</li>
<li>See full diff in <a
href="ccf6dd9984...acb9246af4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-plz/action&package-manager=github_actions&previous-version=0.5.110&new-version=0.5.117)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:40:27 +03:00
dependabot[bot]
0e6c8f89be build(deps): bump taiki-e/install-action from 2.56.7 to 2.62.1 (#2095)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.56.7 to 2.62.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.62.1</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.15.</p>
</li>
<li>
<p>Update <code>cargo-udeps@latest</code> to 0.1.59.</p>
</li>
<li>
<p>Update <code>git-cliff@latest</code> to 2.10.1.</p>
</li>
</ul>
<h2>2.62.0</h2>
<ul>
<li>Support <code>cargo-deadlinks</code> (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1161">#1161</a>,
thanks <a
href="https://github.com/BenjaminBrienen"><code>@​BenjaminBrienen</code></a>)</li>
</ul>
<h2>2.61.13</h2>
<ul>
<li>
<p>Update <code>cargo-semver-checks@latest</code> to 0.44.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.14.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 37.0.0.</p>
</li>
</ul>
<h2>2.61.12</h2>
<ul>
<li>
<p>Update <code>parse-changelog@latest</code> to 0.6.14.</p>
</li>
<li>
<p>Update <code>xh@latest</code> to 0.25.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.13.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.8.19.</p>
</li>
</ul>
<h2>2.61.11</h2>
<ul>
<li>
<p>Update <code>cargo-no-dev-deps@latest</code> to 0.2.18.</p>
</li>
<li>
<p>Update <code>cargo-minimal-versions@latest</code> to 0.1.33.</p>
</li>
<li>
<p>Update <code>cargo-hack@latest</code> to 0.6.39.</p>
</li>
</ul>
<h2>2.61.10</h2>
<ul>
<li>Update <code>uv@latest</code> to 0.8.18.</li>
</ul>
<h2>2.61.9</h2>
<ul>
<li>Update <code>wasm-bindgen@latest</code> to 0.2.103.</li>
</ul>
<h2>2.61.8</h2>
<ul>
<li>
<p>Update <code>wasm-bindgen@latest</code> to 0.2.102.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.18.3.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.12.</p>
</li>
</ul>
<h2>2.61.7</h2>
<ul>
<li>Update <code>vacuum@latest</code> to 0.18.0.</li>
</ul>
<h2>2.61.6</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.62.1] - 2025-09-22</h2>
<ul>
<li>
<p>Update <code>mise@latest</code> to 2025.9.15.</p>
</li>
<li>
<p>Update <code>cargo-udeps@latest</code> to 0.1.59.</p>
</li>
<li>
<p>Update <code>git-cliff@latest</code> to 2.10.1.</p>
</li>
</ul>
<h2>[2.62.0] - 2025-09-21</h2>
<ul>
<li>Support <code>cargo-deadlinks</code> (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1161">#1161</a>,
thanks <a
href="https://github.com/BenjaminBrienen"><code>@​BenjaminBrienen</code></a>)</li>
</ul>
<h2>[2.61.13] - 2025-09-21</h2>
<ul>
<li>
<p>Update <code>cargo-semver-checks@latest</code> to 0.44.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.14.</p>
</li>
<li>
<p>Update <code>wasmtime@latest</code> to 37.0.0.</p>
</li>
</ul>
<h2>[2.61.12] - 2025-09-20</h2>
<ul>
<li>
<p>Update <code>parse-changelog@latest</code> to 0.6.14.</p>
</li>
<li>
<p>Update <code>xh@latest</code> to 0.25.0.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2025.9.13.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.8.19.</p>
</li>
</ul>
<h2>[2.61.11] - 2025-09-19</h2>
<ul>
<li>
<p>Update <code>cargo-no-dev-deps@latest</code> to 0.2.18.</p>
</li>
<li>
<p>Update <code>cargo-minimal-versions@latest</code> to 0.1.33.</p>
</li>
<li>
<p>Update <code>cargo-hack@latest</code> to 0.6.39.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d6912b4777"><code>d6912b4</code></a>
Release 2.62.1</li>
<li><a
href="ac4d226188"><code>ac4d226</code></a>
Update <code>mise@latest</code> to 2025.9.15</li>
<li><a
href="a878b7011d"><code>a878b70</code></a>
Update <code>cargo-udeps@latest</code> to 0.1.59</li>
<li><a
href="16ab0e7b53"><code>16ab0e7</code></a>
Update <code>git-cliff@latest</code> to 2.10.1</li>
<li><a
href="0e09747a63"><code>0e09747</code></a>
Release 2.62.0</li>
<li><a
href="1856fd6ff0"><code>1856fd6</code></a>
Update changelog</li>
<li><a
href="ed4255be07"><code>ed4255b</code></a>
Support cargo-deadlinks (<a
href="https://redirect.github.com/taiki-e/install-action/issues/1161">#1161</a>)</li>
<li><a
href="3c3a266059"><code>3c3a266</code></a>
Release 2.61.13</li>
<li><a
href="e814402cd9"><code>e814402</code></a>
Update <code>cargo-semver-checks@latest</code> to 0.44.0</li>
<li><a
href="e34e0638e2"><code>e34e063</code></a>
Update <code>mise@latest</code> to 2025.9.14</li>
<li>Additional commits viewable in <a
href="https://github.com/taiki-e/install-action/compare/v2.56.7...d6912b47771be2c443ec90dbb3d28e023987e782">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.56.7&new-version=2.62.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:40:06 +03:00
dependabot[bot]
aa6d8c9200 build(deps): bump dtolnay/rust-toolchain from b3b07ba8b418998c39fb20f53e8b695cdcc8de1b to 6d653acede28d24f02e3cd41383119e8b1b35921 (#2096)
Bumps
[dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from
b3b07ba8b418998c39fb20f53e8b695cdcc8de1b to
6d653acede28d24f02e3cd41383119e8b1b35921.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6d653acede"><code>6d653ac</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/rust-toolchain/issues/171">#171</a>
from dtolnay/up</li>
<li><a
href="30dc51db75"><code>30dc51d</code></a>
Update Linux arm64 runner to Ubuntu 24.04</li>
<li><a
href="e97e2d8cc3"><code>e97e2d8</code></a>
Update actions/checkout@v4 -&gt; v5</li>
<li><a
href="3bd6ba104c"><code>3bd6ba1</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/rust-toolchain/issues/168">#168</a>
from dtolnay/sed</li>
<li><a
href="0185c06042"><code>0185c06</code></a>
Fix update-revs.sh to recognize only the intended <code>required:
true</code></li>
<li><a
href="350b8170d6"><code>350b817</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/rust-toolchain/issues/166">#166</a>
from dtolnay/fix1</li>
<li><a
href="6ded28b5b7"><code>6ded28b</code></a>
Try without comment?</li>
<li><a
href="cc2784cec7"><code>cc2784c</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/rust-toolchain/issues/165">#165</a>
from dtolnay/fix2</li>
<li><a
href="f6642a8e0a"><code>f6642a8</code></a>
Try without backtick?</li>
<li><a
href="5ee21dc396"><code>5ee21dc</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/rust-toolchain/issues/162">#162</a>
from dtolnay/pin</li>
<li>Additional commits viewable in <a
href="b3b07ba8b4...6d653acede">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:38:44 +03:00
dependabot[bot]
bbe590ab08 build(deps): bump clap from 4.5.45 to 4.5.48 (#2097)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.45 to 4.5.48.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.48</h2>
<h2>[4.5.48] - 2025-09-19</h2>
<h3>Documentation</h3>
<ul>
<li>Add a new CLI Concepts document as another way of framing clap</li>
<li>Expand the <code>typed_derive</code> cookbook entry</li>
</ul>
<h2>v4.5.47</h2>
<h2>[4.5.47] - 2025-09-02</h2>
<h3>Features</h3>
<ul>
<li>Added <code>impl FromArgMatches for ()</code></li>
<li>Added <code>impl Args for ()</code></li>
<li>Added <code>impl Subcommand for ()</code></li>
<li>Added <code>impl FromArgMatches for Infallible</code></li>
<li>Added <code>impl Subcommand for Infallible</code></li>
</ul>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Update runtime error text to match
<code>clap</code></li>
</ul>
<h2>v4.5.46</h2>
<h2>[4.5.46] - 2025-08-26</h2>
<h3>Features</h3>
<ul>
<li>Expose <code>StyledStr::push_str</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.48] - 2025-09-19</h2>
<h3>Documentation</h3>
<ul>
<li>Add a new CLI Concepts document as another way of framing clap</li>
<li>Expand the <code>typed_derive</code> cookbook entry</li>
</ul>
<h2>[4.5.47] - 2025-09-02</h2>
<h3>Features</h3>
<ul>
<li>Added <code>impl FromArgMatches for ()</code></li>
<li>Added <code>impl Args for ()</code></li>
<li>Added <code>impl Subcommand for ()</code></li>
<li>Added <code>impl FromArgMatches for Infallible</code></li>
<li>Added <code>impl Subcommand for Infallible</code></li>
</ul>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Update runtime error text to match
<code>clap</code></li>
</ul>
<h2>[4.5.46] - 2025-08-26</h2>
<h3>Features</h3>
<ul>
<li>Expose <code>StyledStr::push_str</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c3a1ddc118"><code>c3a1ddc</code></a>
chore: Release</li>
<li><a
href="4460ff44b3"><code>4460ff4</code></a>
docs: Update changelog</li>
<li><a
href="54947a1b4b"><code>54947a1</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5981">#5981</a>
from mernen/fix-bash-clap-complete-space</li>
<li><a
href="fd3f6d271d"><code>fd3f6d2</code></a>
fix(complete): Restore nospace in bash</li>
<li><a
href="2f6a1083d9"><code>2f6a108</code></a>
test(complete): Demonstrate current behavior</li>
<li><a
href="f88be5738e"><code>f88be57</code></a>
style: Ensure consistent newlines</li>
<li><a
href="f209bce220"><code>f209bce</code></a>
chore: Release</li>
<li><a
href="f33ff7f81a"><code>f33ff7f</code></a>
docs: Update changelog</li>
<li><a
href="bf06e6f8f6"><code>bf06e6f</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5974">#5974</a>
from kryvashek/support-clearing-args-matches</li>
<li><a
href="5d357ada53"><code>5d357ad</code></a>
feat(parser): Added ArgMatches::try_clear_id()</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.45...clap_complete-v4.5.48">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.45&new-version=4.5.48)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 18:56:47 +02:00
dependabot[bot]
b507b38c58 build(deps): bump time from 0.3.41 to 0.3.44 (#2098)
Bumps [time](https://github.com/time-rs/time) from 0.3.41 to 0.3.44.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/releases">time's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.44</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
<h2>v0.3.43</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
<h2>v0.3.42</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's
changelog</a>.</em></p>
<blockquote>
<h2>0.3.44 [2025-09-19]</h2>
<h3>Fixed</h3>
<ul>
<li>Comparisons of <code>PrimitiveDateTime</code>,
<code>UtcDateTime</code>, and <code>OffsetDateTime</code> with differing
signs (i.e.
one negative and one positive year) would return the inverse result of
what was expected. This was
introduced in v0.3.42 and has been fixed.</li>
<li>Type inference would fail due to feature unification when
<code>wasm-bindgen</code> enabled <code>serde_json</code>.
This has been fixed by explicitly specifying the type in the relevant
locations.</li>
</ul>
<h2>0.3.43 [2025-09-02]</h2>
<h3>Added</h3>
<ul>
<li>Support for <code>rand</code> 0.9</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>In the <code>convert</code> module, any use of <code>per</code> with
types that were not the same (such as
<code>Nanosecond::per(Second)</code>) would not compile due to a bug.
This has been fixed.</li>
</ul>
<h2>0.3.42 [2025-08-31]</h2>
<h3>Added</h3>
<ul>
<li><code>Time::duration_until</code></li>
<li><code>Time::duration_since</code></li>
<li><code>per_t</code> method for all types in
<code>time::convert</code>. This is similar to the existing
<code>per</code> method, but
can return any of the primitive numeric types that can represent the
result. This will cut down on
<code>as</code> casts while ensuring correctness. Type inference isn't
perfect, so you may need to provide a
type annotation in some situations.</li>
<li><code>impl PartialOrd for Month</code> and <code>impl Ord for
Month</code>; this assumes the months are in the same year</li>
<li><code>SystemTimeExt</code> trait, adding methods for checked
arithmetic with <code>time::Duration</code> and obtaining
the difference between two <code>SystemTime</code>s as a
<code>time::Duration</code></li>
<li>Permit using <code>UtcDateTime</code> with <code>rand</code> (this
was inadvertently omitted previously)</li>
<li><code>impl core::error::Error</code> for all error types (now
available when the <code>std</code> feature is disabled)</li>
<li>MacOS can now obtain the local UTC offset in multi-threaded programs
as the system APIs are
thread-safe.</li>
<li><code>#[track_caller]</code> has been added to all relevant
methods.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The minimum supported Rust version is now 1.81.0.</li>
<li>The dependency on <code>itoa</code> has been removed, as the
standard library now has similar functionality
by default.</li>
<li>Formatting a component that involves a floating point number is now
guaranteed to be
deterministic, avoiding any subtle differences between platforms or
compiler versions.</li>
</ul>
<h3>Fixed</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="04c0ef2838"><code>04c0ef2</code></a>
v0.3.44 release</li>
<li><a
href="b9420633a3"><code>b942063</code></a>
Compare datetimes with signed integers</li>
<li><a
href="dcdfbf62a9"><code>dcdfbf6</code></a>
Add explicit type to avoid inference errors</li>
<li><a
href="f20385296a"><code>f203852</code></a>
Revert &quot;Remove dependency on <code>itoa</code>&quot;</li>
<li><a
href="45b9932e57"><code>45b9932</code></a>
v0.3.43 release</li>
<li><a
href="8cbf0dbff0"><code>8cbf0db</code></a>
Fix bug with <code>convert</code></li>
<li><a
href="3343e85826"><code>3343e85</code></a>
Add support for rand 0.9</li>
<li><a
href="afb2574f94"><code>afb2574</code></a>
Add note about MSRV</li>
<li><a
href="ed2852e3b2"><code>ed2852e</code></a>
v0.3.42 release</li>
<li><a
href="1067543c7f"><code>1067543</code></a>
Fix copied comment</li>
<li>Additional commits viewable in <a
href="https://github.com/time-rs/time/compare/v0.3.41...v0.3.44">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.41&new-version=0.3.44)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 18:49:17 +02:00
Shingo OKAWA
8aefc06a90 test(macros): regenerate trybuild stderr (#2093)
### Overview

Updated the `.stderr` file corresponding to the
`ratatui-macros/tests/ui/fails.rs` compile-fail test.

### Changes

- Updated `tests/ui/fails.stderr` to match the new compiler output.

### Impact

- Affects only the trybuild UI tests
- No impact on production code

### Notes

- The `.stderr` was generated using `TRYBUILD=overwrite cargo test`.

Closes https://github.com/ratatui/ratatui/issues/2094

Signed-off-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
2025-09-23 22:55:06 +03:00
Ryan Roden-Corrent
03f3f6df35 feat(style): allow add/sub modifiers to be omitted in Style serialization. (#2057)
It's really useful that Style supports Deserialize, this allows TUI
apps to have configurable theming without much extra code.

However, deserializing a style currently fails if `add_modifier` and
`sub_modifier` are
not specified. That means the following TOML config:

```toml
[theme.highlight]
fg = "white"
bg = "black"
```

Will fail to deserialize with "missing field `add_modifier`". It should
be possible
to omit modifiers and have them default to "none".
2025-09-19 21:57:55 +03:00
dependabot[bot]
ecef506a2b build(deps): bump bitflags from 2.9.2 to 2.9.3 (#2064)
Bumps [bitflags](https://github.com/bitflags/bitflags) from 2.9.2 to
2.9.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/releases">bitflags's
releases</a>.</em></p>
<blockquote>
<h2>2.9.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Streamline generated code by <a
href="https://github.com/nnethercote"><code>@​nnethercote</code></a> in
<a
href="https://redirect.github.com/bitflags/bitflags/pull/458">bitflags/bitflags#458</a></li>
<li>Prepare for 2.9.3 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/459">bitflags/bitflags#459</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/nnethercote"><code>@​nnethercote</code></a>
made their first contribution in <a
href="https://redirect.github.com/bitflags/bitflags/pull/458">bitflags/bitflags#458</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.9.2...2.9.3">https://github.com/bitflags/bitflags/compare/2.9.2...2.9.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md">bitflags's
changelog</a>.</em></p>
<blockquote>
<h1>2.9.3</h1>
<h2>What's Changed</h2>
<ul>
<li>Streamline generated code by <a
href="https://github.com/nnethercote"><code>@​nnethercote</code></a> in
<a
href="https://redirect.github.com/bitflags/bitflags/pull/458">bitflags/bitflags#458</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/nnethercote"><code>@​nnethercote</code></a>
made their first contribution in <a
href="https://redirect.github.com/bitflags/bitflags/pull/458">bitflags/bitflags#458</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.9.2...2.9.3">https://github.com/bitflags/bitflags/compare/2.9.2...2.9.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f59ad49e71"><code>f59ad49</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/459">#459</a>
from KodrAus/cargo/2.9.3</li>
<li><a
href="2c3a4f4a4a"><code>2c3a4f4</code></a>
prepare for 2.9.3 release</li>
<li><a
href="9e1cf3eaca"><code>9e1cf3e</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/458">#458</a>
from nnethercote/streamline-generated-code</li>
<li><a
href="a3f1f78b5d"><code>a3f1f78</code></a>
Avoid calling
<code>InternalBitFlags::{bits,from_bits_retain}</code>.</li>
<li><a
href="aead794e31"><code>aead794</code></a>
Avoid local variables in generated code.</li>
<li>See full diff in <a
href="https://github.com/bitflags/bitflags/compare/2.9.2...2.9.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bitflags&package-manager=cargo&previous-version=2.9.2&new-version=2.9.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 21:50:05 +02:00
Jagoda Estera Ślązak
e89a526aab feat(no_std): portable-atomic integration for targets with no atomic types (#2076)
Improves compatibility with no-std targets that don't support atomic
types.

We support three different scenarios depending on the target:
1. Terminal applications and other std targets (e.g. espidf):
- `std` enabled, `portable-atomic` disabled
2. Embedded targets with atomic types, bare metal x86, etc.:
- `std` disabled `portable-atomic` disabled
3. Embedded targets without atomic types (e.g. single-core MCUs):
- `std` disabled, `portable-atomic` enabled

Turning on `portable-atomic` together with `std` will fall back to `std`
atomic.
2025-09-04 20:14:25 +02:00
Josh McKinney
46e7c6cbbf chore: document rustfmt options (#2055) 2025-09-01 18:48:09 +03:00
dependabot[bot]
9a4f5af613 build(deps): bump tracing-subscriber from 0.3.19 to 0.3.20 in the cargo group (#2074)
Bumps the cargo group with 1 update:
[tracing-subscriber](https://github.com/tokio-rs/tracing).

Updates `tracing-subscriber` from 0.3.19 to 0.3.20
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tracing/releases">tracing-subscriber's
releases</a>.</em></p>
<blockquote>
<h2>tracing-subscriber 0.3.20</h2>
<p><strong>Security Fix</strong>: ANSI Escape Sequence Injection
(CVE-TBD)</p>
<h2>Impact</h2>
<p>Previous versions of tracing-subscriber were vulnerable to ANSI
escape sequence injection attacks. Untrusted user input containing ANSI
escape sequences could be injected into terminal output when logged,
potentially allowing attackers to:</p>
<ul>
<li>Manipulate terminal title bars</li>
<li>Clear screens or modify terminal display</li>
<li>Potentially mislead users through terminal manipulation</li>
</ul>
<p>In isolation, impact is minimal, however security issues have been
found in terminal emulators that enabled an attacker to use ANSI escape
sequences via logs to exploit vulnerabilities in the terminal
emulator.</p>
<h2>Solution</h2>
<p>Version 0.3.20 fixes this vulnerability by escaping ANSI control
characters in when writing events to destinations that may be printed to
the terminal.</p>
<h2>Affected Versions</h2>
<p>All versions of tracing-subscriber prior to 0.3.20 are affected by
this vulnerability.</p>
<h2>Recommendations</h2>
<p>Immediate Action Required: We recommend upgrading to
tracing-subscriber 0.3.20 immediately, especially if your
application:</p>
<ul>
<li>Logs user-provided input (form data, HTTP headers, query parameters,
etc.)</li>
<li>Runs in environments where terminal output is displayed to
users</li>
</ul>
<h2>Migration</h2>
<p>This is a patch release with no breaking API changes. Simply update
your Cargo.toml:</p>
<pre lang="toml"><code>[dependencies]
tracing-subscriber = &quot;0.3.20&quot;
</code></pre>
<h2>Acknowledgments</h2>
<p>We would like to thank <a href="http://github.com/zefr0x">zefr0x</a>
who responsibly reported the issue at
<code>security@tokio.rs</code>.</p>
<p>If you believe you have found a security vulnerability in any
tokio-rs project, please email us at <code>security@tokio.rs</code>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4c52ca5266"><code>4c52ca5</code></a>
fmt: fix ANSI escape sequence injection vulnerability (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3368">#3368</a>)</li>
<li><a
href="f71cebe41e"><code>f71cebe</code></a>
subscriber: impl Clone for EnvFilter (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3360">#3360</a>)</li>
<li><a
href="3a1f571102"><code>3a1f571</code></a>
Fix CI (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3361">#3361</a>)</li>
<li><a
href="e63ef57f3d"><code>e63ef57</code></a>
chore: prepare tracing-attributes 0.1.30 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3316">#3316</a>)</li>
<li><a
href="6e59a13b1a"><code>6e59a13</code></a>
attributes: fix tracing::instrument regression around shadowing (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3311">#3311</a>)</li>
<li><a
href="e4df761275"><code>e4df761</code></a>
tracing: update core to 0.1.34 and attributes to 0.1.29 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3305">#3305</a>)</li>
<li><a
href="643f392ebb"><code>643f392</code></a>
chore: prepare tracing-attributes 0.1.29 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3304">#3304</a>)</li>
<li><a
href="d08e7a6eea"><code>d08e7a6</code></a>
chore: prepare tracing-core 0.1.34 (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3302">#3302</a>)</li>
<li><a
href="6e70c571d3"><code>6e70c57</code></a>
tracing-subscriber: count numbers of enters in <code>Timings</code> (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/2944">#2944</a>)</li>
<li><a
href="c01d4fd9de"><code>c01d4fd</code></a>
fix docs and enable CI on <code>main</code> branch (<a
href="https://redirect.github.com/tokio-rs/tracing/issues/3295">#3295</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.19...tracing-subscriber-0.3.20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing-subscriber&package-manager=cargo&previous-version=0.3.19&new-version=0.3.20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ratatui/ratatui/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-01 09:46:37 +02:00
dependabot[bot]
0a9ff761a4 build(deps): bump thiserror from 2.0.15 to 2.0.16 (#2069)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.15 to
2.0.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/thiserror/releases">thiserror's
releases</a>.</em></p>
<blockquote>
<h2>2.0.16</h2>
<ul>
<li>Add to &quot;no-std&quot; crates.io category (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/429">#429</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="40b58536cc"><code>40b5853</code></a>
Release 2.0.16</li>
<li><a
href="83dfb5f99b"><code>83dfb5f</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/429">#429</a>
from dtolnay/nostd</li>
<li><a
href="9b4a99fb90"><code>9b4a99f</code></a>
Add to &quot;no-std&quot; crates.io category</li>
<li>See full diff in <a
href="https://github.com/dtolnay/thiserror/compare/2.0.15...2.0.16">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thiserror&package-manager=cargo&previous-version=2.0.15&new-version=2.0.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-26 21:07:21 +03:00
dependabot[bot]
632ce79adf build(deps): bump clap-verbosity-flag from 3.0.3 to 3.0.4 (#2070)
Bumps
[clap-verbosity-flag](https://github.com/clap-rs/clap-verbosity-flag)
from 3.0.3 to 3.0.4.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap-verbosity-flag/blob/master/CHANGELOG.md">clap-verbosity-flag's
changelog</a>.</em></p>
<blockquote>
<h2>[3.0.4] - 2025-08-19</h2>
<h3>Features</h3>
<ul>
<li>Add <code>serde</code> feature for when mixing CLI and config</li>
<li>Add comparison operators to types</li>
<li>Add conversions between <code>Verbosity</code> and
<code>VerbosityFilter</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5e051e6c96"><code>5e051e6</code></a>
chore: Release clap-verbosity-flag version 3.0.4</li>
<li><a
href="7e81cfd0a4"><code>7e81cfd</code></a>
docs: Update changelog</li>
<li><a
href="210e8d9b0e"><code>210e8d9</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/114">#114</a>
from joshka/jm/serde</li>
<li><a
href="44f0caae99"><code>44f0caa</code></a>
feat: Implement Serialization and Deserialization</li>
<li><a
href="f735876936"><code>f735876</code></a>
feat: Add conversion methods between Verbosity and VerbosityFilter</li>
<li><a
href="e6f4e62f94"><code>e6f4e62</code></a>
feat: Add Eq, and PartialEq impls to various types</li>
<li><a
href="5e1afbe4ad"><code>5e1afbe</code></a>
chore(deps): Update Rust Stable to v1.89 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/147">#147</a>)</li>
<li><a
href="70812d8da8"><code>70812d8</code></a>
chore(deps): Update Rust Stable to v1.88 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/146">#146</a>)</li>
<li><a
href="97637bc6f7"><code>97637bc</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/145">#145</a>
from epage/template</li>
<li><a
href="e9231b150d"><code>e9231b1</code></a>
chore: Update from _rust/main template</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap-verbosity-flag/compare/v3.0.3...v3.0.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap-verbosity-flag&package-manager=cargo&previous-version=3.0.3&new-version=3.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-26 20:52:37 +03:00
Dominique Martinet
564a9d76fc fix(line-gauge): pad default label to display 3 numbers (#2053)
Display the default label of the LineGauge widget padded to fill 3 cells.
This makes it so that the label doesn't shift around when going from a
single digit to double / triple digits.

To maintain the existing behavior, use a custom label by calling `.label()`
on the LineGauge.
2025-08-22 11:11:38 -07:00
Josh McKinney
2d713d723d feat(crossterm): allow multiple crossterm versions (#1841)
This commit introduces feature flags to make it possible for widget
library authors to depend on a specific version of crossterm without
causing version conflicts. This should make it easier for libraries and 
apps to update crossterm versions more easily.

The available feature flags are `crossterm_0_28` and `crossterm_0_29`.
By default, the latest version is enabled. If a multiple features are
enabled we choose the latest version. We will in general support at
least the last two major (0.x) versions of crossterm, and will only
remove versions in a major version bump.
2025-08-17 12:43:18 -07:00
Shingo OKAWA
86cd5292dd chore(deps): update slab and zerovec (#2050)
## Summary
This PR updates the `slab` dependency from 0.4.10 to 0.4.11 to fix
[RUSTSEC-2025-0047](https://rustsec.org/advisories/RUSTSEC-2025-0047), a
security
advisory about a bounds check bug in `get_disjoint_mut` that could lead
to reading
uninitialized memory. Also updates `zerovec` to the latest non-yanked
version to resolve cargo-deny warnings.

## Changes
- Updated `slab` to 0.4.11
- Updated `zerovec` to latest available version
- Regenerated `Cargo.lock`

## References
- https://rustsec.org/advisories/RUSTSEC-2025-0047
-
https://github.com/ratatui/ratatui/actions/runs/16983398723/job/48147754711?pr=1963

Signed-off-by: Shingo OKAWA <shingo.okawa.g.h.c@gmail.com>
2025-08-15 12:03:55 +03:00
kashregister
a21501f7f4 test(bench): Added a benchmark for constraints (#2043)
I've added a new benchmark for constraints, which only takes into
account the time it takes to generate a full layout using a single type
of constraints only. Avoided rendering here as it resulted in more
inaccurate benchmarks, and i believe it should be separated nonetheless.
2025-08-12 14:49:00 -07:00
Josh McKinney
75b78be09f feat: add width() impl for tabs (#2049)
The purpose of this is to make it easy for apps to easily calculate the
total tab width including all dividers and padding.
2025-08-12 14:39:27 -07:00
Jagoda Estera Ślązak
719badb5b8 chore: skip alpha and beta tags in cliff.toml (#2026)
https://github.com/ratatui/ratatui/pull/2025#issuecomment-3135177683
2025-08-12 08:02:01 +02:00
dependabot[bot]
879e09787e build(deps): bump crate-ci/typos from 1.34.0 to 1.35.3 (#2044)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.34.0 to
1.35.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.35.3</h2>
<h2>[1.35.3] - 2025-08-08</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>ratatui</code> in Rust files</li>
</ul>
<h2>v1.35.2</h2>
<h2>[1.35.2] - 2025-08-07</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>unmarshaling</code></li>
</ul>
<h2>v1.35.1</h2>
<h2>[1.35.1] - 2025-08-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>apostroph</code></li>
<li>Fix typo in correction to <code>cordinate</code></li>
<li>Fix typo in correction to <code>reproduceability</code></li>
<li>Fix typo in correction to <code>revolutionss</code></li>
<li>Fix typo in correction to <code>transivity</code></li>
</ul>
<h2>v1.35.0</h2>
<h2>[1.35.0] - 2025-08-04</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1331">July
2025</a> changes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.35.3] - 2025-08-08</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>ratatui</code> in Rust files</li>
</ul>
<h2>[1.35.2] - 2025-08-07</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>unmarshaling</code></li>
</ul>
<h2>[1.35.1] - 2025-08-04</h2>
<h3>Fixes</h3>
<ul>
<li>Fix typo in correction to <code>apostroph</code></li>
<li>Fix typo in correction to <code>cordinate</code></li>
<li>Fix typo in correction to <code>reproduceability</code></li>
<li>Fix typo in correction to <code>revolutionss</code></li>
<li>Fix typo in correction to <code>transivity</code></li>
</ul>
<h2>[1.35.0] - 2025-08-04</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1331">July
2025</a> changes</li>
</ul>
<h2>[1.34.0] - 2025-06-30</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1309">June
2025</a> changes</li>
</ul>
<h2>[1.33.1] - 2025-06-02</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Don't correct <code>wasn't</code> to
<code>wasm't</code></li>
</ul>
<h2>[1.33.0] - 2025-06-02</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="52bd719c2c"><code>52bd719</code></a>
chore: Release</li>
<li><a
href="c6f77dda9e"><code>c6f77dd</code></a>
docs: Update changelog</li>
<li><a
href="e35d08c453"><code>e35d08c</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1353">#1353</a>
from Rolv-Apneseth/ratatui</li>
<li><a
href="9d6691bc8c"><code>9d6691b</code></a>
fix: Ignore <code>ratatui</code> in Rust files</li>
<li><a
href="f1231bc2bc"><code>f1231bc</code></a>
chore: Release</li>
<li><a
href="66def6387b"><code>66def63</code></a>
docs: Update changelog</li>
<li><a
href="623f09b5bc"><code>623f09b</code></a>
chore: Release</li>
<li><a
href="1080316783"><code>1080316</code></a>
chore: Release</li>
<li><a
href="442605b529"><code>442605b</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1352">#1352</a>
from epage/marshaling</li>
<li><a
href="983f866bac"><code>983f866</code></a>
fix(dict): Don't correct marshaling</li>
<li>Additional commits viewable in <a
href="392b78fe18...52bd719c2c">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.34.0&new-version=1.35.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 13:45:40 -07:00
dependabot[bot]
381fcf3dc9 build(deps): bump actions/checkout from 4.2.2 to 5.0.0 (#2045)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2
to 5.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li>
</ul>
<h2>⚠️ Minimum Compatible Runner Version</h2>
<p><strong>v2.327.1</strong><br />
<a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<p>Make sure your runner is updated to this version or newer to use this
release.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
<li>Prepare release v4.3.0 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2237">actions/checkout#2237</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/motss"><code>@​motss</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li><a href="https://github.com/mouismail"><code>@​mouismail</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li><a href="https://github.com/benwells"><code>@​benwells</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v4.3.0">https://github.com/actions/checkout/compare/v4...v4.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>V5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>V4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
<li>README: Suggest <code>user.email</code> to be
<code>41898282+github-actions[bot]@users.noreply.github.com</code> by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1707">actions/checkout#1707</a></li>
</ul>
<h2>v4.1.4</h2>
<ul>
<li>Disable <code>extensions.worktreeConfig</code> when disabling
<code>sparse-checkout</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1692">actions/checkout#1692</a></li>
<li>Add dependabot config by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1688">actions/checkout#1688</a></li>
<li>Bump the minor-actions-dependencies group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1693">actions/checkout#1693</a></li>
<li>Bump word-wrap from 1.2.3 to 1.2.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1643">actions/checkout#1643</a></li>
</ul>
<h2>v4.1.3</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="08c6903cd8"><code>08c6903</code></a>
Prepare v5.0.0 release (<a
href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li>
<li><a
href="9f265659d3"><code>9f26565</code></a>
Update actions checkout to use node 24 (<a
href="https://redirect.github.com/actions/checkout/issues/2226">#2226</a>)</li>
<li><a
href="08eba0b27e"><code>08eba0b</code></a>
Prepare release v4.3.0 (<a
href="https://redirect.github.com/actions/checkout/issues/2237">#2237</a>)</li>
<li><a
href="631c7dc4f8"><code>631c7dc</code></a>
Update package dependencies (<a
href="https://redirect.github.com/actions/checkout/issues/2236">#2236</a>)</li>
<li><a
href="8edcb1bdb4"><code>8edcb1b</code></a>
Update CODEOWNERS for actions (<a
href="https://redirect.github.com/actions/checkout/issues/2224">#2224</a>)</li>
<li><a
href="09d2acae67"><code>09d2aca</code></a>
Update README.md (<a
href="https://redirect.github.com/actions/checkout/issues/2194">#2194</a>)</li>
<li><a
href="85e6279cec"><code>85e6279</code></a>
Adjust positioning of user email note and permissions heading (<a
href="https://redirect.github.com/actions/checkout/issues/2044">#2044</a>)</li>
<li><a
href="009b9ae9e4"><code>009b9ae</code></a>
Documentation update - add recommended permissions to Readme (<a
href="https://redirect.github.com/actions/checkout/issues/2043">#2043</a>)</li>
<li><a
href="cbb722410c"><code>cbb7224</code></a>
Update README.md (<a
href="https://redirect.github.com/actions/checkout/issues/1977">#1977</a>)</li>
<li><a
href="3b9b8c884f"><code>3b9b8c8</code></a>
docs: update README.md (<a
href="https://redirect.github.com/actions/checkout/issues/1971">#1971</a>)</li>
<li>See full diff in <a
href="11bd71901b...08c6903cd8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4.2.2&new-version=5.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-08-11 13:37:56 -07:00
dependabot[bot]
03072fa374 build(deps): bump taiki-e/install-action from 2.57.1 to 2.58.9 (#2046)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.57.1 to 2.58.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.58.9</h2>
<ul>
<li>Update <code>cargo-shear@latest</code> to 1.5.0.</li>
</ul>
<h2>2.58.8</h2>
<ul>
<li>Update <code>osv-scanner@latest</code> to 2.2.1.</li>
</ul>
<h2>2.58.7</h2>
<ul>
<li>
<p>Update <code>knope@latest</code> to 0.21.2.</p>
</li>
<li>
<p>Update <code>cyclonedx@latest</code> to 0.29.1.</p>
</li>
</ul>
<h2>2.58.6</h2>
<ul>
<li>Update <code>cargo-semver-checks@latest</code> to 0.43.0.</li>
</ul>
<h2>2.58.5</h2>
<ul>
<li>
<p>Update <code>knope@latest</code> to 0.21.1.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.14.4.</p>
</li>
</ul>
<h2>2.58.4</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.35.3.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.30.0.</p>
</li>
</ul>
<h2>2.58.3</h2>
<ul>
<li>Update <code>typos@latest</code> to 1.35.2.</li>
</ul>
<h2>2.58.2</h2>
<ul>
<li>Update <code>deepsource@latest</code> to 0.10.1.</li>
</ul>
<h2>2.58.1</h2>
<ul>
<li>
<p>Update <code>osv-scanner@latest</code> to 2.2.0.</p>
</li>
<li>
<p>Update <code>grcov@latest</code> to 0.10.5.</p>
</li>
</ul>
<h2>2.58.0</h2>
<ul>
<li>
<p>Support <code>iai-callgrind-runner</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1073">#1073</a>,
thanks <a
href="https://github.com/niklasf"><code>@​niklasf</code></a>)</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.17.8.</p>
</li>
</ul>
<h2>2.57.8</h2>
<ul>
<li>Update <code>deepsource@latest</code> to 0.10.0.</li>
</ul>
<h2>2.57.7</h2>
<ul>
<li>Update <code>typos@latest</code> to 1.35.1.</li>
</ul>
<h2>2.57.6</h2>
<ul>
<li>
<p>Update <code>shellcheck@latest</code> to 0.11.0.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.102.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>Update <code>editorconfig-checker@latest</code> to 3.4.0.</li>
</ul>
<h2>[2.58.9] - 2025-08-11</h2>
<ul>
<li>Update <code>cargo-shear@latest</code> to 1.5.0.</li>
</ul>
<h2>[2.58.8] - 2025-08-11</h2>
<ul>
<li>Update <code>osv-scanner@latest</code> to 2.2.1.</li>
</ul>
<h2>[2.58.7] - 2025-08-11</h2>
<ul>
<li>
<p>Update <code>knope@latest</code> to 0.21.2.</p>
</li>
<li>
<p>Update <code>cyclonedx@latest</code> to 0.29.1.</p>
</li>
</ul>
<h2>[2.58.6] - 2025-08-10</h2>
<ul>
<li>Update <code>cargo-semver-checks@latest</code> to 0.43.0.</li>
</ul>
<h2>[2.58.5] - 2025-08-10</h2>
<ul>
<li>
<p>Update <code>knope@latest</code> to 0.21.1.</p>
</li>
<li>
<p>Update <code>cargo-binstall@latest</code> to 1.14.4.</p>
</li>
</ul>
<h2>[2.58.4] - 2025-08-09</h2>
<ul>
<li>
<p>Update <code>typos@latest</code> to 1.35.3.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.30.0.</p>
</li>
</ul>
<h2>[2.58.3] - 2025-08-08</h2>
<ul>
<li>Update <code>typos@latest</code> to 1.35.2.</li>
</ul>
<h2>[2.58.2] - 2025-08-07</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2c73a741d1"><code>2c73a74</code></a>
Release 2.58.9</li>
<li><a
href="424d851274"><code>424d851</code></a>
Update <code>cargo-shear@latest</code> to 1.5.0</li>
<li><a
href="c6d88ff920"><code>c6d88ff</code></a>
Release 2.58.8</li>
<li><a
href="c44ead199b"><code>c44ead1</code></a>
Update <code>osv-scanner@latest</code> to 2.2.1</li>
<li><a
href="1fd1160ee1"><code>1fd1160</code></a>
Release 2.58.7</li>
<li><a
href="a56809b7da"><code>a56809b</code></a>
Update <code>knope@latest</code> to 0.21.2</li>
<li><a
href="4af683f0e4"><code>4af683f</code></a>
Update <code>cyclonedx@latest</code> to 0.29.1</li>
<li><a
href="5f6f3e0538"><code>5f6f3e0</code></a>
Release 2.58.6</li>
<li><a
href="0a75db001a"><code>0a75db0</code></a>
Update <code>cargo-semver-checks@latest</code> to 0.43.0</li>
<li><a
href="a50f5c5668"><code>a50f5c5</code></a>
Release 2.58.5</li>
<li>Additional commits viewable in <a
href="a416ddeedb...2c73a741d1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.57.1&new-version=2.58.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 13:32:25 -07:00
Orhun Parmaksız
01067efd1c chore(changelog): allow running git-cliff without release-plz (#2031)
This is probably not optimal because we won't have access to the current
`{package}` while running `git-cliff` but at least it will run _just_
fine.

While at it, I changed something in the commit parsers to avoid adding
dependency updates to the changelog.

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-08-09 20:21:59 +03:00
Josh McKinney
ae4f42f5ae chore(deps): use less specific versions in manifests (#2041)
The goal of this is to reduce dependabot updates to generally only
Cargo.lock updates

- Use "0.x" or "x" as the version generally.
- Specify versions only in the workspace manifest
- Bump versions to latest semver compatible (and update rstest / lru /
  criterion deps)
2025-08-05 02:25:15 -07:00
LitoMore
9998000e36 docs: use shields.io badge (#2040)
Related to:
- https://github.com/simple-icons/simple-icons/pull/13593
- https://github.com/ratatui/ratatui/pull/1967

The Ratatui icon is available on shields.io now ✌️

And it's customizable. There are more configurations at
https://shields.io/badges.

Here are some examples:

```markdown
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)
![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)
![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)
```

![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff)
![](https://img.shields.io/badge/Ratatui-fff?logo=ratatui&logoColor=000)

![](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui&logoColor=fff&labelColor=000&color=fff)

![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=flat-square)

![](https://img.shields.io/badge/Ratatui-000?logo=ratatui&logoColor=fff&style=for-the-badge)

I also created a PR to the ratatui-website project to update the badge.
Here is the PR:

- https://github.com/ratatui/ratatui-website/pull/924
2025-08-04 17:32:32 -07:00
Josh McKinney
8188ed3950 feat: implement UnicodeWidthStr for Text/Line/Span (#2030)
You can now calculate the width of any Text/Line/Span using the
UnicodeWidthStr trait instead of the width method on the type. This also
makes it possible to use the width_cjk() method if needed.
2025-08-01 10:50:09 -07:00
dependabot[bot]
5e75278499 build(deps): bump taiki-e/install-action from 2.56.19 to 2.57.1 (#2020) 2025-08-01 07:43:58 +02:00
Josh McKinney
71ef65b624 docs: add section on collaborative development to contributing doc (#2029) 2025-07-30 14:01:34 -07:00
Josh McKinney
c845fec765 feat: add conversion from Size to Rect (#2028)
`Rect::from(size)` returns a new Rect at the origin (0, 0) with the
specified `Size`
2025-07-30 11:25:21 -07:00
Jagoda Estera Ślązak
0afb1a99af chore: ignore beta and rc tags in cliff.toml (#2025) 2025-07-29 15:25:30 -07:00
Jagoda Estera Ślązak
5ae224b244 chore: prepare for beta release (#2022) 2025-07-29 09:45:40 +02:00
dependabot[bot]
cd90671a8b build(deps): bump release-plz/action from 0.5.109 to 0.5.110 (#2021)
Bumps [release-plz/action](https://github.com/release-plz/action) from
0.5.109 to 0.5.110.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-plz/action/releases">release-plz/action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.110</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.139 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/211">release-plz/action#211</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.110">https://github.com/release-plz/action/compare/v0.5...v0.5.110</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ccf6dd9984"><code>ccf6dd9</code></a>
Update to 0.3.139 (<a
href="https://redirect.github.com/release-plz/action/issues/211">#211</a>)</li>
<li>See full diff in <a
href="068d76d2aa...ccf6dd9984">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-plz/action&package-manager=github_actions&previous-version=0.5.109&new-version=0.5.110)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 23:30:36 -07:00
dependabot[bot]
08040b893e build(deps): bump tokio from 1.46.1 to 1.47.0 (#2019)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.46.1 to 1.47.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.47.0</h2>
<h1>1.47.0 (July 25th, 2025)</h1>
<p>This release adds <code>poll_proceed</code> and
<code>cooperative</code> to the <code>coop</code> module for
cooperative scheduling, adds <code>SetOnce</code> to the
<code>sync</code> module which provides
similar functionality to [<code>std::sync::OnceLock</code>], and adds a
new method
<code>sync::Notify::notified_owned()</code> which returns an
<code>OwnedNotified</code> without
a lifetime parameter.</p>
<h2>Added</h2>
<ul>
<li>coop: add <code>cooperative</code> and <code>poll_proceed</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7405">#7405</a>)</li>
<li>sync: add <code>SetOnce</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7418">#7418</a>)</li>
<li>sync: add <code>sync::Notify::notified_owned()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7465">#7465</a>)</li>
</ul>
<h2>Changed</h2>
<ul>
<li>deps: upgrade windows-sys 0.52 → 0.59 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7117">#7117</a>)</li>
<li>deps: update to socket2 v0.6 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7443">#7443</a>)</li>
<li>sync: improve <code>AtomicWaker::wake</code> performance (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7450">#7450</a>)</li>
</ul>
<h2>Documented</h2>
<ul>
<li>metrics: fix listed feature requirements for some metrics (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7449">#7449</a>)</li>
<li>runtime: improve safety comments of <code>Readiness&lt;'_&gt;</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7415">#7415</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/7405">#7405</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7405">tokio-rs/tokio#7405</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7415">#7415</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7415">tokio-rs/tokio#7415</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7418">#7418</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7418">tokio-rs/tokio#7418</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7449">#7449</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7449">tokio-rs/tokio#7449</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7450">#7450</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7450">tokio-rs/tokio#7450</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7465">#7465</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7465">tokio-rs/tokio#7465</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3911cb8523"><code>3911cb8</code></a>
chore: prepare Tokio v1.47.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7482">#7482</a>)</li>
<li><a
href="d545aa2601"><code>d545aa2</code></a>
sync: add <code>sync::Notify::notified_owned()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7465">#7465</a>)</li>
<li><a
href="911ab21d70"><code>911ab21</code></a>
sync: add <code>SetOnce</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7418">#7418</a>)</li>
<li><a
href="9e94fa7e15"><code>9e94fa7</code></a>
task: remove raw-entry feature from hashbrown dep (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7252">#7252</a>)</li>
<li><a
href="0d234c3cf9"><code>0d234c3</code></a>
ci: unfreeze wasm-unknown-unknown from rustc 1.81 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7471">#7471</a>)</li>
<li><a
href="3754e059b6"><code>3754e05</code></a>
ci: use ubuntu-24.04-arm instead of ubuntu-22.04-arm (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7470">#7470</a>)</li>
<li><a
href="6d868d96ce"><code>6d868d9</code></a>
sync: fix <code>CancellationToken</code> failing to cancel the ready
futures (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7462">#7462</a>)</li>
<li><a
href="0a3fe46086"><code>0a3fe46</code></a>
sync: remove duplicated code in <code>OnceCell</code> tests (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7458">#7458</a>)</li>
<li><a
href="154d7d5fe6"><code>154d7d5</code></a>
ci: cleanup legacy <code>R-loom-multi-thread-alt</code> label from the
labeler (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7457">#7457</a>)</li>
<li><a
href="611b793356"><code>611b793</code></a>
coop: add <code>cooperative</code> and <code>poll_proceed</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7405">#7405</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.46.1...tokio-1.47.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.46.1&new-version=1.47.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 23:30:01 -07:00
Jagoda Estera Ślązak
cba5cca2bd docs: update heading image for Ratatui 0.30.0 release 🎉 (#2000)
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-07-25 14:30:36 -07:00
Josh McKinney
c01b7d43ea ci: remove old release workflows (#2015) 2025-07-25 14:28:37 -07:00
Josh McKinney
9836f0760d docs: add AI contribution guidelines (#2013) 2025-07-25 12:10:14 -07:00
dependabot[bot]
bce6604379 build(deps): bump taiki-e/install-action from 2.56.13 to 2.56.19 (#2006)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.56.13 to 2.56.19.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.56.19</h2>
<ul>
<li>Update <code>cargo-llvm-cov@latest</code> to 0.6.18.</li>
</ul>
<h2>2.56.18</h2>
<ul>
<li>Update <code>just@latest</code> to 1.42.3.</li>
</ul>
<h2>2.56.17</h2>
<ul>
<li>Update <code>wasmtime@latest</code> to 34.0.2.</li>
</ul>
<h2>2.56.16</h2>
<ul>
<li>
<p>Update <code>cargo-zigbuild@latest</code> to 0.20.1.</p>
</li>
<li>
<p>Update <code>cargo-lambda@latest</code> to 1.8.6.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.17.6.</p>
</li>
<li>
<p>Update <code>earthly@latest</code> to 0.8.16.</p>
</li>
</ul>
<h2>2.56.15</h2>
<ul>
<li>
<p>Fix <code>cargo-valgrind</code> installation error due to their tag
rename.</p>
</li>
<li>
<p>Update <code>cargo-valgrind@latest</code> to 2.3.2.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.42.2.</p>
</li>
</ul>
<h2>2.56.14</h2>
<ul>
<li>
<p>Update <code>zola@latest</code> to 0.21.0.</p>
</li>
<li>
<p>Update <code>wait-for-them@latest</code> to 0.5.1.</p>
</li>
<li>
<p>Update <code>mdbook@latest</code> to 0.4.52.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.42.1.</p>
</li>
<li>
<p>Update <code>cargo-shear@latest</code> to 1.4.0.</p>
</li>
<li>
<p>Update <code>cyclonedx@latest</code> to 0.29.0.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.56.19] - 2025-07-19</h2>
<ul>
<li>Update <code>cargo-llvm-cov@latest</code> to 0.6.18.</li>
</ul>
<h2>[2.56.18] - 2025-07-19</h2>
<ul>
<li>Update <code>just@latest</code> to 1.42.3.</li>
</ul>
<h2>[2.56.17] - 2025-07-18</h2>
<ul>
<li>Update <code>wasmtime@latest</code> to 34.0.2.</li>
</ul>
<h2>[2.56.16] - 2025-07-18</h2>
<ul>
<li>
<p>Update <code>cargo-zigbuild@latest</code> to 0.20.1.</p>
</li>
<li>
<p>Update <code>cargo-lambda@latest</code> to 1.8.6.</p>
</li>
<li>
<p>Update <code>vacuum@latest</code> to 0.17.6.</p>
</li>
<li>
<p>Update <code>earthly@latest</code> to 0.8.16.</p>
</li>
</ul>
<h2>[2.56.15] - 2025-07-16</h2>
<ul>
<li>
<p>Fix <code>cargo-valgrind</code> installation error due to their tag
rename.</p>
</li>
<li>
<p>Update <code>cargo-valgrind@latest</code> to 2.3.2.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.42.2.</p>
</li>
</ul>
<h2>[2.56.14] - 2025-07-15</h2>
<ul>
<li>
<p>Update <code>zola@latest</code> to 0.21.0.</p>
</li>
<li>
<p>Update <code>wait-for-them@latest</code> to 0.5.1.</p>
</li>
<li>
<p>Update <code>mdbook@latest</code> to 0.4.52.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c99cc51b30"><code>c99cc51</code></a>
Release 2.56.19</li>
<li><a
href="35aa282e0f"><code>35aa282</code></a>
Update <code>cargo-llvm-cov@latest</code> to 0.6.18</li>
<li><a
href="8962e8bc90"><code>8962e8b</code></a>
Release 2.56.18</li>
<li><a
href="86ed27786e"><code>86ed277</code></a>
Update <code>just@latest</code> to 1.42.3</li>
<li><a
href="d8fcd11e5f"><code>d8fcd11</code></a>
Release 2.56.17</li>
<li><a
href="03efa19be6"><code>03efa19</code></a>
Update readme</li>
<li><a
href="14dc975de9"><code>14dc975</code></a>
ci: Fix debian 10 setup</li>
<li><a
href="00c7072f52"><code>00c7072</code></a>
Update wasmtime manifest</li>
<li><a
href="8520ed0913"><code>8520ed0</code></a>
Release 2.56.16</li>
<li><a
href="56de642f63"><code>56de642</code></a>
Update <code>cargo-zigbuild@latest</code> to 0.20.1</li>
<li>Additional commits viewable in <a
href="c07504cae0...c99cc51b30">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.56.13&new-version=2.56.19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 13:27:03 -07:00
dependabot[bot]
c8d5d385b3 build(deps): bump release-plz/action from 0.5.108 to 0.5.109 (#2008)
Bumps [release-plz/action](https://github.com/release-plz/action) from
0.5.108 to 0.5.109.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-plz/action/releases">release-plz/action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.109</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to 0.3.138 by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/release-plz/action/pull/210">release-plz/action#210</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-plz/action/compare/v0.5...v0.5.109">https://github.com/release-plz/action/compare/v0.5...v0.5.109</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="068d76d2aa"><code>068d76d</code></a>
Update to 0.3.138 (<a
href="https://redirect.github.com/release-plz/action/issues/210">#210</a>)</li>
<li>See full diff in <a
href="8724d33cd9...068d76d2aa">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-plz/action&package-manager=github_actions&previous-version=0.5.108&new-version=0.5.109)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 13:26:38 -07:00
dependabot[bot]
3fe3fe316e build(deps): bump marocchino/sticky-pull-request-comment from 2.9.3 to 2.9.4 (#2011)
Bumps
[marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment)
from 2.9.3 to 2.9.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/marocchino/sticky-pull-request-comment/releases">marocchino/sticky-pull-request-comment's
releases</a>.</em></p>
<blockquote>
<h2>v2.9.4</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps-dev): Bump <code>@​biomejs/biome</code> from 2.0.0 to
2.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1554">marocchino/sticky-pull-request-comment#1554</a></li>
<li>build(deps-dev): Bump <code>@​types/node</code> from 24.0.3 to
24.0.11 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1561">marocchino/sticky-pull-request-comment#1561</a></li>
<li>build(deps-dev): Bump <code>@​biomejs/biome</code> from 2.0.4 to
2.1.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1562">marocchino/sticky-pull-request-comment#1562</a></li>
<li>build(deps-dev): Bump <code>@​types/node</code> from 24.0.11 to
24.0.12 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1563">marocchino/sticky-pull-request-comment#1563</a></li>
<li>build(deps-dev): Bump <code>@​types/node</code> from 24.0.12 to
24.0.13 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1564">marocchino/sticky-pull-request-comment#1564</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/marocchino/sticky-pull-request-comment/compare/v2.9.3...v2.9.4">https://github.com/marocchino/sticky-pull-request-comment/compare/v2.9.3...v2.9.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="773744901b"><code>7737449</code></a>
📦️ Build</li>
<li><a
href="8b423c6fac"><code>8b423c6</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1564">#1564</a>
from marocchino/dependabot/npm_and_yarn/types/node-2...</li>
<li><a
href="3ac8a744e4"><code>3ac8a74</code></a>
build(deps-dev): Bump <code>@​types/node</code> from 24.0.12 to
24.0.13</li>
<li><a
href="e430cfc2fc"><code>e430cfc</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1563">#1563</a>
from marocchino/dependabot/npm_and_yarn/types/node-2...</li>
<li><a
href="99f9378b47"><code>99f9378</code></a>
build(deps-dev): Bump <code>@​types/node</code> from 24.0.11 to
24.0.12</li>
<li><a
href="2216b3aa26"><code>2216b3a</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1562">#1562</a>
from marocchino/dependabot/npm_and_yarn/biomejs/biom...</li>
<li><a
href="482d7fd7d6"><code>482d7fd</code></a>
build(deps-dev): Bump <code>@​biomejs/biome</code> from 2.0.4 to
2.1.1</li>
<li><a
href="c2da581914"><code>c2da581</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1561">#1561</a>
from marocchino/dependabot/npm_and_yarn/types/node-2...</li>
<li><a
href="76f84622bc"><code>76f8462</code></a>
build(deps-dev): Bump <code>@​types/node</code> from 24.0.3 to
24.0.11</li>
<li><a
href="246151aa30"><code>246151a</code></a>
⬆️ Update biome</li>
<li>Additional commits viewable in <a
href="d2ad0de260...773744901b">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=marocchino/sticky-pull-request-comment&package-manager=github_actions&previous-version=2.9.3&new-version=2.9.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 13:25:49 -07:00
dependabot[bot]
0f10944ca0 build(deps): bump strum from 0.27.1 to 0.27.2 (#2009)
Bumps [strum](https://github.com/Peternator7/strum) from 0.27.1 to
0.27.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Peternator7/strum/releases">strum's
releases</a>.</em></p>
<blockquote>
<h2>v0.27.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Adding support for doc comments on <code>EnumDiscriminants</code>
generated type… by <a
href="https://github.com/linclelinkpart5"><code>@​linclelinkpart5</code></a>
in <a
href="https://redirect.github.com/Peternator7/strum/pull/141">Peternator7/strum#141</a></li>
<li>Drop needless <code>rustversion</code> dependency by <a
href="https://github.com/paolobarbolini"><code>@​paolobarbolini</code></a>
in <a
href="https://redirect.github.com/Peternator7/strum/pull/446">Peternator7/strum#446</a></li>
<li>Upgrade <code>phf</code> to v0.12 by <a
href="https://github.com/paolobarbolini"><code>@​paolobarbolini</code></a>
in <a
href="https://redirect.github.com/Peternator7/strum/pull/448">Peternator7/strum#448</a></li>
<li>allow discriminants on empty enum by <a
href="https://github.com/crop2000"><code>@​crop2000</code></a> in <a
href="https://redirect.github.com/Peternator7/strum/pull/435">Peternator7/strum#435</a></li>
<li>Remove broken link to EnumTable docs by <a
href="https://github.com/schneems"><code>@​schneems</code></a> in <a
href="https://redirect.github.com/Peternator7/strum/pull/427">Peternator7/strum#427</a></li>
<li>Change enum table callbacks to FnMut. by <a
href="https://github.com/ClaytonKnittel"><code>@​ClaytonKnittel</code></a>
in <a
href="https://redirect.github.com/Peternator7/strum/pull/443">Peternator7/strum#443</a></li>
<li>Add <code>#[automatically_derived]</code> to the <code>impl</code>s
by <a
href="https://github.com/dandedotdev"><code>@​dandedotdev</code></a> in
<a
href="https://redirect.github.com/Peternator7/strum/pull/444">Peternator7/strum#444</a></li>
<li>Implement a <code>suffix</code> attribute for serialization of enum
variants by <a
href="https://github.com/amogh-dambal"><code>@​amogh-dambal</code></a>
in <a
href="https://redirect.github.com/Peternator7/strum/pull/440">Peternator7/strum#440</a></li>
<li>Expound upon use_phf docs by <a
href="https://github.com/Peternator7"><code>@​Peternator7</code></a> in
<a
href="https://redirect.github.com/Peternator7/strum/pull/449">Peternator7/strum#449</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/paolobarbolini"><code>@​paolobarbolini</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/446">Peternator7/strum#446</a></li>
<li><a href="https://github.com/crop2000"><code>@​crop2000</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/435">Peternator7/strum#435</a></li>
<li><a href="https://github.com/schneems"><code>@​schneems</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/427">Peternator7/strum#427</a></li>
<li><a
href="https://github.com/ClaytonKnittel"><code>@​ClaytonKnittel</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/443">Peternator7/strum#443</a></li>
<li><a
href="https://github.com/dandedotdev"><code>@​dandedotdev</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/444">Peternator7/strum#444</a></li>
<li><a
href="https://github.com/amogh-dambal"><code>@​amogh-dambal</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/440">Peternator7/strum#440</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Peternator7/strum/compare/v0.27.1...v0.27.2">https://github.com/Peternator7/strum/compare/v0.27.1...v0.27.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Peternator7/strum/blob/master/CHANGELOG.md">strum's
changelog</a>.</em></p>
<blockquote>
<h2>0.27.2</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/141">#141</a>:
Adding support for doc comments on <code>EnumDiscriminants</code>
generated type.</p>
<ul>
<li>The doc comment will be copied from the variant on the type
itself.</li>
</ul>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/435">#435</a>:allow
discriminants on empty enum.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/443">#443</a>:
Change enum table callbacks to FnMut.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/444">#444</a>:
Add <code>#[automatically_derived]</code> to the <code>impl</code>s by
<a href="https://github.com/dandedotdev"><code>@​dandedotdev</code></a>
in <a
href="https://redirect.github.com/Peternator7/strum/pull/444">Peternator7/strum#444</a></p>
<ul>
<li>This should make the linter less noisy with warnings in generated
code.</li>
</ul>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/440">#440</a>:
Implement a <code>suffix</code> attribute for serialization of enum
variants.</p>
<pre lang="rust"><code>#[derive(strum::Display)]
#[strum(suffix=&quot;.json&quot;)]
#[strum(serialize_all=&quot;snake_case&quot;)]
enum StorageConfiguration {
  PostgresProvider,
  S3StorageProvider,
  AzureStorageProvider,
}
<p>fn main() {
let response = SurveyResponse::Other(&quot;It was good&quot;.into());
println!(&quot;Loading configuration from: {}&quot;,
StorageConfiguration::PostgresProvider);
// prints: Loaded Configuration from: postgres_provider.json
}
</code></pre></p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/446">#446</a>:
Drop needless <code>rustversion</code> dependency.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="38f66210e7"><code>38f6621</code></a>
Expound upon use_phf docs (<a
href="https://redirect.github.com/Peternator7/strum/issues/449">#449</a>)</li>
<li><a
href="bb1339026b"><code>bb13390</code></a>
Implement a <code>suffix</code> attribute for serialization of enum
variants (<a
href="https://redirect.github.com/Peternator7/strum/issues/440">#440</a>)</li>
<li><a
href="c9e52bfd28"><code>c9e52bf</code></a>
Add <code>#[automatically_derived]</code> to the <code>impl</code>s (<a
href="https://redirect.github.com/Peternator7/strum/issues/444">#444</a>)</li>
<li><a
href="1b00f899e5"><code>1b00f89</code></a>
Change enum table callbacks to FnMut. (<a
href="https://redirect.github.com/Peternator7/strum/issues/443">#443</a>)</li>
<li><a
href="6e2ca25fba"><code>6e2ca25</code></a>
Remove broken link to EnumTable docs (<a
href="https://redirect.github.com/Peternator7/strum/issues/427">#427</a>)</li>
<li><a
href="9503781141"><code>9503781</code></a>
allow discriminants on empty enum (<a
href="https://redirect.github.com/Peternator7/strum/issues/435">#435</a>)</li>
<li><a
href="8553ba2845"><code>8553ba2</code></a>
Upgrade <code>phf</code> to v0.12 (<a
href="https://redirect.github.com/Peternator7/strum/issues/448">#448</a>)</li>
<li><a
href="2eba5c2a5c"><code>2eba5c2</code></a>
Drop needless <code>rustversion</code> dependency (<a
href="https://redirect.github.com/Peternator7/strum/issues/446">#446</a>)</li>
<li><a
href="f301b67d91"><code>f301b67</code></a>
Merge branch 'linclelinkpart5-master-2'</li>
<li><a
href="455b2bf859"><code>455b2bf</code></a>
Merge branch 'master' of <a
href="https://github.com/linclelinkpart5/strum">https://github.com/linclelinkpart5/strum</a>
into lincle...</li>
<li>See full diff in <a
href="https://github.com/Peternator7/strum/compare/v0.27.1...v0.27.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=strum&package-manager=cargo&previous-version=0.27.1&new-version=0.27.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 21:55:41 +02:00
dependabot[bot]
1bd3181d8e build(deps): bump instability from 0.3.7 to 0.3.9 (#2007)
Bumps [instability](https://github.com/ratatui/instability) from 0.3.7
to 0.3.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/releases">instability's
releases</a>.</em></p>
<blockquote>
<h2>instability-example-v0.3.9</h2>
<h3>Other</h3>
<ul>
<li>Add #[allow(unused_imports)] lint to unstable reexports (<a
href="https://redirect.github.com/ratatui/instability/pull/21">#21</a>)</li>
</ul>
<h2>instability-v0.3.9</h2>
<h3>Other</h3>
<ul>
<li>split release jobs, fixup permissions (<a
href="https://redirect.github.com/ratatui/instability/pull/28">#28</a>)</li>
</ul>
<h2>instability-example-v0.3.8</h2>
<h3>Other</h3>
<ul>
<li>Add #[allow(unused_imports)] lint to unstable reexports (<a
href="https://redirect.github.com/ratatui/instability/pull/21">#21</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/blob/main/CHANGELOG.md">instability's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.8...instability-v0.3.9">0.3.9</a>
- 2025-07-18</h2>
<h3>Other</h3>
<ul>
<li>split release jobs, fixup permissions (<a
href="https://redirect.github.com/ratatui/instability/pull/28">#28</a>)</li>
</ul>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.7...instability-v0.3.8">0.3.8</a>
- 2025-07-11</h2>
<h3>Added</h3>
<ul>
<li>Add <code>instability_disable_unstable_docs</code> RUSTFLAGS (<a
href="https://redirect.github.com/ratatui/instability/pull/23">#23</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4cf23b4370"><code>4cf23b4</code></a>
chore: release v0.3.9 (<a
href="https://redirect.github.com/ratatui/instability/issues/29">#29</a>)</li>
<li><a
href="d88afd18b7"><code>d88afd1</code></a>
ci: split release jobs, fixup permissions (<a
href="https://redirect.github.com/ratatui/instability/issues/28">#28</a>)</li>
<li><a
href="f88acb150e"><code>f88acb1</code></a>
ci: configure trusted publishing (<a
href="https://redirect.github.com/ratatui/instability/issues/27">#27</a>)</li>
<li><a
href="5bf7467800"><code>5bf7467</code></a>
chore: replace ratatui-org with ratatui everywhere (<a
href="https://redirect.github.com/ratatui/instability/issues/26">#26</a>)</li>
<li><a
href="d0fc40644f"><code>d0fc406</code></a>
chore: release v0.3.8 (<a
href="https://redirect.github.com/ratatui/instability/issues/24">#24</a>)</li>
<li><a
href="4d899fea50"><code>4d899fe</code></a>
feat: Add <code>instability_disable_unstable_docs</code> RUSTFLAGS (<a
href="https://redirect.github.com/ratatui/instability/issues/23">#23</a>)</li>
<li>See full diff in <a
href="https://github.com/ratatui/instability/compare/instability-v0.3.7...instability-v0.3.9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=instability&package-manager=cargo&previous-version=0.3.7&new-version=0.3.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 21:53:00 +02:00
dependabot[bot]
e04fef7354 build(deps): bump serde_json from 1.0.140 to 1.0.141 (#2005)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.140 to
1.0.141.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.141</h2>
<ul>
<li>Optimize string escaping during serialization (<a
href="https://redirect.github.com/serde-rs/json/issues/1273">#1273</a>,
thanks <a
href="https://github.com/conradludgate"><code>@​conradludgate</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6843c3660e"><code>6843c36</code></a>
Release 1.0.141</li>
<li><a
href="6e2c21063a"><code>6e2c210</code></a>
Touch up PR 1273</li>
<li><a
href="623d9b47cf"><code>623d9b4</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1273">#1273</a>
from conradludgate/optimise-string-escaping</li>
<li><a
href="de70b7db1f"><code>de70b7d</code></a>
use unreachable_unchecked for escape table. use a second match to
roundtrip E...</li>
<li><a
href="f2d940dd54"><code>f2d940d</code></a>
replace start index with bytes slice reference</li>
<li><a
href="cd55b5a0ff"><code>cd55b5a</code></a>
Ignore mismatched_lifetime_syntaxes lint</li>
<li><a
href="c1826ebccc"><code>c1826eb</code></a>
Pin nightly toolchain used for miri job</li>
<li><a
href="8a56cfa6d0"><code>8a56cfa</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1248">#1248</a>
from jimmycathy/master</li>
<li><a
href="af3d80de56"><code>af3d80d</code></a>
chore: fix typo</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.140...v1.0.141">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.140&new-version=1.0.141)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 22:34:26 +03:00
dependabot[bot]
bbca3870d5 build(deps): bump rand from 0.9.1 to 0.9.2 (#2010)
Bumps [rand](https://github.com/rust-random/rand) from 0.9.1 to 0.9.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-random/rand/blob/master/CHANGELOG.md">rand's
changelog</a>.</em></p>
<blockquote>
<h2>[0.9.2 — 2025-07-20]</h2>
<h3>Deprecated</h3>
<ul>
<li>Deprecate <code>rand::rngs::mock</code> module and
<code>StepRng</code> generator (<a
href="https://redirect.github.com/rust-random/rand/issues/1634">#1634</a>)</li>
</ul>
<h3>Additions</h3>
<ul>
<li>Enable <code>WeightedIndex&lt;usize&gt;</code> (de)serialization (<a
href="https://redirect.github.com/rust-random/rand/issues/1646">#1646</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d3dd415705"><code>d3dd415</code></a>
Prepare rand_core 0.9.2 (<a
href="https://redirect.github.com/rust-random/rand/issues/1605">#1605</a>)</li>
<li><a
href="99fabd20e9"><code>99fabd2</code></a>
Prepare rand_core 0.9.2</li>
<li><a
href="c7fe1c43b5"><code>c7fe1c4</code></a>
rand: re-export <code>rand_core</code> (<a
href="https://redirect.github.com/rust-random/rand/issues/1604">#1604</a>)</li>
<li><a
href="db2b1e0bb4"><code>db2b1e0</code></a>
rand: re-export <code>rand_core</code></li>
<li><a
href="ee1d96f9f5"><code>ee1d96f</code></a>
rand_core: implement reborrow for <code>UnwrapMut</code> (<a
href="https://redirect.github.com/rust-random/rand/issues/1595">#1595</a>)</li>
<li><a
href="e0eb2ee0fc"><code>e0eb2ee</code></a>
rand_core: implement reborrow for <code>UnwrapMut</code></li>
<li><a
href="975f602f5d"><code>975f602</code></a>
fixup clippy 1.85 warnings</li>
<li><a
href="775b05be1b"><code>775b05b</code></a>
Relax <code>Sized</code> requirements for blanket impls (<a
href="https://redirect.github.com/rust-random/rand/issues/1593">#1593</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-random/rand/compare/rand_core-0.9.1...rand_core-0.9.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rand&package-manager=cargo&previous-version=0.9.1&new-version=0.9.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 22:33:35 +03:00
Austin Schey
1fe64de09a fix: include underline color in anstyle conversion (#2004)
Underline color wasn't included in the style conversion logic.
2025-07-20 17:07:29 -07:00
kenji
72334ed61c docs(layout): Update documentation to point to kasuari solver (#2003) 2025-07-20 13:07:20 -07:00
Jagoda Estera Ślązak
c1b8528b69 fix: panic when rendering widgets on too small buffer (#1996)
Fixes panic on overflow on horizontal `Barchart` and `RatatuiMascot` and adds proper tests to all widgets.

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-07-20 21:39:18 +02:00
Dheepak Krishnamurthy
cfebd68e18 chore: Fix typo in CONTRIBUTING.md (#2001)
Removes a hanging opening code block:

````
```suggestion
````
2025-07-20 06:11:27 +02:00
Josh McKinney
572749f388 chore: update contributing guidelines and add copilot-instructions (#1998)
See
https://docs.github.com/en/copilot/how-tos/agents/copilot-code-review/using-copilot-code-review

These instructions will be used by copilot when it performs automated PR
reviews, and helps provide guardrails for our standards. Over time we
might grow these to capture any consistent problems that we start seeing
when reviewing.

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-07-19 16:02:13 -07:00
David Tolnay
cdf189e15a build(deps): allow using ratatui with unicode-width 0.2.1 (#1999)
According to the issue linked from Cargo.toml, the intention has been to
manually upgrade unicode-width every now and then, after verifying that
the new version does not disrupt Ratatui. See
https://github.com/ratatui/ratatui/issues/1271#issuecomment-2373917195.

This PR unblocks using Ratatui in a dependency graph where some other
crate requires some of the fixes that landed in unicode-width 0.2.1.
Without this PR, Cargo blocks Ratatui from being used.

```console
error: failed to select a version for `unicode-width`.
    ... required by package `ratatui v0.29.0`
    ... which satisfies dependency `ratatui = "^0.29"` of package `cargo v0.91.0`
    ... which satisfies path dependency `cargo` (locked to 0.91.0) of package `repro v0.0.0`
versions that meet the requirements `=0.2.0` are: 0.2.0

all possible versions conflict with previously selected packages.

  previously selected package `unicode-width v0.2.1`
    ... which satisfies dependency `unicode-width = "^0.2.1"` of package `cargo v0.91.0`
    ... which satisfies path dependency `cargo` (locked to 0.91.0) of package `repro v0.0.0`

failed to select a version for `unicode-width` which could resolve this conflict
```
2025-07-19 15:23:20 -07:00
Tyler Breisacher
98f85b8650 docs: update link to scrollable widgets RFC (#1994) 2025-07-16 07:19:46 +02:00
Josh McKinney
0148b62f0c chore: remove cargo_metadata dep from xtask (#1993)
Removed due to hard N-2 MSRV requirement, whereas we use a soft N-2
(only update when necessary). This makes it painful to be able to test
our actual msrv (as the xtask has to be built with the version that its
deps support, while still wanting to check the msrv version, so we'd end
up with 2 versions in the one CI task and this would get annoying to
check).

See https://github.com/rust-lang/cargo/issues/15746 for more details.

Partially implements #1820 - mainly as a problem solution rather than a
specific goal to use cargo-hack
2025-07-15 15:05:18 -07:00
Josh McKinney
9bc573931c chore: remove clap-cargo from xtask (#1992)
Removed to avoid needing to bump our msrv. See
https://github.com/rust-lang/cargo/issues/15746\#issuecomment-3071774343
for more details.
2025-07-14 21:54:38 -07:00
dependabot[bot]
64e6d1953c build(deps): bump rust-lang/crates-io-auth-action from 1.0.0 to 1.0.1 (#1989)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rust-lang/crates-io-auth-action&package-manager=github_actions&previous-version=1.0.0&new-version=1.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-07-14 13:38:55 -07:00
dependabot[bot]
c0148a00fe build(deps): bump taiki-e/install-action from 2.56.7 to 2.56.13 (#1991)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.56.7&new-version=2.56.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 13:30:49 -07:00
dependabot[bot]
44727c7b4a build(deps): bump cargo_metadata from 0.20.0 to 0.21.0 (#1987)
Bumps [cargo_metadata](https://github.com/oli-obk/cargo_metadata) from
0.20.0 to 0.21.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="70018a8681"><code>70018a8</code></a>
Update main.yml</li>
<li><a
href="523cfbe7f0"><code>523cfbe</code></a>
bump msrv</li>
<li><a
href="b1a61d390f"><code>b1a61d3</code></a>
bump version</li>
<li><a
href="0f300d5bff"><code>0f300d5</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/295">#295</a>
from smoelius/update-cargo-util-schemas</li>
<li><a
href="4b28226e26"><code>4b28226</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/300">#300</a>
from joeferner/fix-node-dep-name</li>
<li><a
href="bcd2373560"><code>bcd2373</code></a>
fix clippy errors</li>
<li><a
href="73aaebb077"><code>73aaebb</code></a>
fixes &quot;package name cannot be empty&quot; under
&quot;resolve/nodes/deps/name&quot;</li>
<li><a
href="f9a67c2023"><code>f9a67c2</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/298">#298</a>
from kornelski/result</li>
<li><a
href="289e1173da"><code>289e117</code></a>
Make Result alias wildcard-import-proof</li>
<li><a
href="a9147a68d0"><code>a9147a6</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/297">#297</a>
from ranger-ross/build-dir-unstable-support</li>
<li>Additional commits viewable in <a
href="https://github.com/oli-obk/cargo_metadata/compare/0.20.0...0.21.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cargo_metadata&package-manager=cargo&previous-version=0.20.0&new-version=0.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 11:35:41 -07:00
dependabot[bot]
1e9d1253f9 build(deps): bump clap from 4.5.40 to 4.5.41 (#1988)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.40 to 4.5.41.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.41] - 2025-07-09</h2>
<h3>Features</h3>
<ul>
<li>Add <code>Styles::context</code> and
<code>Styles::context_value</code> to customize the styling of
<code>[default: value]</code> like notes in the <code>--help</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="92fcd83b76"><code>92fcd83</code></a>
chore: Release</li>
<li><a
href="aca91b99c1"><code>aca91b9</code></a>
docs: Update changelog</li>
<li><a
href="8434510cee"><code>8434510</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5869">#5869</a>
from tw4452852/patch-1</li>
<li><a
href="33b1fc304e"><code>33b1fc3</code></a>
fix(complete): Fix env leakage in elvish dynamic completion</li>
<li><a
href="e5f1f4884c"><code>e5f1f48</code></a>
chore: Release</li>
<li><a
href="9466a552fb"><code>9466a55</code></a>
docs: Update changelog</li>
<li><a
href="d74b793512"><code>d74b793</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5865">#5865</a>
from gifnksm/nushell-completion-value-types</li>
<li><a
href="ecbc775d3b"><code>ecbc775</code></a>
fix(nu): Set argument type based on <code>ValueHint</code></li>
<li><a
href="6784054536"><code>6784054</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5857">#5857</a>
from epage/empty</li>
<li><a
href="cca5f32b3a"><code>cca5f32</code></a>
test(complete): Show empty option-value behavior</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.40...clap_complete-v4.5.41">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.40&new-version=4.5.41)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 11:25:23 -07:00
dependabot[bot]
aae46032bc build(deps): bump trybuild from 1.0.105 to 1.0.106 (#1986)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.105 to
1.0.106.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.106</h2>
<ul>
<li>Update <code>toml</code> dependency to 0.9 (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/306">#306</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9e3eb039ed"><code>9e3eb03</code></a>
Release 1.0.106</li>
<li><a
href="6d6d3e83ad"><code>6d6d3e8</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/306">#306</a>
from dtolnay/toml</li>
<li><a
href="6b77d62236"><code>6b77d62</code></a>
Update to toml 0.9</li>
<li><a
href="f7a9a80fc4"><code>f7a9a80</code></a>
Ignore mismatched_lifetime_syntaxes lint</li>
<li><a
href="51a1a41487"><code>51a1a41</code></a>
Resolve manual_let_else pedantic clippy lint</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.105...1.0.106">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.105&new-version=1.0.106)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 11:24:57 -07:00
Josh McKinney
0e10170e19 chore: change Borders::NONE to a proper const (#1985)
https://docs.rs/bitflags/latest/bitflags/#zero-bit-flags

> Flags with no bits set should be avoided because they interact
strangely with
[Flags::contains](https://docs.rs/bitflags/latest/bitflags/trait.Flags.html#method.contains)
and
[Flags::intersects](https://docs.rs/bitflags/latest/bitflags/trait.Flags.html#method.intersects).
A zero-bit flag is always contained, but is never intersected. The names
of zero-bit flags can be parsed, but are never formatted.

Removing this simplifies the manual Debug impl that previously had to
check for Borders::NONE and now does not.
2025-07-13 22:56:21 -07:00
Josh McKinney
40e96a2a04 docs(block): add collapsed border example (#1899) 2025-07-13 01:30:57 -07:00
Josh McKinney
02ca5870c5 ci: add environment to release workflow (#1983)
https://github.com/rust-lang/crates.io/issues/11564#issuecomment-3066696820
2025-07-13 01:29:23 -07:00
LitoMore
8e3bd11d60 chore: add svg logo asset (#1967)
Added a shields.io style svg logo and a nicer version of the original logo.
The simplified icon will be added and available directly from shields.io via:
- https://github.com/simple-icons/simple-icons/pull/13593
2025-07-12 17:24:38 -07:00
Jagoda Estera Ślązak
017af11b2b feat: preserve block titles when merging borders (#1977)
Resolves #1939
2025-07-12 15:45:56 -07:00
Josh McKinney
821611f76f ci: use trusted publishing (#1981)
https://blog.rust-lang.org/2025/07/11/crates-io-development-update-2025-07/
https://crates.io/docs/trusted-publishing
2025-07-12 14:11:34 -07:00
Josh McKinney
ae43ea796a chore(cell): use Option instead of space (" ") for symbol (#1974)
This change makes the `Cell::symbol` field an `Option<CompactString>`,
allowing it to represent an empty cell as `None` instead of an empty
string. The rationale for this is to later allow the merge symbol
functionality to act differently based on whether a cell has previously
held a symbol or not, rather than always merging with an empty string.
This will help make it possible to merge borders with titles with spaces
and other symbols, without assuming that an empty string is always
equivalent to no symbol.

- Default is now derived as `Option::None` works correctly.
- PartialEq and Eq implementations are updated to treat `None` the same
  as an empty string.
- merge_symbol against an empty cell will now just set the symbol
  rather than calling MergeStrategy::merge with an empty string.
- PartialEq, and Hash are manually implementated instead of being
  derived, and are updated to treat `None` equal to an empty string.
2025-07-11 21:43:23 +03:00
Shingo OKAWA
5fa342cc52 fix(widgets): fix centered block title truncation (#1973)
Previously block titles that were aligned center were
truncated poorly (aligned to the left, and the last
non-fitting title would be truncated on the left and right.
This now truncates the titles more obviously centered.
2025-07-11 00:19:07 -07:00
John T. Wodder II
08b21fa55c fix: Fix panic when rendering a Paragraph out of bounds (#1670)
Fixes #1667.
2025-07-09 17:37:20 -07:00
dependabot[bot]
32ccf38606 build(deps): bump marocchino/sticky-pull-request-comment from 2.9.1 to 2.9.3 (#1970)
Bumps
[marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment)
from 2.9.1 to 2.9.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/marocchino/sticky-pull-request-comment/releases">marocchino/sticky-pull-request-comment's
releases</a>.</em></p>
<blockquote>
<h2>v2.9.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Update deps (including security issues)</li>
<li>Test with vitest instead of jest</li>
<li>Use biome</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/marocchino/sticky-pull-request-comment/compare/v2.9.2...v2.9.3">https://github.com/marocchino/sticky-pull-request-comment/compare/v2.9.2...v2.9.3</a></p>
<h2>v2.9.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Update <code>@​octokit/graphql-schema</code> &amp; use biome by <a
href="https://github.com/marocchino"><code>@​marocchino</code></a> in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1517">marocchino/sticky-pull-request-comment#1517</a></li>
<li>build(deps): Bump undici from 5.28.4 to 5.28.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1476">marocchino/sticky-pull-request-comment#1476</a></li>
<li>build(deps-dev): Bump <code>@​types/node</code> from 22.10.7 to
22.14.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1515">marocchino/sticky-pull-request-comment#1515</a></li>
<li>build(deps): Bump <code>@​octokit/request-error</code> from 5.0.1 to
5.1.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1490">marocchino/sticky-pull-request-comment#1490</a></li>
<li>build(deps): Bump <code>@​octokit/request</code> from 8.1.4 to 8.4.1
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1494">marocchino/sticky-pull-request-comment#1494</a></li>
<li>build(deps): Bump <code>@​octokit/plugin-paginate-rest</code> from
9.1.2 to 9.2.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/pull/1493">marocchino/sticky-pull-request-comment#1493</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/marocchino/sticky-pull-request-comment/compare/v2.9.1...v2.9.2">https://github.com/marocchino/sticky-pull-request-comment/compare/v2.9.1...v2.9.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d2ad0de260"><code>d2ad0de</code></a>
📦️ Build</li>
<li><a
href="c6b90f93cb"><code>c6b90f9</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1553">#1553</a>
from marocchino/dependabot/npm_and_yarn/brace-expans...</li>
<li><a
href="20665dd134"><code>20665dd</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1550">#1550</a>
from marocchino/dependabot/npm_and_yarn/types/node-2...</li>
<li><a
href="8a03a65ab9"><code>8a03a65</code></a>
build(deps): Bump brace-expansion from 1.1.11 to 1.1.12</li>
<li><a
href="8d4420ab75"><code>8d4420a</code></a>
build(deps-dev): Bump <code>@​types/node</code> from 22.15.30 to
24.0.3</li>
<li><a
href="14ca6a4b49"><code>14ca6a4</code></a>
📦️ Build</li>
<li><a
href="283f17cccc"><code>283f17c</code></a>
🔧 Update biome setting</li>
<li><a
href="0607099d6a"><code>0607099</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1552">#1552</a>
from marocchino/dependabot/npm_and_yarn/vitest-3.2.4</li>
<li><a
href="9bff39e005"><code>9bff39e</code></a>
Merge pull request <a
href="https://redirect.github.com/marocchino/sticky-pull-request-comment/issues/1551">#1551</a>
from marocchino/dependabot/npm_and_yarn/biomejs/biom...</li>
<li><a
href="f02e40f8ac"><code>f02e40f</code></a>
build(deps-dev): Bump vitest from 3.2.2 to 3.2.4</li>
<li>Additional commits viewable in <a
href="52423e0164...d2ad0de260">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=marocchino/sticky-pull-request-comment&package-manager=github_actions&previous-version=2.9.1&new-version=2.9.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:41:11 -07:00
dependabot[bot]
04428f6f74 build(deps): bump taiki-e/install-action from 2.55.1 to 2.56.7 (#1971)
Bumps
[taiki-e/install-action](https://github.com/taiki-e/install-action) from
2.55.1 to 2.56.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's
releases</a>.</em></p>
<blockquote>
<h2>2.56.7</h2>
<ul>
<li>Update <code>shfmt@latest</code> to 3.12.0.</li>
</ul>
<h2>2.56.6</h2>
<ul>
<li>
<p>Update <code>cargo-llvm-cov@latest</code> to 0.6.17.</p>
</li>
<li>
<p>Update <code>cargo-udeps@latest</code> to 0.1.57.</p>
</li>
</ul>
<h2>2.56.5</h2>
<ul>
<li>Update <code>cargo-semver-checks@latest</code> to 0.42.0.</li>
</ul>
<h2>2.56.4</h2>
<ul>
<li>Update <code>cargo-shear@latest</code> to 1.3.3.</li>
</ul>
<h2>2.56.3</h2>
<ul>
<li>Update <code>trivy@latest</code> to 0.64.1.</li>
</ul>
<h2>2.56.2</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.17.2.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.28.0.</p>
</li>
</ul>
<h2>2.56.1</h2>
<ul>
<li>Update <code>release-plz@latest</code> to 0.3.137.</li>
</ul>
<h2>2.56.0</h2>
<ul>
<li>Support <code>coreutils</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1017">#1017</a>,
thanks <a
href="https://github.com/jayvdb"><code>@​jayvdb</code></a>)</li>
</ul>
<h2>2.55.4</h2>
<ul>
<li>
<p>Update <code>trivy@latest</code> to 0.64.0.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.41.0.</p>
</li>
</ul>
<h2>2.55.3</h2>
<ul>
<li>Update <code>dprint@latest</code> to 0.50.1.</li>
</ul>
<h2>2.55.2</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.11.0.</p>
</li>
<li>
<p>Update <code>cargo-dinghy@latest</code> to 0.8.1.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<ul>
<li>Update <code>vacuum@latest</code> to 0.17.3.</li>
</ul>
<h2>[2.56.7] - 2025-07-07</h2>
<ul>
<li>Update <code>shfmt@latest</code> to 3.12.0.</li>
</ul>
<h2>[2.56.6] - 2025-07-06</h2>
<ul>
<li>
<p>Update <code>cargo-llvm-cov@latest</code> to 0.6.17.</p>
</li>
<li>
<p>Update <code>cargo-udeps@latest</code> to 0.1.57.</p>
</li>
</ul>
<h2>[2.56.5] - 2025-07-06</h2>
<ul>
<li>Update <code>cargo-semver-checks@latest</code> to 0.42.0.</li>
</ul>
<h2>[2.56.4] - 2025-07-05</h2>
<ul>
<li>Update <code>cargo-shear@latest</code> to 1.3.3.</li>
</ul>
<h2>[2.56.3] - 2025-07-03</h2>
<ul>
<li>Update <code>trivy@latest</code> to 0.64.1.</li>
</ul>
<h2>[2.56.2] - 2025-07-02</h2>
<ul>
<li>
<p>Update <code>vacuum@latest</code> to 0.17.2.</p>
</li>
<li>
<p>Update <code>syft@latest</code> to 1.28.0.</p>
</li>
</ul>
<h2>[2.56.1] - 2025-07-01</h2>
<ul>
<li>Update <code>release-plz@latest</code> to 0.3.137.</li>
</ul>
<h2>[2.56.0] - 2025-07-01</h2>
<ul>
<li>Support <code>coreutils</code>. (<a
href="https://redirect.github.com/taiki-e/install-action/pull/1017">#1017</a>,
thanks <a
href="https://github.com/jayvdb"><code>@​jayvdb</code></a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f3a27926ea"><code>f3a2792</code></a>
Release 2.56.7</li>
<li><a
href="fc0c1ad363"><code>fc0c1ad</code></a>
Update <code>shfmt@latest</code> to 3.12.0</li>
<li><a
href="cb148fe1fc"><code>cb148fe</code></a>
Release 2.56.6</li>
<li><a
href="95c7e0aefa"><code>95c7e0a</code></a>
Update <code>cargo-llvm-cov@latest</code> to 0.6.17</li>
<li><a
href="d86483f9ef"><code>d86483f</code></a>
Update <code>cargo-udeps@latest</code> to 0.1.57</li>
<li><a
href="d32ce31795"><code>d32ce31</code></a>
Release 2.56.5</li>
<li><a
href="2119a1ef9a"><code>2119a1e</code></a>
Replace tab with space</li>
<li><a
href="0ae016a18f"><code>0ae016a</code></a>
Update jq to 1.8.1</li>
<li><a
href="9b1aeb740e"><code>9b1aeb7</code></a>
Update <code>cargo-semver-checks@latest</code> to 0.42.0</li>
<li><a
href="e6d2212084"><code>e6d2212</code></a>
Release 2.56.4</li>
<li>Additional commits viewable in <a
href="491d37bbaa...f3a27926ea">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.55.1&new-version=2.56.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 16:40:29 -07:00
dependabot[bot]
84427c2857 build(deps): bump tokio from 1.45.1 to 1.46.1 (#1968) 2025-07-07 20:01:54 +02:00
Orhun Parmaksız
ca5a9bb019 chore(changelog): skip dependency updates in changelog (#1966) 2025-07-05 16:29:09 +03:00
Josh McKinney
1f0c2ee18e ci: audit github workflows with zizmor (#1961)
Fixes https://github.com/ratatui/ratatui/issues/1950
2025-07-02 14:51:41 -07:00
dependabot[bot]
6b3323fb10 build(deps): bump kasuari from 0.4.6 to 0.4.7 (#1960)
Bumps [kasuari](https://github.com/ratatui/kasuari) from 0.4.6 to 0.4.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/kasuari/releases">kasuari's
releases</a>.</em></p>
<blockquote>
<h2>v0.4.7</h2>
<h3>Other</h3>
<ul>
<li><em>(gitignore)</em> add <code>.env</code> to
<code>.gitignore</code> (<a
href="https://redirect.github.com/ratatui/kasuari/pull/22">#22</a>)</li>
<li>use variables directly in the <code>format!</code> string (<a
href="https://redirect.github.com/ratatui/kasuari/pull/23">#23</a>)</li>
<li><em>(deps)</em> bump hashbrown from 0.15.3 to 0.15.4 in the
rust-dependencies group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/19">#19</a>)</li>
<li>fix for code scanning alert no. 1: Workflow does not contain
permissions (<a
href="https://redirect.github.com/ratatui/kasuari/pull/20">#20</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/kasuari/blob/main/CHANGELOG.md">kasuari's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/kasuari/compare/v0.4.6...v0.4.7">0.4.7</a>
- 2025-06-27</h2>
<h3>Other</h3>
<ul>
<li><em>(gitignore)</em> add <code>.env</code> to
<code>.gitignore</code> (<a
href="https://redirect.github.com/ratatui/kasuari/pull/22">#22</a>)</li>
<li>use variables directly in the <code>format!</code> string (<a
href="https://redirect.github.com/ratatui/kasuari/pull/23">#23</a>)</li>
<li><em>(deps)</em> bump hashbrown from 0.15.3 to 0.15.4 in the
rust-dependencies group (<a
href="https://redirect.github.com/ratatui/kasuari/pull/19">#19</a>)</li>
<li>fix for code scanning alert no. 1: Workflow does not contain
permissions (<a
href="https://redirect.github.com/ratatui/kasuari/pull/20">#20</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cf8c01fc18"><code>cf8c01f</code></a>
chore: release v0.4.7 (<a
href="https://redirect.github.com/ratatui/kasuari/issues/21">#21</a>)</li>
<li><a
href="a20b77a8f0"><code>a20b77a</code></a>
chore(gitignore): add <code>.env</code> to <code>.gitignore</code> (<a
href="https://redirect.github.com/ratatui/kasuari/issues/22">#22</a>)</li>
<li><a
href="e4b1bc12c7"><code>e4b1bc1</code></a>
refactor: use variables directly in the <code>format!</code> string (<a
href="https://redirect.github.com/ratatui/kasuari/issues/23">#23</a>)</li>
<li><a
href="78847cf972"><code>78847cf</code></a>
build(deps): bump hashbrown from 0.15.3 to 0.15.4 in the
rust-dependencies gr...</li>
<li><a
href="b918060969"><code>b918060</code></a>
ci: fix for code scanning alert no. 1: Workflow does not contain
permissions ...</li>
<li>See full diff in <a
href="https://github.com/ratatui/kasuari/compare/v0.4.6...v0.4.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=kasuari&package-manager=cargo&previous-version=0.4.6&new-version=0.4.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 15:13:38 -07:00
github-actions[bot]
11c5862728 chore: release (#1866)
## 🤖 New release

* `ratatui-core`: 0.1.0-alpha.5 -> 0.1.0-alpha.6
* `ratatui-crossterm`: 0.1.0-alpha.4 -> 0.1.0-alpha.5
* `ratatui-widgets`: 0.3.0-alpha.4 -> 0.3.0-alpha.5
* `ratatui-macros`: 0.7.0-alpha.3 -> 0.7.0-alpha.4
* `ratatui-termwiz`: 0.1.0-alpha.4 -> 0.1.0-alpha.5
* `ratatui-termion`: 0.1.0-alpha.4 -> 0.1.0-alpha.5
* `ratatui`: 0.30.0-alpha.4 -> 0.30.0-alpha.5

<details><summary><i><b>Changelog</b></i></summary><p>

## `ratatui-core`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-crossterm`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-widgets`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-macros`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-30 04:53:20 -07:00
Jagoda Estera Ślązak
055522ef7b docs: add docs for authoring widget crates (#1955)
- added Authoring Widget Libraries sub-section
- moved built-in and third-party widgets sections higher
2025-06-30 07:09:28 +02:00
Jagoda Estera Ślązak
0b025db72b docs(contributing): fix grammar (#1958) 2025-06-28 15:45:21 -07:00
Josh McKinney
617d31851a docs: improve Block docs (#1953)
Co-authored-by: Jagoda Estera Ślązak <128227338+j-g00da@users.noreply.github.com>
2025-06-28 15:28:21 -07:00
Lena
4c301e891d feat(text): implement AddAssign for Text (#1956)
This makes it possible to add a second `Text` instance to a first one using the += operator.

```rust
let mut text = Text::from("line 1");
text += Text::from("line 2");
```

Style and alignment applied to the second text is ignored (though styles and alignment of lines and spans are copied).
2025-06-28 14:53:29 -07:00
Jagoda Estera Ślązak
b9da1926a0 feat(serde): derive Serialize/Deserialize for alignment enums (#1957)
Resolves #1954
2025-06-28 14:48:16 -07:00
Josh McKinney
6dcd53bc6b feat: add ergonomic methods for layouting Rects (#1909)
This commit introduces new methods for the `Rect` struct that simplify
the process of splitting a `Rect` into sub-rects according to a given
`Layout`. By putting these methods on the `Rect` struct, we make it a
bit more natural that a layout is applied to the `Rect` itself, rather
than passing a `Rect` to the `Layout` struct to be split.

Adds:
- `Rect::layout` and `Rect::try_layout` methods that allow splitting a
  `Rect` into an array of sub-rects according to a given `Layout`.
- `Rect::layout_vec` method that returns a `Vec` of sub-rects.
- `Layout::try_areas` method that returns an array of sub-rects, with
  compile-time checks for the number of constraints. This is added
  mainly for consistency with the new `Rect` methods.

```rust
use ratatui_core::layout::{Layout, Constraint, Rect};
let area = Rect::new(0, 0, 10, 10);
let layout = Layout::vertical([Constraint::Fill(1); 2]);

// Rect::layout() infers the number of constraints at compile time:
let [top, main] = area.layout(&layout);

// Rect::try_layout() and Layout::try_areas() do the same, but return a
// Result:
let [top, main] = area.try_layout(&layout)?;
let [top, main] = layout.try_areas(area)?;

// Rect::layout_vec() returns a Vec of sub-rects:
let areas_vec = area.layout_vec(&layout);

// you can also explicitly specify the number of constraints:
let areas = area.layout::<2>(&layout);
let areas = area.try_layout::<2>(&layout)?;
let areas = layout.try_areas::<2>(area)?;
```
2025-06-28 01:23:34 -07:00
Dheepak Krishnamurthy
d99984f1e9 feat(layout)!: Add Flex::SpaceEvenly (#1952)
Resolves https://github.com/ratatui/ratatui/issues/1951

BREAKING CHANGE: Old `Flex::SpaceAround` behavior is available by using
`Flex::SpaceEvenly` and new
`Flex::SpaceAround` now distributes space evenly around each element
except the middle spacers
    are twice the size of first and last elements

With this change, the following variants of `Flex` are supported:

- `Flex::Start`: Aligns items to the start; excess space appears at the
end.
- `Flex::End`: Aligns items to the end; excess space appears at the
start.
- `Flex::Center`: Centers items with equal space on both sides.
- `Flex::SpaceAround` (**new**): Distributes space _around_ items; space
between items is _twice_ the edge spacing.
- `Flex::SpaceBetween`: Distributes space _evenly between_ items except
no space at the edges.
- `Flex::SpaceEvenly` (**previously `Flex::SpaceAround`**): Distributes
space _evenly between_ items and edges.
- `Flex::Legacy`: Preserves legacy behavior, placing all excess space at
the end.

This aligns behavior of `Flex` with CSS flexbox more closely.

The following is a screenshot in action:

<img width="1090" alt="image"
src="https://github.com/user-attachments/assets/2c7cd797-27bd-4242-a824-4565d369227b"
/>

---------

Co-authored-by: Jagoda Estera Ślązak <128227338+j-g00da@users.noreply.github.com>
2025-06-28 03:39:15 -04:00
Josh McKinney
8e2d568428 docs: improve layout related docs (#1948)
Adds module level docs and more comprehensive docs on all the types in
the layout module

Fixes #1937
2025-06-27 14:31:11 -07:00
Jagoda Estera Ślązak
d02995fda1 chore(gitignore): add .env to .gitignore (#1949) 2025-06-27 08:15:44 +03:00
Josh McKinney
4c708ddf8a docs: improve docs for run/init/restore etc. (#1947)
- **docs: document the init module**
- **docs: use the ratatui::run() methods in the main doc**
- **docs: add more intradoc / website links and historical perspective
on Terminal / backend**
- **docs: add notes about new run/init/restore methods and the
defaultterminal type to terminal docs**
2025-06-26 21:52:58 -07:00
Josh McKinney
5620e06b1a docs: add crate organization sections to workspace (#1946)
Adds summary-level crate organization documentation to all crates
explaining the modular workspace structure and when to use each crate.
Links to ARCHITECTURE.md for detailed information.
2025-06-26 15:36:00 -07:00
Josh McKinney
cfb65e64ba docs: add examples for handling state (#1849)
Added comprehensive state management examples covering both immutable
and mutable patterns and documentation to help developers choose the
right approach for their applications.
2025-06-26 13:04:42 -07:00
Jagoda Estera Ślązak
92bb9b2219 chore: remove Title references (#1943) 2025-06-26 09:13:59 +02:00
Josh McKinney
d6647db744 chore: remove some allow attributes for fixed clippy bugs (#1944) 2025-06-25 22:29:56 -07:00
Josh McKinney
3f48bde3c6 chore: remove OpenSSL license (#1942)
Only keep licenses in the allow list that are actually used
2025-06-25 21:59:26 -07:00
Josh McKinney
80bc818723 fix: fix truncation of left aligned block titles (#1931)
truncate the right side of left aligned titles rather than the left side
of right aligned titles. This is more obvious as the left side of text
often contains more important information. And we generally read
left to right.

This change makes centered titles overwrite left aligned titles and
right aligned titles overwrite centered or left aligned titles.

Fixes: https://github.com/ratatui/ratatui/issues/358
2025-06-25 21:56:40 -07:00
Josh McKinney
0c3872f1c5 feat: add Rect::outer() (#1929)
Fixes: https://github.com/ratatui/ratatui/issues/211
2025-06-25 21:56:15 -07:00
dependabot[bot]
9f9ec332b0 build(deps): bump cargo_metadata from 0.19.2 to 0.20.0 (#1887)
Bumps [cargo_metadata](https://github.com/oli-obk/cargo_metadata) from
0.19.2 to 0.20.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fa60b98bc8"><code>fa60b98</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/293">#293</a>
from oli-obk/push-orzyoroqpxpu</li>
<li><a
href="61345fb320"><code>61345fb</code></a>
required features have a different format from normal feature names</li>
<li><a
href="19f42039ee"><code>19f4203</code></a>
Bump MSRV</li>
<li><a
href="6861466d25"><code>6861466</code></a>
Fix build on with <code>builder</code> feature</li>
<li><a
href="a21b7a1d01"><code>a21b7a1</code></a>
Update examples</li>
<li><a
href="5895dd6b15"><code>5895dd6</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/261">#261</a>
from zetanumbers/docsrs-features</li>
<li><a
href="e3373d02e7"><code>e3373d0</code></a>
refactor: NodeDep::name: PackageName</li>
<li><a
href="2f0142d684"><code>2f0142d</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/291">#291</a>
from gear-tech/fix-cross-compilation</li>
<li><a
href="95d4a360fc"><code>95d4a36</code></a>
update changelog</li>
<li><a
href="9cd40e6363"><code>9cd40e6</code></a>
append docs</li>
<li>Additional commits viewable in <a
href="https://github.com/oli-obk/cargo_metadata/compare/0.19.2...0.20.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cargo_metadata&package-manager=cargo&previous-version=0.19.2&new-version=0.20.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-06-25 21:44:39 -07:00
Jagoda Estera Ślązak
0951da52f9 docs(breaking-changes): improve migration guide for Backend::Error (#1908)
Related: https://github.com/fujiapple852/trippy/pull/1588
2025-06-25 19:36:12 -07:00
Josh McKinney
3de41a8249 docs: document widgets module (#1932)
Adds a good overview of the use and implementation of widget traits.

Goals with the doc rewrite:
- document the rationale for the ratatui-widgets crate with info for app
builders and widget makers.
- Show how to use the widgets for rendering as well as implement the
traits- document the differences and reasons for each trait
- document the historical perspective (to make it easy to understand
older Ratatui apps as well as migrate to newer approaches
- give recommended approaches to implementing traits
- explain the differences between Consuming and Shared / Mutable
Reference implementations of Widget
- explain the differences between using StatefulWidget and Mutable
References
- Explain the use case for WidgetRef and StatefulWidgetRef
- Link out to third part widget lists

Fixes: https://github.com/ratatui/ratatui/issues/366

---------

Co-authored-by: hasezoey <hasezoey@gmail.com>
2025-06-25 16:19:54 -07:00
dependabot[bot]
d41b8d6334 build(deps): bump clap from 4.5.39 to 4.5.40 (#1911)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.39 to 4.5.40.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.40] - 2025-06-09</h2>
<h3>Features</h3>
<ul>
<li>Support quoted ids in <code>arg!()</code> macro (e.g.
<code>arg!(&quot;check-config&quot;: ...)</code>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cff27dbf57"><code>cff27db</code></a>
chore: Release</li>
<li><a
href="4ef41249f1"><code>4ef4124</code></a>
docs: Update changelog</li>
<li><a
href="ca896175c1"><code>ca89617</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5848">#5848</a>
from jennings/jennings/push-xolwzyoornps</li>
<li><a
href="99b6391ee9"><code>99b6391</code></a>
fix(complete): Fix PowerShell dynamic completion</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.39...clap_complete-v4.5.40">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.39&new-version=4.5.40)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 15:37:11 -07:00
Josh McKinney
4c86513790 chore: remove block::Title (#1926)
The title alignment is better expressed in the `Line` as this fits more
coherently with the rest of the library.

BREAKING CHANGES:
- `widgets::block` is no longer exported
- `widgets::block::Title` no longer exists
- `widgets::block::Position` is now `widgets::TitlePosition`
- `Block::title()` now accepts `Into::<Line>` instead of `Into<Title>`
- `BlockExt` is now exported at widgets::`BlockExt`

Closes: https://github.com/ratatui/ratatui/issues/738
2025-06-25 15:36:50 -07:00
Josh McKinney
7bc78bca1b feat: add ratatui::run() method (#1707)
This introduces a new `ratatui::run()` method which runs a closure with
a terminal initialized with reasonable defaults for most applications.
This calls `ratatui::init()` before running the closure and
`ratatui::restore()` after the closure completes, and returns the result
of the closure.

A minimal hello world example using the new `ratatui::run()` method:

```rust
fn main() -> Result<(), Box<dyn std::error::Error>> {
    ratatui::run(|terminal| {
        loop {
            terminal.draw(|frame| frame.render_widget("Hello World!", frame.area()))?;
            if crossterm::event::read()?.is_key_press() {
                break Ok(());
            }
        }
    })
}
```

Of course, this also works both with apps that use free methods and
structs:

```rust
fn run(terminal: &mut DefaultTerminal) -> Result<(), AppError> { ... }

ratatui::run(run)?;
```

```rust
struct App { ... }

impl App {
    fn new() -> Self { ... }
    fn run(mut self, terminal: &mut DefaultTerminal) -> Result<(), AppError> { ... }
}

ratatui::run(|terminal| App::new().run(terminal))?;
```
2025-06-25 03:20:42 -07:00
Josh McKinney
b6fbfcdd1c feat: add lifetime to symbol sets (#1935)
This makes it possible to create symbol sets at runtime with non-static
lifetimes.

Fixes: https://github.com/ratatui/ratatui/issues/1722
2025-06-25 01:02:09 -07:00
Josh McKinney
21e3b598ce fix: fix handling of multi-byte chars in bar chart (#1934)
The split_at method requires that the split point is at a valid utf8
character boundary.

Fixes: https://github.com/ratatui/ratatui/issues/1928
2025-06-25 00:55:18 -07:00
Josh McKinney
ca2ad4a1f9 docs: simplify ratatui-macro docs (#1923) 2025-06-25 00:47:27 -07:00
Josh McKinney
272f5c05dc chore: fix new lints (#1922) 2025-06-25 00:38:41 -07:00
dependabot[bot]
dfd0736f3a build(deps): bump anstyle from 1.0.10 to 1.0.11 (#1901)
Bumps [anstyle](https://github.com/rust-cli/anstyle) from 1.0.10 to
1.0.11.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="886539c953"><code>886539c</code></a>
chore: Release</li>
<li><a
href="161bf93c92"><code>161bf93</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/255">#255</a>
from Muscraft/anstyle-svg-urls</li>
<li><a
href="70dd95e053"><code>70dd95e</code></a>
feat(anstyle-svg): Add support for rendering Hyperlinks</li>
<li><a
href="96e3f75643"><code>96e3f75</code></a>
test(anstyle-svg): Add tests for Hyperlinks</li>
<li><a
href="abdd703a5c"><code>abdd703</code></a>
refactor(anstyle-svg): Use a concrete retrurn type from adapter</li>
<li><a
href="8d5053079d"><code>8d50530</code></a>
refactor(anstyle-svg): Use a better name for internal adapter</li>
<li><a
href="327c261668"><code>327c261</code></a>
refactor: Use a custom adapter for anstyle-svg</li>
<li><a
href="f1d6c141e2"><code>f1d6c14</code></a>
refactor(anstream): Use a less general name for State</li>
<li><a
href="98ef02efe0"><code>98ef02e</code></a>
test(anstream): Use anstyle for wincon adapter tests</li>
<li><a
href="182053aaa8"><code>182053a</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/254">#254</a>
from epage/template</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-cli/anstyle/compare/v1.0.10...v1.0.11">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anstyle&package-manager=cargo&previous-version=1.0.10&new-version=1.0.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 20:10:42 -07:00
dependabot[bot]
a112953c59 build(deps): bump hashbrown from 0.15.3 to 0.15.4 (#1902)
Bumps [hashbrown](https://github.com/rust-lang/hashbrown) from 0.15.3 to
0.15.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/hashbrown/releases">hashbrown's
releases</a>.</em></p>
<blockquote>
<h2>v0.15.4</h2>
<h3>Changed</h3>
<ul>
<li>Removed optional dependency on compiler-builtins. This only affects
building as part of <code>std</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md">hashbrown's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/hashbrown/compare/v0.15.3...v0.15.4">0.15.4</a>
- 2025-06-05</h2>
<h3>Changed</h3>
<ul>
<li>Removed optional dependency on compiler-builtins. This only affects
building as part of <code>std</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8ceeb4045f"><code>8ceeb40</code></a>
Update CHANGELOG.md</li>
<li><a
href="b9be6808d6"><code>b9be680</code></a>
chore: release v0.15.4</li>
<li><a
href="53cf3532ff"><code>53cf353</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/625">#625</a>
from tgross35/no-compiler-builtins</li>
<li><a
href="197a1ebf65"><code>197a1eb</code></a>
Remove optional dependency on compiler-builtins</li>
<li><a
href="d3a2a3d752"><code>d3a2a3d</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/623">#623</a>
from cppbear/add-tests</li>
<li><a
href="165fdcfb58"><code>165fdcf</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/622">#622</a>
from AbeZbm/add-tests</li>
<li><a
href="e52627b92d"><code>e52627b</code></a>
test: add test for HashMap::get_mut with non-existent key</li>
<li><a
href="c1cd0c6827"><code>c1cd0c6</code></a>
Add missing test for set</li>
<li><a
href="62634581de"><code>6263458</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/hashbrown/issues/620">#620</a>
from rust-lang/release-plz-2025-04-29T17-31-59Z</li>
<li>See full diff in <a
href="https://github.com/rust-lang/hashbrown/compare/v0.15.3...v0.15.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hashbrown&package-manager=cargo&previous-version=0.15.3&new-version=0.15.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 20:10:07 -07:00
Tatesa Uradnik
e1e400406c fix: derive copy for list state (#1921) 2025-06-24 10:54:34 -07:00
Jagoda Estera Ślązak
1399d95ae0 feat(no_std): make palette and serde features depends on std (#1919) 2025-06-23 23:00:40 -07:00
Jagoda Estera Ślązak
488e5f020f feat: make border! work without importing Borders (#1918)
Currently using `border!` macro requires explicit import of `Borders`
which is unnecessary.
2025-06-21 18:30:23 -07:00
Jagoda Estera Ślązak
e48aa9ec09 chore(ci): stop publish-alpha from running on forks (#1916)
I can't sleep because every Saturday alpha release fails on my ratatui
fork. This should fix my insomnia.
2025-06-20 22:37:15 -07:00
Hari Chalise
68b9f67f59 docs(readme): add Built with Ratatui badge for downstream projects (#1905) 2025-06-16 15:32:22 -07:00
Jagoda Estera Ślązak
bbe1cf9497 docs(breaking-changes): change MSRV to 1.85 (#1896)
The minimum supported Rust version is now for `ratatui` v0.30 is 1.85
2025-06-05 11:37:01 +03:00
Jagoda Estera Ślązak
671c2b4fd4 feat: support merging the borders of blocks (#1874)
When two borders overlap, they will automatically merge into a single,
clean border instead of overlapping.

This improves visual clarity and reduces rendering glitches around corners.

For example:

```
assert_eq!(Cell::new("┘").merge_symbol("┏", MergeStrategy::Exact).symbol(), "╆");
```

Co-authored-by: pauladam94 <poladam2002@gmail.com>
Co-authored-by: Paul Adam <65903440+pauladam94@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-06-04 11:10:26 +02:00
Daksh
12cb5a28fe fix: allow canvas area to exceed u16::MAX (#1891)
This allows Canvas grids where the width * height exceeds u16::MAX by
converting values to usize earlier in several methods.

Fixes: https://github.com/ratatui/ratatui/issues/1449
2025-06-03 16:04:47 -07:00
Jagoda Estera Ślązak
861fbdf5cf docs(examples): fix a typo (#1890)
Makes CI typos check pass again
2025-06-03 14:55:23 +03:00
dependabot[bot]
bf9ecf19de build(deps): bump clap from 4.5.38 to 4.5.39 (#1888)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [clap](https://github.com/clap-rs/clap) from 4.5.38 to 4.5.39.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.39</h2>
<h2>[4.5.39] - 2025-05-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Show short flag aliases before long</li>
<li><em>(help)</em> Merge the short and long flag alias lists</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.39] - 2025-05-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Show short flag aliases before long</li>
<li><em>(help)</em> Merge the short and long flag alias lists</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ed2360f9cd"><code>ed2360f</code></a>
chore: Release</li>
<li><a
href="196a14b8c9"><code>196a14b</code></a>
docs: Update changelog</li>
<li><a
href="cd622ab63c"><code>cd622ab</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5846">#5846</a>
from ribru17/alias_fn_dedup</li>
<li><a
href="48ff72be28"><code>48ff72b</code></a>
fix(complete): Deduplicate bash subcmd cases</li>
<li><a
href="b1b6f17f61"><code>b1b6f17</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5843">#5843</a>
from epage/link</li>
<li><a
href="5900216569"><code>5900216</code></a>
fix(derive): Update link for derive attributes</li>
<li><a
href="fde45f9aea"><code>fde45f9</code></a>
chore: Release</li>
<li><a
href="45d5d7edcb"><code>45d5d7e</code></a>
docs: Update changelog</li>
<li><a
href="4b82b97cd9"><code>4b82b97</code></a>
chore: Release</li>
<li><a
href="a982adfbbd"><code>a982adf</code></a>
docs: Update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.38...clap_complete-v4.5.39">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.38&new-version=4.5.39)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 12:56:59 -07:00
dependabot[bot]
ac22d21deb build(deps): bump color-eyre from 0.6.4 to 0.6.5 (#1889)
Bumps [color-eyre](https://github.com/eyre-rs/eyre) from 0.6.4 to 0.6.5.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f110d78793"><code>f110d78</code></a>
Bump color-eyre to 0.6.5, color-spantrace to 0.3.0</li>
<li><a
href="6534ecdcbb"><code>6534ecd</code></a>
Undo eyre version bump (DO NOT PUBLISH EYRE)</li>
<li><a
href="9f35b8c83f"><code>9f35b8c</code></a>
Exclude images from published crate (<a
href="https://redirect.github.com/eyre-rs/eyre/issues/239">#239</a>)</li>
<li><a
href="6e9ced8865"><code>6e9ced8</code></a>
re-bump eyre version</li>
<li>See full diff in <a
href="https://github.com/eyre-rs/eyre/compare/color-eyre@0.6.4...color-eyre@0.6.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=color-eyre&package-manager=cargo&previous-version=0.6.4&new-version=0.6.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 12:56:08 -07:00
Josh McKinney
770cb7c3c3 chore: add tests for combining list styles (#1884)
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-06-01 13:30:13 -07:00
Sevki
92b6a16bde docs: fix grammar in ratatui-widgets README (#1885)
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-06-01 13:14:59 -07:00
Aurelien Andreo
89b74214d9 feat(serde): derive Serialize/Deserialize for additional structs/enums (#1883)
This PR adds `#[derive(Serialize, Deserialize)]` to the following
structs:
- `Constraint`
- `Direction`
- `Spacing`
- `Layout`
- `AccentedPalette`
- `NonAccentedPalette`
- `Palette`
- `Padding`
- `Borders`
- `BorderType`
- `ListDirection`
- `ScrollbarOrientation`
- `ScrollDirection`
- `RenderDirection`
- `HighlightSpacing`

Fixes #1877
2025-05-31 14:57:13 -07:00
dependabot[bot]
e32a5bf442 build(deps): bump clap-verbosity-flag from 3.0.2 to 3.0.3 (#1870)
Bumps
[clap-verbosity-flag](https://github.com/clap-rs/clap-verbosity-flag)
from 3.0.2 to 3.0.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap-verbosity-flag/blob/master/CHANGELOG.md">clap-verbosity-flag's
changelog</a>.</em></p>
<blockquote>
<h2>[3.0.3] - 2025-05-20</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7ac7bff71e"><code>7ac7bff</code></a>
chore: Release clap-verbosity-flag version 3.0.3</li>
<li><a
href="496f3ed5e7"><code>496f3ed</code></a>
docs(readme): Switch to console code blocks</li>
<li><a
href="6ca4f7adc1"><code>6ca4f7a</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/143">#143</a>
from joshka/jm/docs-tracing</li>
<li><a
href="352354610f"><code>3523546</code></a>
chore(deps): Update Rust Stable to v1.87 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/144">#144</a>)</li>
<li><a
href="cda6017809"><code>cda6017</code></a>
docs: Document tracing support in README and lib.rs</li>
<li><a
href="d97ade1611"><code>d97ade1</code></a>
chore(deps): Update Rust Stable to v1.86 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/141">#141</a>)</li>
<li><a
href="a58fde5b1a"><code>a58fde5</code></a>
chore(deps): Update Rust crate clap to v4.5.31 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/140">#140</a>)</li>
<li><a
href="d5e646395c"><code>d5e6463</code></a>
chore(deps): Update Rust Stable to v1.85 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/139">#139</a>)</li>
<li><a
href="e8151159f5"><code>e815115</code></a>
chore(deps): Update Rust Stable to v1.84 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/137">#137</a>)</li>
<li><a
href="6b0a9d4107"><code>6b0a9d4</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/138">#138</a>
from epage/template</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap-verbosity-flag/compare/v3.0.2...v3.0.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap-verbosity-flag&package-manager=cargo&previous-version=3.0.2&new-version=3.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-26 10:17:01 -07:00
dependabot[bot]
3728a0d90a build(deps): bump tokio from 1.45.0 to 1.45.1 (#1871)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.45.0 to 1.45.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.45.1</h2>
<h1>1.45.1 (May 24th, 2025)</h1>
<p>This fixes a regression on the wasm32-unknown-unknown target, where
code that previously did not panic due to calls to
<code>Instant::now()</code> started failing. This is due to the
stabilization of the first time-based metric.</p>
<h3>Fixed</h3>
<ul>
<li>Disable time-based metrics on wasm32-unknown-unknown (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7322">#7322</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/7322">#7322</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7322">tokio-rs/tokio#7322</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3768696d92"><code>3768696</code></a>
chore: prepare Tokio v1.45.1 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7359">#7359</a>)</li>
<li><a
href="421a7b001c"><code>421a7b0</code></a>
rt: do not track time-based metrics on wasm32-unknown-unknown (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7322">#7322</a>)</li>
<li><a
href="b1bdb3c57b"><code>b1bdb3c</code></a>
ci: update macros_type_mismatch for Rust 1.87.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7339">#7339</a>)</li>
<li>See full diff in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.45.0...tokio-1.45.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.45.0&new-version=1.45.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-26 10:16:03 -07:00
Jagoda Estera Ślązak
b32f78195b feat(no_std): make ratatui-macros no-std (#1865) 2025-05-20 21:22:48 +03:00
dependabot[bot]
7d84d42103 build(deps): bump DavidAnson/markdownlint-cli2-action from 19 to 20 (#1864)
Bumps
[DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action)
from 19 to 20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/davidanson/markdownlint-cli2-action/releases">DavidAnson/markdownlint-cli2-action's
releases</a>.</em></p>
<blockquote>
<h2>Update markdownlint version (markdownlint-cli2 v0.18.1, markdownlint
v0.38.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.17.2, markdownlint
v0.37.4).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.17.0, markdownlint
v0.37.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.15.0, markdownlint
v0.36.1).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.14.0, markdownlint
v0.35.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.13.0, markdownlint
v0.34.0).</h2>
<p>No release notes provided.</p>
<p>Update markdownlint version (markdownlint-cli2 v0.12.1, markdownlint
v0.33.0).</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.11.0, markdownlint
v0.32.1), remove deprecated &quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.10.0, markdownlint
v0.31.1).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.9.2, markdownlint
v0.30.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.8.1, markdownlint
v0.29.0), add &quot;config&quot; and &quot;fix&quot; inputs, deprecate
&quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.1, markdownlint
v0.28.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.0, markdownlint
v0.28.1), include link to rule information in title of annotations
(clickable in GitHub).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.6.0, markdownlint
v0.27.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.5.1, markdownlint
v0.26.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.4.0, markdownlint
v0.25.1)</h2>
<p>No release notes provided.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="992badcdf2"><code>992badc</code></a>
Update to version 20.0.0.</li>
<li><a
href="fafa44c8d4"><code>fafa44c</code></a>
Update dependency: markdownlint-cli2 to 0.18.1.</li>
<li><a
href="052b336194"><code>052b336</code></a>
Bump eslint-plugin-n from 17.17.0 to 17.18.0</li>
<li><a
href="e0b0869c70"><code>e0b0869</code></a>
Bump eslint-plugin-unicorn from 59.0.0 to 59.0.1</li>
<li><a
href="96cc31310c"><code>96cc313</code></a>
Bump <code>@​eslint/js</code> from 9.25.1 to 9.26.0</li>
<li><a
href="66095aa687"><code>66095aa</code></a>
Bump eslint from 9.25.1 to 9.26.0</li>
<li><a
href="51af1d1b7b"><code>51af1d1</code></a>
Bump eslint-plugin-unicorn from 58.0.0 to 59.0.0</li>
<li><a
href="81f6304570"><code>81f6304</code></a>
Bump <code>@​eslint/js</code> from 9.25.0 to 9.25.1</li>
<li><a
href="e2c95fbdf2"><code>e2c95fb</code></a>
Bump eslint from 9.25.0 to 9.25.1</li>
<li><a
href="9f58cc3808"><code>9f58cc3</code></a>
Bump <code>@​eslint/js</code> from 9.24.0 to 9.25.0</li>
<li>Additional commits viewable in <a
href="https://github.com/davidanson/markdownlint-cli2-action/compare/v19...v20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=DavidAnson/markdownlint-cli2-action&package-manager=github_actions&previous-version=19&new-version=20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 11:53:20 -07:00
github-actions[bot]
7407c36849 chore: release (#1854)
## 🤖 New release

* `ratatui-core`: 0.1.0-alpha.4 -> 0.1.0-alpha.5
* `ratatui-crossterm`: 0.1.0-alpha.3 -> 0.1.0-alpha.4
* `ratatui-widgets`: 0.3.0-alpha.3 -> 0.3.0-alpha.4
* `ratatui-macros`: 0.7.0-alpha.2 -> 0.7.0-alpha.3
* `ratatui-termwiz`: 0.1.0-alpha.3 -> 0.1.0-alpha.4
* `ratatui-termion`: 0.1.0-alpha.3 -> 0.1.0-alpha.4
* `ratatui`: 0.30.0-alpha.3 -> 0.30.0-alpha.4

<details><summary><i><b>Changelog</b></i></summary><p>

## `ratatui-core`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-crossterm`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-widgets`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-macros`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-19 01:20:49 -07:00
Tyler Breisacher
dbfb2c3399 chore: upgrade to Rust Edition 2024 (#1863)
https://doc.rust-lang.org/edition-guide/rust-2024/index.html

Fixes #1727
2025-05-19 01:17:03 -07:00
Tyler Breisacher
7cb35d4be1 chore: Update to Rust version 1.85.0 (#1860)
This is a small step toward fixing #1727
2025-05-17 17:23:28 +03:00
dependabot[bot]
eacf9b6dbf build(deps): bump duct from 0.13.7 to 1.0.0 (#1847) 2025-05-15 10:05:04 -07:00
Josh McKinney
a07f5bec20 chore: move dependency management to workspace (#1858)
Move all dependency management to the workspace level. This makes it
easier to manage dependencies across multiple crates in the workspace.

This also changes the versions of each dependency to track based on the
semver compatible version of the dependency (e.g. 0.1 instead of 0.1.0
or 2.9 instead of 2.9.0 to avoid having to regularly update the toml
files and to communicate that Ratatui will still generally work with
versions of the dependencies that are not the fully latest version. The
exact version of the dependencies is still tracked in the Cargo.lock
file.

Several dependencies that are fairly stable are changed to track a less
specific version (e.g. serde 1 instead of 1.0.x).

The following dependencies are updated to their latest versions:
- bitflags (2.3 -> 2.9)
- strum (0.26 -> 0.27)
- strum_macros (0.26 -> 0.27)
- all other semver compatible updates
2025-05-15 09:55:34 -07:00
Josh McKinney
09cc9ef57d fix: typo in changelog (#1857) 2025-05-15 12:41:41 +03:00
Josh McKinney
702fff501c feat!: implement stylize methods directly on Style (#1572)
This makes it possible to create constants using the shorthand methods.

```rust
const MY_STYLE: Style = Style::new().blue().on_black();
```

Rather than implementing Styled for Style and then adding extension
methods that implement the Stylize shorthands, this implements the
methods as const functions directly on Style.

BREAKING CHANGE: `Style` no longer implements `Styled`. Any calls to
methods implemented by the blanket implementation of Stylize are now
defined directly on Style. Remove the Stylize import if it is no longer
used by your code.

The `reset()` method does not have a direct replacement, as it clashes
with the existing `reset()` method. Use `Style::reset()` rather than
`some_style.reset()`

Fixes: #1158
2025-05-14 15:26:29 -07:00
Josh McKinney
e15fefa922 feat(barchar): add BarChart::grouped constructor (#1513)
Add a new constructor to the `BarChart` widget that allows creating a
grouped barchart with multiple groups of bars.

Also add a new constructor to the `BarGroup` widget that allows creating
a group of bars with a label.
2025-05-14 15:00:50 +03:00
github-actions[bot]
dcb0e5dffc chore: release (#1701)
## 🤖 New release

* `ratatui-core`: 0.1.0-alpha.3 -> 0.1.0-alpha.4
* `ratatui-crossterm`: 0.1.0-alpha.2 -> 0.1.0-alpha.3
* `ratatui-widgets`: 0.3.0-alpha.2 -> 0.3.0-alpha.3
* `ratatui-macros`: 0.7.0-alpha.1 -> 0.7.0-alpha.2
* `ratatui-termwiz`: 0.1.0-alpha.2 -> 0.1.0-alpha.3
* `ratatui-termion`: 0.1.0-alpha.2 -> 0.1.0-alpha.3
* `ratatui`: 0.30.0-alpha.2 -> 0.30.0-alpha.3

<details><summary><i><b>Changelog</b></i></summary><p>

## `ratatui-core`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-crossterm`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-widgets`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)* Make StatefulWidget and Ref work with unsized State by
@thscharler in [#1505](https://github.com/ratatui/ratatui/pull/1505)

-
[7b87509](7b875091e1)
*(uncategorized)* Typo by @marcoieni in
[#1480](https://github.com/ratatui/ratatui/pull/1480)

### Refactor

-
[f132fa1](f132fa1715)
*(table)* Small readability improvements by @joshka in
[#1510](https://github.com/ratatui/ratatui/pull/1510)

-
[904b0aa](904b0aa723)
*(uncategorized)* Move symbols to modules by @joshka in
[#1594](https://github.com/ratatui/ratatui/pull/1594)

-
[7c8573f](7c8573f575)
*(uncategorized)* Rearrange selection_spacing code by @raylu in
[#1540](https://github.com/ratatui/ratatui/pull/1540)

-
[217c57c](217c57cd60)
*(uncategorized)* Modularize backends by @orhun in
[#1508](https://github.com/ratatui/ratatui/pull/1508)

-
[e461b72](e461b724a6)
*(uncategorized)* Move {Stateful,}Widget{,Ref} types into individual
files by @joshka in
[#1479](https://github.com/ratatui/ratatui/pull/1479)

### Documentation

-
[d291042](d291042e69)
*(block)* Revise the block example by @orhun in
[#1520](https://github.com/ratatui/ratatui/pull/1520)

-
[fcde9cb](fcde9cb9c3)
*(changelog)* Fix typo by @orhun in
[#1463](https://github.com/ratatui/ratatui/pull/1463)

-
[3ae6bf1](3ae6bf1d6f)
*(contributing)* Use cargo-xtask for instructions by @orhun in
[#1509](https://github.com/ratatui/ratatui/pull/1509)

-
[04e1b32](04e1b32cd2)
*(layout)* Rename cassowary-rs references to cassowary by @miroim in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

-
[088aac1](088aac136d)
*(readme)* Tweak links and badges by @joshka in
[#1598](https://github.com/ratatui/ratatui/pull/1598)

-
[6e43672](6e436725e4)
*(readme)* Reimagine README.md by @orhun in
[#1569](https://github.com/ratatui/ratatui/pull/1569)

-
[8f28247](8f282473b2)
*(readme)* Correct examples links by @HoKim98 in
[#1484](https://github.com/ratatui/ratatui/pull/1484)

-
[9f90f74](9f90f7495f)
*(readme)* Fix broken link by @nilsmartel in
[#1485](https://github.com/ratatui/ratatui/pull/1485)

-
[260af68](260af68a34)
*(readme)* Include iocraft as an alternative by @kdheepak in
[#1483](https://github.com/ratatui/ratatui/pull/1483)

-
[dafb716](dafb716f9d)
*(widgets)* Add example for grouped barchart by @orhun in
[#1566](https://github.com/ratatui/ratatui/pull/1566)

-
[ed5dd73](ed5dd73084)
*(widgets)* Add example for tabs by @orhun in
[#1559](https://github.com/ratatui/ratatui/pull/1559)

-
[fab5321](fab532171d)
*(widgets)* Add example for scrollbar by @orhun in
[#1545](https://github.com/ratatui/ratatui/pull/1545)

-
[898aef6](898aef6e2f)
*(widgets)* Add example for list by @orhun in
[#1542](https://github.com/ratatui/ratatui/pull/1542)

-
[452366a](452366aa9e)
*(widgets)* Add example for sparkline by @orhun in
[#1556](https://github.com/ratatui/ratatui/pull/1556)

-
[6ddde0e](6ddde0e8a8)
*(widgets)* Add example for table by @orhun in
[#1557](https://github.com/ratatui/ratatui/pull/1557)

-
[93ad6b8](93ad6b828c)
*(widgets)* Update values in chart example by @orhun in
[#1558](https://github.com/ratatui/ratatui/pull/1558)

-
[15f442a](15f442a71e)
*(widgets)* Add example for paragraph by @orhun in
[#1544](https://github.com/ratatui/ratatui/pull/1544)

-
[17bba14](17bba14540)
*(widgets)* Move the logo example to widgets by @orhun in
[#1543](https://github.com/ratatui/ratatui/pull/1543)

-
[f2451e7](f2451e7f1e)
*(widgets)* Add example for gauge by @orhun in
[#1539](https://github.com/ratatui/ratatui/pull/1539)

-
[4f0a8b2](4f0a8b21af)
*(widgets)* Add example for canvas by @orhun in
[#1533](https://github.com/ratatui/ratatui/pull/1533)

-
[91147c4](91147c4d75)
*(widgets)* Add example for chart by @orhun in
[#1536](https://github.com/ratatui/ratatui/pull/1536)

-
[6dd25a3](6dd25a3111)
*(widgets)* Add example for calendar by @orhun in
[#1532](https://github.com/ratatui/ratatui/pull/1532)

-
[99ac005](99ac005b06)
*(widgets)* Add simple barchart example by @joshka in
[#1511](https://github.com/ratatui/ratatui/pull/1511)

-
[da05957](da05957fa0)
*(uncategorized)* Add widget-ref-container example by @joshka in
[#1603](https://github.com/ratatui/ratatui/pull/1603)

-
[1798512](1798512e94)
*(uncategorized)* Fix wording in user_input example by @dawedawe in
[#1611](https://github.com/ratatui/ratatui/pull/1611)

-
[03066d8](03066d81bf)
*(uncategorized)* Fix punctuation in canvas.rs documentation by
@dawedawe in [#1583](https://github.com/ratatui/ratatui/pull/1583)

-
[e411d9e](e411d9ec3e)
*(uncategorized)* Add input form example by @joshka in
[#1551](https://github.com/ratatui/ratatui/pull/1551)

-
[ed071f3](ed071f3723)
*(uncategorized)* Add mouse-drawing example by @joshka in
[#1546](https://github.com/ratatui/ratatui/pull/1546)

-
[46902f5](46902f5587)
*(uncategorized)* Improve docs for workspace crates by @orhun in
[#1490](https://github.com/ratatui/ratatui/pull/1490)

-
[a6b5792](a6b579223f)
*(uncategorized)* Fix example link in readme by @thomas-tacquet in
[#1462](https://github.com/ratatui/ratatui/pull/1462)

### Miscellaneous Tasks

-
[abe2f27](abe2f27328)
*(backend)* Change From<T> impls to new backend specific IntoBackend and
FromBackend traits by @joshka in
[#1464](https://github.com/ratatui/ratatui/pull/1464) [**breaking**]

-
[0a47ebd](0a47ebd94b)
*(bencher)* Update bencher CLI usage by @epompeii in
[#1470](https://github.com/ratatui/ratatui/pull/1470)

-
[a0979d6](a0979d6871)
*(build)* Remove cargo lint by @joshka in
[#1549](https://github.com/ratatui/ratatui/pull/1549)

-
[eaa4038](eaa403856e)
*(ci)* Install pre-built binaries for cargo-rdme by @orhun in
[#1477](https://github.com/ratatui/ratatui/pull/1477)

-
[e5e2316](e5e2316451)
*(ci)* Add check for keeping README.md up-to-date by @orhun in
[#1473](https://github.com/ratatui/ratatui/pull/1473)

-
[2ef3583](2ef3583eff)
*(ci)* Replace cargo-make with a custom cargo-xtask by @joshka in
[#1461](https://github.com/ratatui/ratatui/pull/1461)

-
[98df774](98df774d7f)
*(core)* Move core types to ratatui-core by @joshka in
[#1460](https://github.com/ratatui/ratatui/pull/1460)

-
[35eba76](35eba76b4d)
*(example)* Move demo2 to top level folder by @joshka in
[#1524](https://github.com/ratatui/ratatui/pull/1524)

-
[5f57d35](5f57d35234)
*(examples)* Add colors explorer demo app by @orhun in
[#1580](https://github.com/ratatui/ratatui/pull/1580)

-
[5c021bf](5c021bf344)
*(examples)* Add chart demo app by @orhun in
[#1579](https://github.com/ratatui/ratatui/pull/1579)

-
[9721300](9721300a47)
*(examples)* Add canvas demo app by @orhun in
[#1578](https://github.com/ratatui/ratatui/pull/1578)

-
[a6a1368](a6a1368250)
*(examples)* Add calendar explorer demo app by @orhun in
[#1571](https://github.com/ratatui/ratatui/pull/1571)

-
[819e92c](819e92cd44)
*(examples)* Add weather demo app by @orhun in
[#1567](https://github.com/ratatui/ratatui/pull/1567)

-
[b5f7e44](b5f7e44183)
*(examples)* Move async example to apps by @joshka in
[#1503](https://github.com/ratatui/ratatui/pull/1503)

-
[17316ec](17316ec5d0)
*(github)* Enable sponsorship button by @orhun in
[#1478](https://github.com/ratatui/ratatui/pull/1478)

-
[d3f01eb](d3f01ebf6e)
*(lint)* Ensure lint config is correct by @joshka in
[#1528](https://github.com/ratatui/ratatui/pull/1528)

-
[2b7ec5c](2b7ec5cb7f)
*(widgets)* Enable calendar widget as default by @orhun in
[#1521](https://github.com/ratatui/ratatui/pull/1521)

-
[d201b8e](d201b8e5dd)
*(xtask)* Check lints for only library targets by @orhun in
[#1531](https://github.com/ratatui/ratatui/pull/1531)

-
[6f21319](6f213191ef)
*(uncategorized)* Rename examples with clashing names by @joshka in
[#1597](https://github.com/ratatui/ratatui/pull/1597)

-
[11cbb2b](11cbb2ba87)
*(uncategorized)* Use cargo xtask for bacon clippy command by @joshka in
[#1592](https://github.com/ratatui/ratatui/pull/1592)

-
[b544e39](b544e394c9)
*(uncategorized)* Use clap instead of argh for demo example by @joshka
in [#1591](https://github.com/ratatui/ratatui/pull/1591)

-
[9a54198](9a541981b8)
*(uncategorized)* Make source files non-executable by @orhun in
[#1577](https://github.com/ratatui/ratatui/pull/1577)

-
[357ae7e](357ae7e251)
*(uncategorized)* Move terminal types to ratatui-core by @joshka in
[#1530](https://github.com/ratatui/ratatui/pull/1530) [**breaking**]

-
[21e62d8](21e62d84c2)
*(uncategorized)* Move the demo example to main folder by @joshka in
[#1523](https://github.com/ratatui/ratatui/pull/1523)

-
[fbf6050](fbf6050c86)
*(uncategorized)* Prepare alpha modularization release by @joshka in
[#1525](https://github.com/ratatui/ratatui/pull/1525)

-
[e4e95bc](e4e95bcecf)
*(uncategorized)* Remove --color always flags from bacon.toml by @joshka
in [#1502](https://github.com/ratatui/ratatui/pull/1502)

-
[a41c97b](a41c97b413)
*(uncategorized)* Move unstable widget refs to ratatui by @joshka in
[#1491](https://github.com/ratatui/ratatui/pull/1491) [**breaking**]

-
[e7085e3](e7085e3a3e)
*(uncategorized)* Move widgets into ratatui-widgets crate by @joshka in
[#1474](https://github.com/ratatui/ratatui/pull/1474)

-
[f1d0a18](f1d0a18375)
*(uncategorized)* Move ratatui crate into workspace folder by @joshka in
[#1459](https://github.com/ratatui/ratatui/pull/1459)

-
[55fb2d2](55fb2d2e56)
*(uncategorized)* Update repo links to ratatui instead of ratatui-org by
@joshka in [#1458](https://github.com/ratatui/ratatui/pull/1458)

### Continuous Integration

-
[4a871f9](4a871f993e)
*(uncategorized)* Refactor xtask / toml formatting by @joshka in
[#1602](https://github.com/ratatui/ratatui/pull/1602)

### New Contributors

* @dawedawe made their first contribution in
[#1611](https://github.com/ratatui/ratatui/pull/1611)
* @Its-Just-Nans made their first contribution in
[#1584](https://github.com/ratatui/ratatui/pull/1584)
* @MarSik made their first contribution in
[#1541](https://github.com/ratatui/ratatui/pull/1541)
* @raylu made their first contribution in
[#1540](https://github.com/ratatui/ratatui/pull/1540)
* @renesat made their first contribution in
[#1501](https://github.com/ratatui/ratatui/pull/1501)
* @HoKim98 made their first contribution in
[#1484](https://github.com/ratatui/ratatui/pull/1484)
* @nilsmartel made their first contribution in
[#1485](https://github.com/ratatui/ratatui/pull/1485)
* @marcoieni made their first contribution in
[#1480](https://github.com/ratatui/ratatui/pull/1480)
* @epompeii made their first contribution in
[#1470](https://github.com/ratatui/ratatui/pull/1470)
* @thomas-tacquet made their first contribution in
[#1462](https://github.com/ratatui/ratatui/pull/1462)
* @miroim made their first contribution in
[#1448](https://github.com/ratatui/ratatui/pull/1448)

**Full Changelog**:
https://github.com/ratatui/ratatui/compare/v0.29.0...0.30.0-alpha.1
</blockquote>

## `ratatui-macros`

<blockquote>

##
[0.30.0-alpha.1](https://github.com/ratatui/ratatui/releases/tag/0.30.0-alpha.1)
- 2025-01-14

0.30.0-alpha.1 is a pre-release of the upcoming 0.30.0 release. It is
intended for testing and
feedback. Please report any issues you encounter. The primary change is
that we've split the crate
into multiple crates. The main crate is now `ratatui-core` and the
widgets are in `ratatui-widgets`.
This allows for widget crates to depend on a stable core crate, and for
the core crate to be used
without widgets.

### Features

-
[56d5e05](56d5e05762)
*(bar)* Update label and text_value to accept Into<> by @Emivvvvv in
[#1471](https://github.com/ratatui/ratatui/pull/1471) [**breaking**]

-
[b76ad3b](b76ad3b02e)
*(bar)* Impl Styled for Bar by @Emivvvvv in
[#1476](https://github.com/ratatui/ratatui/pull/1476)

-
[369b18e](369b18eef2)
*(barchart)* Reduce barchart creation verbosity by @Emivvvvv in
[#1453](https://github.com/ratatui/ratatui/pull/1453)

-
[9275d34](9275d3421c)
*(layout)* Add Offset::new() constructor by @joshka in
[#1547](https://github.com/ratatui/ratatui/pull/1547)

-
[ff729b7](ff729b7607)
*(scrollbar)* Support retrieving the current position of state by @orhun
in [#1552](https://github.com/ratatui/ratatui/pull/1552)

-
[ce4856a](ce4856a65f)
*(widgets)* Add the missing constructor to canvas types by @orhun in
[#1538](https://github.com/ratatui/ratatui/pull/1538)

-
[50ba965](50ba96518f)
*(uncategorized)* Add a new RatatuiMascot widget by @Its-Just-Nans in
[#1584](https://github.com/ratatui/ratatui/pull/1584)

-
[1d28c89](1d28c89fe5)
*(uncategorized)* Add conversions for anstyle by @joshka in
[#1581](https://github.com/ratatui/ratatui/pull/1581)

### Bug Fixes

-
[860e48b](860e48b0f0)
*(buffer)* Buffer::get_pos() now correctly handles index > u16::MAX by
@joshka in [#1447](https://github.com/ratatui/ratatui/pull/1447)

-
[ec30390](ec30390446)
*(canvas)* Round coordinates to nearest grid cell by @joshka in
[#1507](https://github.com/ratatui/ratatui/pull/1507)

-
[afd1ce1](afd1ce179b)
*(canvas)* Lines that start outside the visible grid are now drawn by
@renesat in [#1501](https://github.com/ratatui/ratatui/pull/1501)

-
[18e70d3](18e70d3d51)
*(crossterm)* Terminal should keep Bold when removing Dim by @MarSik in
[#1541](https://github.com/ratatui/ratatui/pull/1541)

-
[a692a6e](a692a6e371)
*(lint)* Apply rust 1.84 clippy suggestions by @joshka in
[#1612](https://github.com/ratatui/ratatui/pull/1612)

-
[3b13240](3b13240728)
*(scrollbar)* Check for area.is_empty() before rendering by @farmeroy in
[#1529](https://github.com/ratatui/ratatui/pull/1529)

-
[f57b696](f57b696fdc)
*(span)* Dont render control characters by @EdJoPaTo in
[#1312](https://github.com/ratatui/ratatui/pull/1312)

-
[2ce958e](2ce958e38c)
*(table)* Allow display of additional table row, if row height > 1 by
@Lunderberg in [#1452](https://github.com/ratatui/ratatui/pull/1452)

-
[2892bdd](2892bddce6)
*(uncategorized)* Rust 1.83 clippy lints by @joshka in
[#1527](https://github.com/ratatui/ratatui/pull/1527)

-
[36e2d1b](36e2d1bda1)
*(uncategorized)* Add feature(doc_cfg) when generating docs by @joshka
in [#1506](https://github.com/ratatui/ratatui/pull/1506)

-
[4d7704f](4d7704fba5)
*(uncategorized)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-13 12:48:15 -07:00
Josh McKinney
a0746bad7e ci: add job to check no-std build (#1851)
Uses x86_64-unknown-none as an arbitrary target that does not support
the std library

Resolves: https://github.com/ratatui/ratatui/issues/1843
2025-05-13 12:43:10 -07:00
Josh McKinney
4fcd238e1e feat: support no-std for calendar widget (#1852)
Removes the CalendarEventStore::today() function in no-std environments
2025-05-13 11:38:39 -07:00
Jagoda Estera Ślązak
79d5165cae fix(no_std): propagate std feature flag to dependencies (#1838)
Disables `std` feature flags in dependencies and only enables them with
`ratatui` and `ratatui-core`'s `std` feature flag. This partially fixes the
issue of still depending on `std`, when `std` feature flag is disabled.
2025-05-13 10:48:45 -07:00
Jagoda Estera Ślązak
00da8c6203 fix(no_std): provide f64 polyfills for no_std compatibility (#1840)
Related: https://github.com/rust-lang/rust/issues/137578
2025-05-13 10:37:18 -07:00
dependabot[bot]
54bb651008 build(deps): bump hashbrown from 0.15.2 to 0.15.3 (#1821) 2025-05-12 08:45:08 -07:00
Jagoda Estera Ślązak
daeba85f14 build(deps): bump kasuari and line-clipping (#1844) 2025-05-12 01:55:49 -07:00
Josh McKinney
93143126b3 fix(layout): feature flag cache related types (#1842) 2025-05-11 01:55:12 -07:00
Jagoda Estera Ślązak
b46778dd1d chore(breaking-changes): add details to no_std-related breaking changes (#1828)
Some corrections and added details to BREAKING-CHANGES.md.

I decided to remove:

- `Backend` now uses `Self::Error` for error handling instead of
`std::io::Error`
- `Terminal<B>` now uses `B::Error` for error handling instead of
`std::io::Error`

...as we are still using `std::io::Error` in built-in backends, so this
will only be breaking if a third-party backend decides to use a custom
error other than `std::io::Error`, which would be a breaking change in
downstream and not `ratatui`.

The exception to that is `TestBackend`, which uses `Infallible`, but
this already has its own breaking changes entry.
2025-05-11 11:45:30 +03:00
Josh McKinney
8d60e96b2b refactor(examples): use crossterm event methods (#1792)
Crossterm 0.29 introduced methods to easily check / extract the event
type. E.g. as_key_press_event() and is_key_press(). This commit
updates the examples to use these methods instead of matching on
the event type. This makes the code cleaner and easier to read.

Also does a general cleanup of the event handling code in the examples.
2025-05-10 10:35:12 -07:00
Jagoda Estera Ślązak
1874b9dd55 chore: move time to dev-dependencies (#1835) 2025-05-10 08:11:00 -07:00
Jagoda Estera Ślązak
2dd1977c59 fix(layout-cache): import NonZeroUsize only when layout-cache is enabled (#1839)
This silences unused import warning, when `layout-cache` is disabled.
2025-05-10 08:09:47 -07:00
三咲雅 · Misaki Masa
c238aca83a fix: padding_right() should set right padding instead of left (#1837)
Fixes https://github.com/ratatui/ratatui/issues/1836
2025-05-09 23:31:16 -07:00
Jagoda Estera Ślązak
60a81913ed chore(widgets): move crossterm to dev-dependencies (#1834)
Crossterm in widgets is used only in tests.
2025-05-09 16:16:32 -07:00
Tayfun Bocek
2e54d5e22c fix(macros): use $crate re-export in text macro (#1832) 2025-05-09 09:54:15 -07:00
Jagoda Estera Ślązak
3e1c72fb27 feat(no_std)!: make ratatui compatible with #![no_std] (#1794)
Resolves #1781

This PR makes it possible to compile ratatui with `#![no_std]`.
Also makes me answer "We Are So Embedded" to "Are We Embedded Yet?"
2025-05-07 13:42:03 -07:00
Jagoda Estera Ślązak
ab48c06171 feat(no_std)!: option to disable layout cache for no_std compatibility (#1795)
Resolves #1780 

BREAKING CHANGE: Disabling `default-features` will now disable layout
cache, which can have a negative impact on performance.
`Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` are now only
available if `layout-cache` feature is enabled.
2025-05-07 13:00:22 -07:00
Jagoda Estera Ślązak
09173d1829 feat(no_std)!: make TestBackend::Error Infallible (#1823)
BREAKING CHANGE: `TestBackend` now uses `core::convert::Infallible` for
error handling instead of `std::io::Error`
2025-05-07 00:33:26 -07:00
Jagoda Estera Ślązak
c7912f3990 docs(breaking-changes): fix header level (#1825) 2025-05-06 23:17:37 -07:00
M Arjun Krishna
53cdbbccd5 feat: Enable serde propagation to backend crates (crossterm, termion) (#1812)
This PR propagates the serde feature from the main ratatui crate to the
ratatui-crossterm and ratatui-termion backend crates. Solves #1805
2025-04-29 13:29:49 -07:00
Josh McKinney
1197b2a02c docs(contributing): add note about using nightly for formatting (#1816) 2025-04-28 21:25:09 +03:00
Tatesa Uradnik
08b08cc45b feat(rect): centering (#1814)
Resolves #617
2025-04-28 11:16:58 -07:00
Jagoda Estera Ślązak
007713e50a feat(no_std)!: replace Backend's io::Error usages with associated Error type (#1778)
Resolves #1775 

BREAKING CHANGE: Custom backends now have to implement `Backend::Error`
and `Backend::clear_region`. Additionally some generic `Backend` usage
will have to explicitly set trait bounds for `Backend::Error`.
2025-04-23 15:05:59 -07:00
dependabot[bot]
3745a67ba0 build(deps): bump rand from 0.9.0 to 0.9.1 (#1804)
Bumps [rand](https://github.com/rust-random/rand) from 0.9.0 to 0.9.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-random/rand/blob/master/CHANGELOG.md">rand's
changelog</a>.</em></p>
<blockquote>
<h2>[0.9.1] - 2025-04-17</h2>
<h3>Security and unsafe</h3>
<ul>
<li>Revise &quot;not a crypto library&quot; policy again (<a
href="https://redirect.github.com/rust-random/rand/issues/1565">#1565</a>)</li>
<li>Remove <code>zerocopy</code> dependency from <code>rand</code> (<a
href="https://redirect.github.com/rust-random/rand/issues/1579">#1579</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fix feature <code>simd_support</code> for recent nightly rust (<a
href="https://redirect.github.com/rust-random/rand/issues/1586">#1586</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>Allow <code>fn rand::seq::index::sample_weighted</code> and <code>fn
IndexedRandom::choose_multiple_weighted</code> to return fewer than
<code>amount</code> results (<a
href="https://redirect.github.com/rust-random/rand/issues/1623">#1623</a>),
reverting an undocumented change (<a
href="https://redirect.github.com/rust-random/rand/issues/1382">#1382</a>)
to the previous release.</li>
</ul>
<h3>Additions</h3>
<ul>
<li>Add <code>rand::distr::Alphabetic</code> distribution. (<a
href="https://redirect.github.com/rust-random/rand/issues/1587">#1587</a>)</li>
<li>Re-export <code>rand_core</code> (<a
href="https://redirect.github.com/rust-random/rand/issues/1604">#1604</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ec6d5c06a5"><code>ec6d5c0</code></a>
Prepare rand_core v0.9.1 (<a
href="https://redirect.github.com/rust-random/rand/issues/1591">#1591</a>)</li>
<li><a
href="6a06056e8a"><code>6a06056</code></a>
rand_core: introduce an UnwrapMut wrapper (<a
href="https://redirect.github.com/rust-random/rand/issues/1589">#1589</a>)</li>
<li><a
href="8929123b4d"><code>8929123</code></a>
Add <code>Alphabetic</code> distribution (<a
href="https://redirect.github.com/rust-random/rand/issues/1587">#1587</a>)</li>
<li><a
href="06b16426bd"><code>06b1642</code></a>
Remove unnecessary underscore from `impl&lt;T, const N: usize&gt;
Distribution&lt;[T; ...</li>
<li><a
href="49d76cd7b4"><code>49d76cd</code></a>
rename extract to extract_lane (<a
href="https://redirect.github.com/rust-random/rand/issues/1586">#1586</a>)</li>
<li><a
href="e0a70fd8be"><code>e0a70fd</code></a>
Change to use <code>array::from_fn</code> in <code>Distribution\&lt;[T;
N]&gt; for StandardUniform</code> ...</li>
<li><a
href="0bc3f652c4"><code>0bc3f65</code></a>
Move rand distr (<a
href="https://redirect.github.com/rust-random/rand/issues/1577">#1577</a>)</li>
<li><a
href="2677c49960"><code>2677c49</code></a>
Revise &quot;not a crypto library&quot; policy and SECURITY.md (<a
href="https://redirect.github.com/rust-random/rand/issues/1565">#1565</a>)</li>
<li><a
href="bfd1826c36"><code>bfd1826</code></a>
SeedableRng docs: add note on (lack of) reproducibility (<a
href="https://redirect.github.com/rust-random/rand/issues/1572">#1572</a>)</li>
<li><a
href="c01aee7a13"><code>c01aee7</code></a>
Fix some links (<a
href="https://redirect.github.com/rust-random/rand/issues/1571">#1571</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-random/rand/compare/0.9.0...rand_core-0.9.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rand&package-manager=cargo&previous-version=0.9.0&new-version=0.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-21 21:14:44 +03:00
dependabot[bot]
98f77f296b build(deps): bump clap from 4.5.36 to 4.5.37 (#1803)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.36 to 4.5.37.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.37</h2>
<h2>[4.5.37] - 2025-04-18</h2>
<h3>Features</h3>
<ul>
<li>Added <code>ArgMatches::try_clear_id()</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.37] - 2025-04-18</h2>
<h3>Features</h3>
<ul>
<li>Added <code>ArgMatches::try_clear_id()</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c54ffa17f5"><code>c54ffa1</code></a>
chore: Release</li>
<li><a
href="26eab7b4e5"><code>26eab7b</code></a>
docs: Update changelog</li>
<li><a
href="f275804c23"><code>f275804</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5805">#5805</a>
from epage/style</li>
<li><a
href="7c7742cae8"><code>7c7742c</code></a>
fix(complete): Adjust dynamic for MSRV</li>
<li><a
href="f1ae3c0e49"><code>f1ae3c0</code></a>
style: Make clippy happy</li>
<li><a
href="5c932b7079"><code>5c932b7</code></a>
chore(deps): Update Rust crate divan to v0.1.15 (<a
href="https://redirect.github.com/clap-rs/clap/issues/5798">#5798</a>)</li>
<li><a
href="bc0537f589"><code>bc0537f</code></a>
chore(deps): Update compatible (dev) (<a
href="https://redirect.github.com/clap-rs/clap/issues/5797">#5797</a>)</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.36...clap_complete-v4.5.37">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.36&new-version=4.5.37)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-21 21:01:16 +03:00
Tyler Breisacher
d88cd29079 chore: Add 'const' to functions where possible. (#1802)
The Clippy check for this (missing_const_for_fn) is already enabled, but
catches more cases in upcoming toolchain versions.

This is part of the work to unblock #1727
2025-04-20 18:48:49 -07:00
Josh McKinney
79cc92dfb6 chore(deps): bump proc-macro2 (#1793) 2025-04-17 01:03:23 -07:00
Josh McKinney
5a3be12ebd ci: run clippy using rust stable and beta (#1757)
This makes it possible to pre-emptively catch upcoming clippy issues. We
should not block PRs on these generally (unless the PR introduces a
valid clippy warning), so the workflow is set up to not fail on beta.
2025-04-15 11:09:20 -07:00
Josh McKinney
bb068892c9 chore: fix io_other_error clippy lints (#1756)
Pre-emptive fix for new lint to be added in 1.87 (currently in beta).

https://rust-lang.github.io/rust-clippy/master/index.html\#io_other_error
2025-04-15 11:09:05 -07:00
cgzones
deb1b8ec43 test: ensure Style::new() and Style::default() are equivalent (#1789) 2025-04-15 10:21:19 -07:00
cgzones
0f80c5e87e chore!: use expect() instead of allow() for lint overrides (#1786)
BREAKING CHANGE: MSRV is now 1.81
2025-04-15 10:20:22 -07:00
dependabot[bot]
a03ba0de5c build(deps): bump crossterm from 0.28.1 to 0.29.0 (#1771)
Bumps [crossterm](https://github.com/crossterm-rs/crossterm) from 0.28.1
to 0.29.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crossterm-rs/crossterm/releases">crossterm's
releases</a>.</em></p>
<blockquote>
<h2>0.29</h2>
<h1>Version 0.29</h1>
<h2>Added </h2>
<ul>
<li>Copy to clipboard using OSC52 (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/974">#974</a>)</li>
<li>Derive standard traits for &quot;SetCursorStyle&quot; (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/909">#909</a>)</li>
<li>Add query_keyboard_enhancement_flags to read enabled flags (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/958">#958</a>)</li>
<li>Add is_* and as_* methods to the event enums (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/949">#949</a>)</li>
<li>Add a feature flag for derive_more impls (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/970">#970</a>)</li>
<li>Update rustix to 1.0 (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/982">#982</a>)</li>
<li>Upgrade various dependencies</li>
</ul>
<h2>Breaking ⚠️</h2>
<ul>
<li>Correctly fix KeyModifiers Display impl Properly adding + in between
modifiers (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/979">#979</a>)</li>
</ul>
<p><a href="https://github.com/joshka"><code>@​joshka</code></a> <a
href="https://github.com/linrongbin16"><code>@​linrongbin16</code></a>
<a href="https://github.com/kmicklas"><code>@​kmicklas</code></a> <a
href="https://github.com/maciek50322"><code>@​maciek50322</code></a> <a
href="https://github.com/rosew0od"><code>@​rosew0od</code></a> <a
href="https://github.com/sxyazi"><code>@​sxyazi</code></a> <a
href="https://github.com/the-mikedavis"><code>@​the-mikedavis</code></a>
<a href="https://github.com/hthuz"><code>@​hthuz</code></a> <a
href="https://github.com/aschey"><code>@​aschey</code></a> <a
href="https://github.com/naseschwarz"><code>@​naseschwarz</code></a> <a
href="https://github.com/Flokkq"><code>@​Flokkq</code></a> <a
href="https://github.com/gaesa"><code>@​gaesa</code></a> <a
href="https://github.com/WindSoilder"><code>@​WindSoilder</code></a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md">crossterm's
changelog</a>.</em></p>
<blockquote>
<h1>Unreleased</h1>
<h1>Version 0.29</h1>
<h2>Added </h2>
<ul>
<li>Copy to clipboard using OSC52 (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/974">#974</a>)</li>
<li>Derive standard traits for &quot;SetCursorStyle&quot; (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/909">#909</a>)</li>
<li>Add query_keyboard_enhancement_flags to read enabled flags (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/958">#958</a>)</li>
<li>Add is_* and as_* methods to the event enums (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/949">#949</a>)</li>
<li>Add a feature flag for derive_more impls (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/970">#970</a>)</li>
<li>Update rustix to 1.0 (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/982">#982</a>)</li>
</ul>
<h2>Breaking ⚠️</h2>
<ul>
<li>Correctly fix KeyModifiers Display impl Properly adding + in between
modifiers (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/979">#979</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/crossterm-rs/crossterm/commits/0.29">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crossterm&package-manager=cargo&previous-version=0.28.1&new-version=0.29.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-04-15 09:35:41 -07:00
Jagoda Estera Ślązak
b4a71e5fd5 chore(lint): add std instead of core/alloc lints to ratatui-widgets (#1763)
Resolves #1761
2025-04-15 09:21:46 -07:00
Jagoda Estera Ślązak
a42a17e184 feat(no_std): make ratatui-widgets no_std (#1779)
Resolves #1776
2025-04-15 09:16:06 -07:00
Edwin Burwell
07bec55b7d refactor(no_std): Make usages of std explicit in ratatui-core. (#1782)
### This commit does the following:

- Adds `#[no_std]` to `lib.rs`.
- Adds `extern crate std;` to `lib.rs`.
- Updates `ratatui-core` to explicitly `use` items from std and alloc.
- Prefers `use`-ing alloc over std when possible.

### Explanation:

This allows usages of `std` in `ratatui-core` to be clearly pointed out
and dealt with individually.

Eventually, when `std` is to be feature gated, the associated commit
will be much cleaner.
2025-04-15 09:14:25 -07:00
cgzones
02e53de0f8 refactor: make use of iter::repeat_n() (#1788)
Applied via clippy --fix.
Available since 1.82.0.
2025-04-14 21:43:38 +03:00
cgzones
c90ba9781e fix: avoid unnecessary imports in minimal build (#1787)
core::ops::Range is only used with the feature `scrolling-regions`.
Ensure a minimal `cargo check` reports no warnings.
2025-04-14 21:38:47 +03:00
dependabot[bot]
799a6c66a7 build(deps): bump clap from 4.5.35 to 4.5.36 (#1790)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.35 to 4.5.36.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.36</h2>
<h2>[4.5.36] - 2025-04-11</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Revert 4.5.35's &quot;Don't leave space for shorts
if there are none&quot; for now</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.36] - 2025-04-11</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Revert 4.5.35's &quot;Don't leave space for shorts
if there are none&quot; for now</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7a6475e3c1"><code>7a6475e</code></a>
chore: Release</li>
<li><a
href="0266c4197f"><code>0266c41</code></a>
docs: Update changelog</li>
<li><a
href="6ec0b43448"><code>6ec0b43</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5791">#5791</a>
from okapia/zsh-default-fallback</li>
<li><a
href="e40168c2fd"><code>e40168c</code></a>
fix(zsh): Use _default as zsh completion fallback</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.35...clap_complete-v4.5.36">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.35&new-version=4.5.36)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 20:49:18 +03:00
Ben Beasley
fc4b996c59 build(deps): update compact_str requirement from 0.8.1 to 0.9.0 (#1783)
Looking at
https://github.com/ParkMyCar/compact_str/blob/v0.9.0/CHANGELOG.md#090,
there are a few API changes, but it doesn’t seem like anything there
should be a problem given that `cargo test` still passes in
`ratatui-core/`.
2025-04-13 10:51:21 +03:00
Austin Schey
6836a6903e feat: implement styled for other primitives (#1684) 2025-04-11 07:52:33 -07:00
Cristian Le
d28a08237a chore(deps): drop unused font8x8 dependency (#1777) 2025-04-11 15:28:11 +03:00
dependabot[bot]
5f8c159484 build(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 in the cargo group (#1774)
Bumps the cargo group with 1 update:
[crossbeam-channel](https://github.com/crossbeam-rs/crossbeam).

Updates `crossbeam-channel` from 0.5.14 to 0.5.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crossbeam-rs/crossbeam/releases">crossbeam-channel's
releases</a>.</em></p>
<blockquote>
<h2>crossbeam-channel 0.5.15</h2>
<ul>
<li>Fix regression introduced in 0.5.12 that can lead to a double free
when dropping unbounded channel. (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1187">#1187</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d35ffde18a"><code>d35ffde</code></a>
Prepare for the next release</li>
<li><a
href="6ec74ecae8"><code>6ec74ec</code></a>
crossbeam-channel: prevent double free on Drop (<a
href="https://redirect.github.com/crossbeam-rs/crossbeam/issues/1187">#1187</a>)</li>
<li>See full diff in <a
href="https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.14...crossbeam-channel-0.5.15">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crossbeam-channel&package-manager=cargo&previous-version=0.5.14&new-version=0.5.15)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ratatui/ratatui/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-11 14:36:09 +03:00
Jagoda Estera Ślązak
5a232a3115 feat(no_std): remove redundant std usages in ratatui-widgets (#1762) 2025-04-08 08:59:31 -07:00
dependabot[bot]
577bd17bba build(deps): bump clap from 4.5.34 to 4.5.35 (#1770)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.34 to 4.5.35.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.35</h2>
<h2>[4.5.35] - 2025-04-01</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Align positionals and flags when put in the same
<code>help_heading</code></li>
<li><em>(help)</em> Don't leave space for shorts if there are none</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.35] - 2025-04-01</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Align positionals and flags when put in the same
<code>help_heading</code></li>
<li><em>(help)</em> Don't leave space for shorts if there are none</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="55a18f518b"><code>55a18f5</code></a>
chore: Release</li>
<li><a
href="3b0563580d"><code>3b05635</code></a>
fix(complete): Ensure new enough clap is used</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.34...clap_complete-v4.5.35">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.34&new-version=4.5.35)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 13:23:20 +03:00
dependabot[bot]
fdc1746eff build(deps): bump tokio from 1.44.1 to 1.44.2 (#1769)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.44.1 to 1.44.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.44.2</h2>
<p>This release fixes a soundness issue in the broadcast channel. The
channel
accepts values that are <code>Send</code> but <code>!Sync</code>.
Previously, the channel called
<code>clone()</code> on these values without synchronizing. This release
fixes the channel
by synchronizing calls to <code>.clone()</code> (Thanks Austin Bonander
for finding and
reporting the issue).</p>
<h3>Fixed</h3>
<ul>
<li>sync: synchronize <code>clone()</code> call in broadcast channel (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7232">#7232</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/7232">#7232</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7232">tokio-rs/tokio#7232</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ec4b1d7215"><code>ec4b1d7</code></a>
chore: forward port 1.43.x</li>
<li><a
href="e3c3a56718"><code>e3c3a56</code></a>
Merge branch 'tokio-1.43.x' into forward-port-1.43.x</li>
<li><a
href="a7b658c35b"><code>a7b658c</code></a>
chore: prepare Tokio v1.43.1 release</li>
<li><a
href="c1c8d1033d"><code>c1c8d10</code></a>
Merge remote-tracking branch 'origin/tokio-1.38.x' into
forward-port-1.38.x</li>
<li><a
href="aa303bc205"><code>aa303bc</code></a>
chore: prepare Tokio v1.38.2 release</li>
<li><a
href="7b6ccb515f"><code>7b6ccb5</code></a>
chore: backport CI fixes</li>
<li><a
href="4b174ce2c9"><code>4b174ce</code></a>
sync: fix cloning value when receiving from broadcast channel</li>
<li>See full diff in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.44.1...tokio-1.44.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.44.1&new-version=1.44.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 13:23:02 +03:00
Josh McKinney
fcb47d60f3 feat!: rename Alignment to HorizontalAlignment and add VerticalAlignment (#1735)
We don't anticipate removing or deprecating the type alias in the near
future, but it is recommended to update your imports to use the new
name.

Added a VerticalAlignment enum to make the API more consistent. We don't
have a specific use case for it yet, but it's better to add it now and
be able to use it in the future.

BREAKING-CHANGE: The `Alignment` enum has been renamed to
`HorizontalAlignment` to better reflect its purpose. A type alias has
been added to maintain backwards compatibility, however there are some
cases where type aliases are not enough to maintain backwards
compatibility. E.g. when using glob imports to import all the enum
variants. This should not affect most users, but it is recommended to
update your imports to use the new name.

```diff
- use ratatui::layout::Alignment;
+ use ratatui::layout::HorizontalAlignment;

- use Alignment::*;
+ use HorizontalAlignment::*;
```
2025-04-06 20:00:59 +03:00
Jagoda Estera Ślązak
2be9ccb120 docs(layout): remove unnecessary path prefix (#1766) 2025-04-06 18:19:36 +03:00
Jagoda Estera Ślązak
b669cebcaf docs(layout): change cassowary to kasuari crate reference (#1765) 2025-04-06 18:19:19 +03:00
Jagoda Estera Ślązak
cef617cc35 chore(lint): add std instead of core/alloc lints to ratatui-core (#1759)
Resolves #1752
2025-04-04 03:59:22 -07:00
Josh McKinney
3d5b250e74 build(deps): use kasuari instead of cassowary (#1758)
[Kasuari](https://github.com/ratatui/kasuari) is a maintained fork of Cassowary.
2025-04-04 00:03:39 -07:00
Jagoda Estera Ślązak
ebe10cd81f feat(no_std): remove redundant std usages in ratatui-core (#1753)
Resolves https://github.com/ratatui/ratatui/issues/1751
2025-04-03 20:02:54 -07:00
Jagoda Estera Ślązak
416ebdf8c8 fix: correct clippy errors introduced by rust 1.86.0 update (#1755)
New version of rust (1.86.0) caused CI to fail.
2025-04-03 16:43:12 -07:00
Jagoda Estera Ślązak
ce16692b9a docs(release): fix typo (#1754) 2025-04-03 21:51:03 +03:00
EdJoPaTo
ba9eed7742 perf(table): replace while loop with simple min operation (#1747) 2025-04-02 14:55:47 -07:00
dependabot[bot]
c27fba06f1 build(deps): bump clap from 4.5.32 to 4.5.34 (#1742)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.32 to 4.5.34.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.34</h2>
<h2>[4.5.34] - 2025-03-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Don't add extra blank lines with
<code>flatten_help(true)</code> and subcommands without arguments</li>
</ul>
<h2>v4.5.33</h2>
<h2>[4.5.33] - 2025-03-26</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> When showing the usage of a suggestion for an
unknown argument, don't show the group</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.34] - 2025-03-27</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Don't add extra blank lines with
<code>flatten_help(true)</code> and subcommands without arguments</li>
</ul>
<h2>[4.5.33] - 2025-03-26</h2>
<h3>Fixes</h3>
<ul>
<li><em>(error)</em> When showing the usage of a suggestion for an
unknown argument, don't show the group</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5d2cdac3e6"><code>5d2cdac</code></a>
chore: Release</li>
<li><a
href="f1c10ebe58"><code>f1c10eb</code></a>
docs: Update changelog</li>
<li><a
href="a4d1a7fe2b"><code>a4d1a7f</code></a>
chore(ci): Take a break from template updates</li>
<li><a
href="e95ed396c4"><code>e95ed39</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5775">#5775</a>
from vivienm/master</li>
<li><a
href="18f8d4c3f5"><code>18f8d4c</code></a>
chore(deps): Update Rust Stable to v1.82 (<a
href="https://redirect.github.com/clap-rs/clap/issues/5788">#5788</a>)</li>
<li><a
href="f35d8e09fb"><code>f35d8e0</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5787">#5787</a>
from epage/template</li>
<li><a
href="1389d7d689"><code>1389d7d</code></a>
chore: Update from '_rust/main' template</li>
<li><a
href="dbc9faa79d"><code>dbc9faa</code></a>
chore(ci): Initialize git for template update</li>
<li><a
href="3dac2f3683"><code>3dac2f3</code></a>
chore(ci): Get history for template update</li>
<li><a
href="e1f77dacf1"><code>e1f77da</code></a>
chore(ci): Fix branch for template update</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.32...clap_complete-v4.5.34">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.32&new-version=4.5.34)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 07:33:01 +03:00
dependabot[bot]
497b88e237 build(deps): bump termwiz from 0.23.0 to 0.23.3 (#1736)
Bumps [termwiz](https://github.com/wezterm/wezterm) from 0.23.0 to
0.23.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/wezterm/wezterm/releases">termwiz's
releases</a>.</em></p>
<blockquote>
<h2>Nightly Builds</h2>
<p>Ignore the sources associated with this release: it's just the
readme.
This release holds builds generated by the nightly build process that
runs in the CI/CD environment.
These builds may be unstable or unusable; they are simply a build of
whatever is in master at the time that the nightly build runs.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4bf28e253c"><code>4bf28e2</code></a>
deps: set workspace pest dep to 2.7</li>
<li><a
href="d0ff5cb892"><code>d0ff5cb</code></a>
termwiz: update changelog</li>
<li><a
href="994c0a39b6"><code>994c0a3</code></a>
add Cargo.lock</li>
<li><a
href="8b7ca454b5"><code>8b7ca45</code></a>
termwiz: bump version</li>
<li><a
href="eb9f8604e1"><code>eb9f860</code></a>
fix: deal with Windows Terminal mouse move with no buttons SGR
report</li>
<li><a
href="7053748e4d"><code>7053748</code></a>
refactor: remove redundant character checks in Launcher,
InputSelector</li>
<li><a
href="12b971ac44"><code>12b971a</code></a>
docs: changelog for <a
href="https://redirect.github.com/wezterm/wezterm/issues/6696">#6696</a></li>
<li><a
href="9606fa2569"><code>9606fa2</code></a>
Add font configuration option for ActivateCommandPalette, CharSelect,
PaneSel...</li>
<li><a
href="46cfda6665"><code>46cfda6</code></a>
shapecache: fixup for noto font update</li>
<li><a
href="824df44296"><code>824df44</code></a>
update bundled Noto Color Emoji</li>
<li>Additional commits viewable in <a
href="https://github.com/wezterm/wezterm/compare/termwiz-0.23.0...termwiz-0.23.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=termwiz&package-manager=cargo&previous-version=0.23.0&new-version=0.23.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 07:31:48 +03:00
dependabot[bot]
fff8319fa1 build(deps): bump termion from 4.0.4 to 4.0.5 (#1743)
Bumps termion from 4.0.4 to 4.0.5.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=termion&package-manager=cargo&previous-version=4.0.4&new-version=4.0.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 07:27:48 +03:00
dependabot[bot]
495a9807ea build(deps): bump octocrab from 0.43.0 to 0.44.0 (#1744)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.43.0 to
0.44.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.44.0</h2>
<h3>Added</h3>
<ul>
<li>Implement Serialize for Page (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/761">#761</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] <code>sha</code> is optional in
<code>DiffEntry</code> if file contents are unchanged (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/750">#750</a>)</li>
<li>insert auth headers for api.github.com (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/754">#754</a>)</li>
<li><em>(emails)</em> <code>visibility</code> can be <code>null</code>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/756">#756</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.43.0...v0.44.0">0.44.0</a>
- 2025-03-26</h2>
<h3>Added</h3>
<ul>
<li>Implement Serialize for Page (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/761">#761</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>[<strong>breaking</strong>] <code>sha</code> is optional in
<code>DiffEntry</code> if file contents are unchanged (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/750">#750</a>)</li>
<li>insert auth headers for api.github.com (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/754">#754</a>)</li>
<li><em>(emails)</em> <code>visibility</code> can be <code>null</code>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/756">#756</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3a779f3969"><code>3a779f3</code></a>
chore: release v0.43.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/762">#762</a>)</li>
<li><a
href="689cb92846"><code>689cb92</code></a>
fix!: <code>sha</code> is optional in <code>DiffEntry</code> if file
contents are unchanged (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/750">#750</a>)</li>
<li><a
href="e37e5a836b"><code>e37e5a8</code></a>
fix: insert auth headers for api.github.com (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/754">#754</a>)</li>
<li><a
href="87a49c3913"><code>87a49c3</code></a>
feat: Implement Serialize for Page (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/761">#761</a>)</li>
<li><a
href="31f625d03b"><code>31f625d</code></a>
fix(emails): <code>visibility</code> can be <code>null</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/756">#756</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.43.0...v0.44.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.43.0&new-version=0.44.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 07:25:00 +03:00
Orhun Parmaksız
b3f3c9bfd5 chore(ci): disable running release-plz on forked repositories (#1730)
See https://github.com/jdssl/ratatui/pull/1#issuecomment-2739366609
2025-03-25 01:49:11 -07:00
Josh McKinney
2739391950 style: use Module imports_granularity (#1728)
I was swayed by the arguments about this made by the compiler team In
<https://github.com/rust-lang/compiler-team/issues/750> and decided to
look at how this organization affects ratatui. I found this reduces the
number of lines across the codebase by about 350 and makes the imports
more readable and definitely more greppable as you usually only have
to read a single line. I've found in the past that maintaining imports
regularly leads to merge conflicts which have to be resolved by hand
and this change should reduce the likelihood of that happening.

Main change is in rustfmt.toml, and the rest is just the result of
running `cargo xtask format`.

While implementing this, cargo machete brings up that the various
backend crates are unused by the example crates.

The re-export of each backend crate under ratatui is to make it possible
for libs that rely on a specific version of ratatui to use the same
version of the backend crate. Apps in general should use the backend
crate directly rather than through ratatui as this is less confusing.

- Removes all usages of `ratatui::{crossterm, termion, termwiz}`` in the
  examples.
- Adds the backend crate to the dependencies of the examples that use
  the backend crate directly.
2025-03-19 16:48:02 -07:00
Orhun Parmaksız
dca331c748 fix(demo): support tab key in demo2 example (#1726)
see #1721

Not sure what caused this - it's been there for a while probably and we
didn't realize it since we used `demo2-destroy` mostly.
2025-03-19 12:14:49 +03:00
Josh McKinney
e7defb36de ci: remove bencher workflows (#1719)
These actions are currently unused as we haven't
invested the time necessary to understand how best
to use them. We can always re-add them later if we
find them useful.
2025-03-17 16:09:51 -07:00
dependabot[bot]
87c9823b08 build(deps): bump serde from 1.0.218 to 1.0.219 (#1714)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.218 to
1.0.219.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.219</h2>
<ul>
<li>Prevent <code>absolute_paths</code> Clippy restriction being
triggered inside macro-generated code (<a
href="https://redirect.github.com/serde-rs/serde/issues/2906">#2906</a>,
thanks <a
href="https://github.com/davidzeng0"><code>@​davidzeng0</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="49d098debd"><code>49d098d</code></a>
Release 1.0.219</li>
<li><a
href="40f1d19dbe"><code>40f1d19</code></a>
Wrap dummy.rs to 80 columns</li>
<li><a
href="514848b584"><code>514848b</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2906">#2906</a>
from davidzeng0/master</li>
<li><a
href="168b6cf789"><code>168b6cf</code></a>
fix clippy absolute paths warning</li>
<li><a
href="a8bdd17333"><code>a8bdd17</code></a>
Remove unused Punctuated import</li>
<li><a
href="1c9601358b"><code>1c96013</code></a>
Resolve mem_replace_with_default clippy lint</li>
<li><a
href="f0d1ae08f3"><code>f0d1ae0</code></a>
Ignore elidable_lifetime_names pedantic clippy lint</li>
<li><a
href="e3eaa6a3dd"><code>e3eaa6a</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2896">#2896</a>
from dtolnay/stabledoc</li>
<li><a
href="6a630cf283"><code>6a630cf</code></a>
Also link to stable proc_macro</li>
<li>See full diff in <a
href="https://github.com/serde-rs/serde/compare/v1.0.218...v1.0.219">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.218&new-version=1.0.219)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 14:33:00 -07:00
dependabot[bot]
352021bc6f build(deps): bump tokio from 1.43.0 to 1.44.1 (#1723)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.43.0 to 1.44.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.44.1</h2>
<h1>1.44.1 (March 13th, 2025)</h1>
<h3>Fixed</h3>
<ul>
<li>rt: skip defer queue in <code>block_in_place</code> context (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7216">#7216</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/7216">#7216</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7216">tokio-rs/tokio#7216</a></p>
<h2>Tokio v1.44.0</h2>
<h1>1.44.0 (March 7th, 2025)</h1>
<p>This release changes the <code>from_std</code> method on sockets to
panic if a blocking socket is provided. We determined this change is not
a breaking change as Tokio is not intended to operate using blocking
sockets. Doing so results in runtime hangs and should be considered a
bug. Accidentally passing a blocking socket to Tokio is one of the most
common user mistakes. If this change causes an issue for you, please
comment on <a
href="https://redirect.github.com/tokio-rs/tokio/issues/7172">#7172</a>.</p>
<h3>Added</h3>
<ul>
<li>coop: add <code>task::coop</code> module (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7116">#7116</a>)</li>
<li>process: add <code>Command::get_kill_on_drop()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7086">#7086</a>)</li>
<li>sync: add <code>broadcast::Sender::closed</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6685">#6685</a>,
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7090">#7090</a>)</li>
<li>sync: add <code>broadcast::WeakSender</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7100">#7100</a>)</li>
<li>sync: add <code>oneshot::Receiver::is_empty()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7153">#7153</a>)</li>
<li>sync: add <code>oneshot::Receiver::is_terminated()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7152">#7152</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>fs: empty reads on <code>File</code> should not start a background
read (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7139">#7139</a>)</li>
<li>process: calling <code>start_kill</code> on exited child should not
fail (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7160">#7160</a>)</li>
<li>signal: fix <code>CTRL_CLOSE</code>, <code>CTRL_LOGOFF</code>,
<code>CTRL_SHUTDOWN</code> on windows (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7122">#7122</a>)</li>
<li>sync: properly handle panic during mpsc drop (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7094">#7094</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>runtime: clean up magic number in registration set (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7112">#7112</a>)</li>
<li>coop: make coop yield using waker defer strategy (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7185">#7185</a>)</li>
<li>macros: make <code>select!</code> budget-aware (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7164">#7164</a>)</li>
<li>net: panic when passing a blocking socket to <code>from_std</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7166">#7166</a>)</li>
<li>io: clean up buffer casts (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7142">#7142</a>)</li>
</ul>
<h3>Changes to unstable APIs</h3>
<ul>
<li>rt: add before and after task poll callbacks (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7120">#7120</a>)</li>
<li>tracing: make the task tracing API unstable public (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6972">#6972</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>docs: fix nesting of sections in top-level docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7159">#7159</a>)</li>
<li>fs: rename symlink and hardlink parameter names (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7143">#7143</a>)</li>
<li>io: swap reader/writer in simplex doc test (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7176">#7176</a>)</li>
<li>macros: docs about <code>select!</code> alternatives (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7110">#7110</a>)</li>
<li>net: rename the argument for <code>send_to</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7146">#7146</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d413c9c02a"><code>d413c9c</code></a>
chore: prepare Tokio v1.44.1 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7217">#7217</a>)</li>
<li><a
href="addbfb9204"><code>addbfb9</code></a>
rt: skip defer queue in <code>block_in_place</code> context (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7216">#7216</a>)</li>
<li><a
href="8182ecf262"><code>8182ecf</code></a>
chore: prepare Tokio v1.44.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7202">#7202</a>)</li>
<li><a
href="a258bff701"><code>a258bff</code></a>
ci: enable printing in multi thread loom tests (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7200">#7200</a>)</li>
<li><a
href="e076d21f67"><code>e076d21</code></a>
process: clarify <code>Child::kill</code> behavior (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7162">#7162</a>)</li>
<li><a
href="042433cdcc"><code>042433c</code></a>
net: debug_assert on creating a tokio socket from a blocking one (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7166">#7166</a>)</li>
<li><a
href="0284d1b5c8"><code>0284d1b</code></a>
macros: make <code>select!</code> budget-aware (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7164">#7164</a>)</li>
<li><a
href="710bc8071e"><code>710bc80</code></a>
rt: coop should yield using waker defer strategy (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7185">#7185</a>)</li>
<li><a
href="a2b12bd579"><code>a2b12bd</code></a>
readme: adjust release schedule to once per month (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7191">#7191</a>)</li>
<li><a
href="e7b593cbee"><code>e7b593c</code></a>
process: fix grammar of the <code>ChildStdin</code> struct doc comment
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7192">#7192</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.43.0...tokio-1.44.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.43.0&new-version=1.44.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 14:14:15 -07:00
dependabot[bot]
de394875e4 build(deps): bump clap from 4.5.31 to 4.5.32 (#1724)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.31 to 4.5.32.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.32</h2>
<h2>[4.5.32] - 2025-03-10</h2>
<h3>Features</h3>
<ul>
<li>Add <code>Error::remove</code></li>
</ul>
<h3>Documentation</h3>
<ul>
<li><em>(cookbook)</em> Switch from <code>humantime</code> to
<code>jiff</code></li>
<li><em>(tutorial)</em> Better cover required vs optional</li>
</ul>
<h3>Internal</h3>
<ul>
<li>Update <code>pulldown-cmark</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.32] - 2025-03-10</h2>
<h3>Features</h3>
<ul>
<li>Add <code>Error::remove</code></li>
</ul>
<h3>Documentation</h3>
<ul>
<li><em>(cookbook)</em> Switch from <code>humantime</code> to
<code>jiff</code></li>
<li><em>(tutorial)</em> Better cover required vs optional</li>
</ul>
<h3>Internal</h3>
<ul>
<li>Update <code>pulldown-cmark</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="81b9db2da0"><code>81b9db2</code></a>
chore: Release</li>
<li><a
href="d3d7a17e82"><code>d3d7a17</code></a>
chore: Merge branch 'master' into <code>upstream/master</code></li>
<li><a
href="361114ef0f"><code>361114e</code></a>
chore: Release</li>
<li><a
href="b693fc0fa3"><code>b693fc0</code></a>
docs: Update changelog</li>
<li><a
href="7100091a69"><code>7100091</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5765">#5765</a>
from epage/complete</li>
<li><a
href="e90b2daf5e"><code>e90b2da</code></a>
refactor(complete): Pull our registration writing</li>
<li><a
href="95e99ef118"><code>95e99ef</code></a>
refactor(complete): Pull out shell lookup</li>
<li><a
href="4af0cd65f1"><code>4af0cd6</code></a>
fix(complete): Loosen requirements on Command factory</li>
<li><a
href="f40b37f1d8"><code>f40b37f</code></a>
chore: Release</li>
<li><a
href="63bfe1a532"><code>63bfe1a</code></a>
docs: Update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/v4.5.31...clap_complete-v4.5.32">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.31&new-version=4.5.32)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 14:13:39 -07:00
Josh McKinney
fe8577c070 chore: remove paste dependency (#1713)
The paste crate is no longer maintained. Replaces the usages of this in
the Stylize declarative macros with hard coded values. These macros are
internal implementation deatil to ratatui and so the changes should have
no impact on users.

Fixes: https://github.com/ratatui/ratatui/issues/1712
2025-03-09 08:56:06 -07:00
Orhun Parmaksız
34fec670d3 chore(changelog): remove changelog footer (#1711)
The footer makes some noise when used with `release-plz`.
2025-03-07 12:59:09 -08:00
Josh McKinney
255e4661a8 chore: cargo update - pull in fixed version of ring crate (#1710) 2025-03-06 17:38:10 -08:00
dependabot[bot]
e8eb4c36ee build(deps): bump indoc from 2.0.5 to 2.0.6 (#1709)
Bumps [indoc](https://github.com/dtolnay/indoc) from 2.0.5 to 2.0.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/indoc/releases">indoc's
releases</a>.</em></p>
<blockquote>
<h2>2.0.6</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f5934e4a74"><code>f5934e4</code></a>
Release 2.0.6</li>
<li><a
href="382de61bc5"><code>382de61</code></a>
Point standard library links to stable</li>
<li><a
href="aed1b60b74"><code>aed1b60</code></a>
Unset doc-scrape-examples for lib target</li>
<li><a
href="3840e47a7a"><code>3840e47</code></a>
More precise gitignore patterns</li>
<li><a
href="8304a10e23"><code>8304a10</code></a>
Prevent upload-artifact step from causing CI failure</li>
<li><a
href="eac624b58b"><code>eac624b</code></a>
Work around needless_raw_string_hashes pedantic clippy lint in test</li>
<li><a
href="64949e1de5"><code>64949e1</code></a>
Resolve needless_lifetimes clippy lint</li>
<li><a
href="0d37b42929"><code>0d37b42</code></a>
Ignore needless_lifetimes clippy lint</li>
<li><a
href="78289e31d8"><code>78289e3</code></a>
Upload CI Cargo.lock for reproducing failures</li>
<li><a
href="9ee9ca95d4"><code>9ee9ca9</code></a>
Fill in ignore reasons in all #[ignore] attributes</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/indoc/compare/2.0.5...2.0.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=indoc&package-manager=cargo&previous-version=2.0.5&new-version=2.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-06 17:35:43 -08:00
dependabot[bot]
83774eecf0 build(deps): bump time from 0.3.37 to 0.3.39 (#1708)
Bumps [time](https://github.com/time-rs/time) from 0.3.37 to 0.3.39.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/releases">time's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.39</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
<h2>v0.3.38</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's
changelog</a>.</em></p>
<blockquote>
<h2>0.3.39 [2025-03-06]</h2>
<h3>Fixed</h3>
<ul>
<li>Doc tests run successfully with the default feature set.</li>
<li>wasm builds work again.</li>
</ul>
<p>Both of these were regressions in v0.3.38 and are now checked in
CI.</p>
<h2>0.3.38 [2025-03-05]</h2>
<h3>Added</h3>
<ul>
<li>
<p>The <code>[year]</code> component (in format descriptions) now
supports a <code>range</code> modifier, which can be
either <code>standard</code> or <code>extended</code>. The default is
<code>extended</code> for backwards compatibility. This is
intended as a manner to opt <em>out</em> of the extended range when the
<code>large-dates</code> feature is enabled.
When the <code>large-dates</code> feature is not enabled, the modifier
has no effect.</p>
</li>
<li>
<p><code>UtcDateTime</code>, which is semantically equivalent to an
<code>OffsetDateTime</code> with UTC as its offset. The
advantage is that it is the same size as a
<code>PrimitiveDateTime</code> and has improved operability with
well-known formats.</p>
<p>As part of this, there were some other additions:</p>
<ul>
<li><code>utc_datetime!</code> macro, which is similar to the
<code>datetime!</code> macro but constructs a
<code>UtcDateTime</code>.</li>
<li><code>PrimitiveDateTime::as_utc</code></li>
<li><code>OffsetDateTime::to_utc</code></li>
<li><code>OffsetDateTime::checked_to_utc</code></li>
</ul>
</li>
<li>
<p><code>time::serde::timestamp::milliseconds_i64</code>, which is a
module to serialize/deserialize timestamps
as the Unix timestamp. The pre-existing module does this as an
<code>i128</code> where an <code>i64</code> would
suffice. This new module should be preferred.</p>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>error::Format</code> has had its <code>source()</code>
implementation changed to no longer return a boxed value
from the <code>ComponentRange</code> variant. If you were explicitly
expecting this, you will need to update
your code. The method API remains unchanged.</li>
<li><code>[year repr:century]</code> supports single-digit values.</li>
<li>All <code>format_into</code> methods accept <code>?Sized</code>
references.</li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>Some non-exhaustive enum variants that are no longer used have been
modified to be statically
proven as uninhabited. The relevant fields are doc-hidden and not
semver-guaranteed to remain as
such, though it is unlikely to change.</li>
<li>An unnecessary check when parsing RFC 2822 has been removed.</li>
<li>Various methods have had their implementations changed, resulting in
significant performance
gains. Among the methods changed are
<ul>
<li><code>util::is_leap_year</code></li>
<li><code>util::weeks_in_year</code></li>
<li><code>Month::length</code></li>
<li><code>Date::to_calendar_date</code></li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7949d2c2e8"><code>7949d2c</code></a>
v0.3.39 release</li>
<li><a
href="f51623b653"><code>f51623b</code></a>
Fix breakage from v0.3.38</li>
<li><a
href="1a31c0595b"><code>1a31c05</code></a>
v0.3.38 release</li>
<li><a
href="addf231ef5"><code>addf231</code></a>
Permit unsized writers for <code>format_into</code></li>
<li><a
href="338f84f545"><code>338f84f</code></a>
Allow clippy::ref_option lint for serde::format_description.</li>
<li><a
href="f8ecd81e8f"><code>f8ecd81</code></a>
feat: timestamp::milliseconds_i64 serializer</li>
<li><a
href="ce03bcab8f"><code>ce03bca</code></a>
Update Unicode license for cargo-audit</li>
<li><a
href="3d0b981381"><code>3d0b981</code></a>
Add parentheses for clarity</li>
<li><a
href="3096301eb3"><code>3096301</code></a>
Remove specific year from license</li>
<li><a
href="ec327a26db"><code>ec327a2</code></a>
Optimize Julian day calculations</li>
<li>Additional commits viewable in <a
href="https://github.com/time-rs/time/compare/v0.3.37...v0.3.39">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.37&new-version=0.3.39)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-06 17:35:39 -08:00
Orhun Parmaksız
4bd7c6dfa9 chore(changelog): skip placeholder commits in changelog (#1704) 2025-03-06 01:49:10 +03:00
Tayfun Bocek
92a19cb604 feat(list)!: highlight symbol styling (#1595)
Allow styling for `List`'s highlight symbol

This change makes it so anything that implements `Into<Line>` can be
used as a highlight symbol.

BREAKING CHANGE: `List::highlight_symbol` can no longer be used in const
context
BREAKING CHANGE: `List::highlight_symbol` accepted `&str`. Conversion
methods that rely on type inference will need to be rewritten as the
compiler cannot infer the type.

closes: https://github.com/ratatui/ratatui/issues/1443

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-03-04 14:26:59 -08:00
dependabot[bot]
5710b7a8d9 build(deps): bump rstest from 0.24.0 to 0.25.0 (#1695)
Bumps [rstest](https://github.com/la10736/rstest) from 0.24.0 to 0.25.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/releases">rstest's
releases</a>.</em></p>
<blockquote>
<h2>0.25.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Append generated test macro so next test macros are aware of it by
<a href="https://github.com/kezhuw"><code>@​kezhuw</code></a> in <a
href="https://redirect.github.com/la10736/rstest/pull/291">la10736/rstest#291</a></li>
<li>feat: add <code>include_str</code> and <code>include_bytes</code>
file input behaviour by <a
href="https://github.com/lucascool12"><code>@​lucascool12</code></a> in
<a
href="https://redirect.github.com/la10736/rstest/pull/297">la10736/rstest#297</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/kezhuw"><code>@​kezhuw</code></a> made
their first contribution in <a
href="https://redirect.github.com/la10736/rstest/pull/291">la10736/rstest#291</a></li>
<li><a
href="https://github.com/lucascool12"><code>@​lucascool12</code></a>
made their first contribution in <a
href="https://redirect.github.com/la10736/rstest/pull/297">la10736/rstest#297</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/la10736/rstest/compare/v0.24.0...v0.25.0">https://github.com/la10736/rstest/compare/v0.24.0...v0.25.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/blob/master/CHANGELOG.md">rstest's
changelog</a>.</em></p>
<blockquote>
<h2>[0.25.0] 2025/3/2</h2>
<h3>Changed</h3>
<ul>
<li>Append generated test macro so next test macros are aware of it
(see <a
href="https://redirect.github.com/la10736/rstest/pull/291">#291</a>
thanks to <a
href="https://github.com/kezhuw"><code>@​kezhuw</code></a>).</li>
</ul>
<h3>Add</h3>
<ul>
<li>Added a <code>#[mode = ...]</code> attribute to be used with the
<code>#[files(...)]</code> attribute to change the way
the files get passed to the test.
(see <a
href="https://redirect.github.com/la10736/rstest/issues/295">#295</a>
thanks to <a
href="https://github.com/lucascool12"><code>@​lucascool12</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8d80cea389"><code>8d80cea</code></a>
Prepare release</li>
<li><a
href="eb1f228eac"><code>eb1f228</code></a>
Make clippy happy</li>
<li><a
href="f570b0605b"><code>f570b06</code></a>
Avoid concurrent manifest changes in integration tests</li>
<li><a
href="8551eb8e29"><code>8551eb8</code></a>
feat: add <code>include_str</code> and <code>include_bytes</code> file
input behaviour</li>
<li><a
href="e0b735e9c2"><code>e0b735e</code></a>
Append generated test macro so next test macros are aware of it</li>
<li><a
href="154d0b0d3f"><code>154d0b0</code></a>
Prepare develop</li>
<li>See full diff in <a
href="https://github.com/la10736/rstest/compare/v0.24.0...v0.25.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rstest&package-manager=cargo&previous-version=0.24.0&new-version=0.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 12:38:06 -08:00
Josh McKinney
4eac5b2849 fix: make deprecation notes more helpful (#1702)
AI coding assistants use the deprecation notes to automatically suggest
fixes. This commit updates the deprecation notes to push those tools to
suggest the correct replacement methods and types.

Specifically, AI tools often suggest using `Buffer::get(x, y)`, because
of their training data where this was prevalent. When fixing these
deprecations, they often incorrectly suggest using `Buffer::get(x, y)`
instead of `Buffer[(x, y)]`.
2025-03-04 11:56:44 -08:00
Josh McKinney
2714d6b9c3 feat: add array and tuple RGB color conversion methods (#1703)
Other crates (e.g. colorgrad) that deal with colors can convert colors
to a tuple of 3 or 4 u8 values. This commit adds conversion methods from
these types to a `Color::Rgb` instance. Any alpha value is ignored.

```rust
Color::from([255, 0, 0]);
Color::from((255, 0, 0));
Color::from([255, 0, 0, 255]);
Color::from((255, 0, 0, 255));
```
2025-03-04 11:52:54 -08:00
Orhun Parmaksız
0919c72f89 chore(changelog): bring back commit details (#1694)
see https://github.com/ratatui/ratatui/pull/1671#issuecomment-2692469384
2025-03-04 02:17:29 +03:00
dependabot[bot]
48dd4762ab build(deps): bump dawidd6/action-download-artifact from 8 to 9 (#1700)
Bumps
[dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact)
from 8 to 9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dawidd6/action-download-artifact/releases">dawidd6/action-download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v9</h2>
<h2>What's Changed</h2>
<ul>
<li>add merge_multiple option by <a
href="https://github.com/timostroehlein"><code>@​timostroehlein</code></a>
in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/327">dawidd6/action-download-artifact#327</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/timostroehlein"><code>@​timostroehlein</code></a>
made their first contribution in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/327">dawidd6/action-download-artifact#327</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/dawidd6/action-download-artifact/compare/v8...v9">https://github.com/dawidd6/action-download-artifact/compare/v8...v9</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="07ab29fd4a"><code>07ab29f</code></a>
add merge_multiple option (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/327">#327</a>)</li>
<li>See full diff in <a
href="https://github.com/dawidd6/action-download-artifact/compare/v8...v9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dawidd6/action-download-artifact&package-manager=github_actions&previous-version=8&new-version=9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 01:42:44 +03:00
dependabot[bot]
1ca877da39 build(deps): bump bnjbvr/cargo-machete from 0.7.0 to 0.8.0 (#1699)
Bumps [bnjbvr/cargo-machete](https://github.com/bnjbvr/cargo-machete)
from 0.7.0 to 0.8.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bnjbvr/cargo-machete/releases">bnjbvr/cargo-machete's
releases</a>.</em></p>
<blockquote>
<h2>v0.8.0</h2>
<h2>What's Changed</h2>
<ul>
<li>readme: bump checkout action by <a
href="https://github.com/marcoieni"><code>@​marcoieni</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/142">bnjbvr/cargo-machete#142</a></li>
<li>chore: make clippy happy on nightly builds by <a
href="https://github.com/bnjbvr"><code>@​bnjbvr</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/146">bnjbvr/cargo-machete#146</a></li>
<li>Update cargo_toml to 0.21, making it compatible with the resolver=3
option (fixes <a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/144">#144</a>)
by <a href="https://github.com/AMDmi3"><code>@​AMDmi3</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/145">bnjbvr/cargo-machete#145</a></li>
<li>chore: bump dependencies by <a
href="https://github.com/bnjbvr"><code>@​bnjbvr</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/147">bnjbvr/cargo-machete#147</a></li>
<li>chore: test ignored directories correctly by <a
href="https://github.com/bnjbvr"><code>@​bnjbvr</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/149">bnjbvr/cargo-machete#149</a></li>
<li>fix: canonicalize relative paths when looking for the workspace
manifest by <a
href="https://github.com/bnjbvr"><code>@​bnjbvr</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/148">bnjbvr/cargo-machete#148</a></li>
<li>Build Docker image for both amd64 and arm64 by <a
href="https://github.com/popen2"><code>@​popen2</code></a> in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/151">bnjbvr/cargo-machete#151</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/marcoieni"><code>@​marcoieni</code></a>
made their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/142">bnjbvr/cargo-machete#142</a></li>
<li><a href="https://github.com/AMDmi3"><code>@​AMDmi3</code></a> made
their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/145">bnjbvr/cargo-machete#145</a></li>
<li><a href="https://github.com/popen2"><code>@​popen2</code></a> made
their first contribution in <a
href="https://redirect.github.com/bnjbvr/cargo-machete/pull/151">bnjbvr/cargo-machete#151</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bnjbvr/cargo-machete/compare/v0.7.0...v0.8.0">https://github.com/bnjbvr/cargo-machete/compare/v0.7.0...v0.8.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b54422fa33"><code>b54422f</code></a>
chore: release 0.8.0</li>
<li><a
href="8dcd31b5bc"><code>8dcd31b</code></a>
chore: run cargo fmt</li>
<li><a
href="27e694d196"><code>27e694d</code></a>
chore: bump dependencies</li>
<li><a
href="e80e988a28"><code>e80e988</code></a>
chore: bump to edition 2024</li>
<li><a
href="929a77bed5"><code>929a77b</code></a>
Build Docker image for both amd64 and arm64</li>
<li><a
href="d46205148b"><code>d462051</code></a>
fix: canonicalize a path before trying to find the workspace's
manifest</li>
<li><a
href="91fcd211a1"><code>91fcd21</code></a>
chore: better display errors when handling a given dependency</li>
<li><a
href="e550550db1"><code>e550550</code></a>
chore: test ignored directories correctly</li>
<li><a
href="83604af7f1"><code>83604af</code></a>
chore: bump dependencies</li>
<li><a
href="2ac2f4ce67"><code>2ac2f4c</code></a>
Update cargo_toml to 0.21 (fixes <a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/144">#144</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/bnjbvr/cargo-machete/compare/v0.7.0...v0.8.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bnjbvr/cargo-machete&package-manager=github_actions&previous-version=0.7.0&new-version=0.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 01:42:25 +03:00
dependabot[bot]
31b53c3e59 build(deps): bump bitflags from 2.8.0 to 2.9.0 (#1698)
Bumps [bitflags](https://github.com/bitflags/bitflags) from 2.8.0 to
2.9.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/releases">bitflags's
releases</a>.</em></p>
<blockquote>
<h2>2.9.0</h2>
<h2>What's Changed</h2>
<ul>
<li><code>Flags</code> trait: add <code>clear(&amp;mut self)</code>
method by <a
href="https://github.com/wysiwys"><code>@​wysiwys</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/437">bitflags/bitflags#437</a></li>
<li>Fix up UI tests by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/438">bitflags/bitflags#438</a></li>
<li>Prepare for 2.9.0 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/439">bitflags/bitflags#439</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.8.0...2.9.0">https://github.com/bitflags/bitflags/compare/2.8.0...2.9.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md">bitflags's
changelog</a>.</em></p>
<blockquote>
<h1>2.9.0</h1>
<h2>What's Changed</h2>
<ul>
<li><code>Flags</code> trait: add <code>clear(&amp;mut self)</code>
method by <a
href="https://github.com/wysiwys"><code>@​wysiwys</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/437">bitflags/bitflags#437</a></li>
<li>Fix up UI tests by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/438">bitflags/bitflags#438</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.8.0...2.9.0">https://github.com/bitflags/bitflags/compare/2.8.0...2.9.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e197bf5039"><code>e197bf5</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/439">#439</a>
from KodrAus/cargo/2.9.0</li>
<li><a
href="8df6e80770"><code>8df6e80</code></a>
prepare for 2.9.0 release</li>
<li><a
href="e92f0ae4b6"><code>e92f0ae</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/438">#438</a>
from KodrAus/fix/ui-tests</li>
<li><a
href="226ff75b99"><code>226ff75</code></a>
fix up UI tests</li>
<li><a
href="2170a26558"><code>2170a26</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/437">#437</a>
from wysiwys/wysiwys/add-clear-method</li>
<li><a
href="76dde58498"><code>76dde58</code></a>
add tests for <code>clear()</code> trait method</li>
<li><a
href="ce5d4207bb"><code>ce5d420</code></a>
add <code>clear()</code> method to trait</li>
<li><a
href="9e45d36e0a"><code>9e45d36</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/434">#434</a>
from bitflags/KodrAus-patch-1</li>
<li><a
href="617645aa45"><code>617645a</code></a>
pin checkout action for miri job</li>
<li><a
href="2c836f230d"><code>2c836f2</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/433">#433</a>
from bitflags/ci/remove-scorecard</li>
<li>Additional commits viewable in <a
href="https://github.com/bitflags/bitflags/compare/2.8.0...2.9.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bitflags&package-manager=cargo&previous-version=2.8.0&new-version=2.9.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 01:42:07 +03:00
dependabot[bot]
a8be13c9c7 build(deps): bump serde_json from 1.0.139 to 1.0.140 (#1697)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.139 to
1.0.140.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.140</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="762783414e"><code>7627834</code></a>
Release 1.0.140</li>
<li><a
href="d77a498c80"><code>d77a498</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1245">#1245</a>
from serde-rs/powerpc</li>
<li><a
href="b34d317089"><code>b34d317</code></a>
Delete unused gcc installation</li>
<li><a
href="f7200c3cf6"><code>f7200c3</code></a>
Ignore unbuffered_bytes clippy lint</li>
<li><a
href="76cd4fb383"><code>76cd4fb</code></a>
Ignore elidable_lifetime_names pedantic clippy lint</li>
<li><a
href="400eaa977f"><code>400eaa9</code></a>
Point standard library links to stable</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.139...v1.0.140">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.139&new-version=1.0.140)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 01:41:49 +03:00
dependabot[bot]
9c7f10d2d0 build(deps): bump cargo_metadata from 0.19.1 to 0.19.2 (#1696)
Bumps [cargo_metadata](https://github.com/oli-obk/cargo_metadata) from
0.19.1 to 0.19.2.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0b4be024c5"><code>0b4be02</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/285">#285</a>
from fenhl/version-bump</li>
<li><a
href="8196734cb7"><code>8196734</code></a>
Version bump</li>
<li><a
href="0056e020b8"><code>0056e02</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/284">#284</a>
from HTGAzureX1212/edition-2024-stable</li>
<li><a
href="e3e9cd3bc6"><code>e3e9cd3</code></a>
feat: <code>2024</code> edition stabilized</li>
<li><a
href="806a3ea482"><code>806a3ea</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/282">#282</a>
from foresterre/workspace-default-members</li>
<li><a
href="cdf42230d4"><code>cdf4223</code></a>
Add methods is_available and is_missing to WorkspaceDefaultMembers</li>
<li><a
href="d6b186c26f"><code>d6b186c</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/280">#280</a>
from paolobarbolini/z-minimal-versions</li>
<li><a
href="59f0651fb3"><code>59f0651</code></a>
build: fix -Zminimal-versions</li>
<li><a
href="9d84a017c8"><code>9d84a01</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/266">#266</a>
from os-checker/workspace_default_members-serde-default</li>
<li><a
href="45ceca0262"><code>45ceca0</code></a>
clippy: fix first doc comment paragraph is too long</li>
<li>Additional commits viewable in <a
href="https://github.com/oli-obk/cargo_metadata/compare/0.19.1...0.19.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cargo_metadata&package-manager=cargo&previous-version=0.19.1&new-version=0.19.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 01:41:35 +03:00
github-actions[bot]
c10d0f12e8 chore: release (#1671)
## 🤖 New release

* `ratatui-core`: 0.1.0-alpha.2 -> 0.1.0-alpha.3
* `ratatui-crossterm`: 0.1.0-alpha.1 -> 0.1.0-alpha.2
* `ratatui-widgets`: 0.3.0-alpha.1 -> 0.3.0-alpha.2
* `ratatui-macros`: 0.7.0-alpha.0 -> 0.7.0-alpha.1
* `ratatui-termwiz`: 0.1.0-alpha.1 -> 0.1.0-alpha.2
* `ratatui-termion`: 0.1.0-alpha.1 -> 0.1.0-alpha.2
* `ratatui`: 0.30.0-alpha.1 -> 0.30.0-alpha.2
2025-03-01 15:34:53 -08:00
dependabot[bot]
ddeac29411 build(deps): bump line_drawing from 1.0.0 to 1.0.1 (#1685)
Bumps [line_drawing](https://github.com/expenses/line_drawing) from
1.0.0 to 1.0.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/expenses/line_drawing/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=line_drawing&package-manager=cargo&previous-version=1.0.0&new-version=1.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-01 15:05:30 -08:00
Orhun Parmaksız
3c3b5fe1fa chore(deps): bump termion to 4.0.4 (#1691)
changelog:
https://gitlab.redox-os.org/redox-os/termion/-/blob/master/CHANGELOG.md

fixes #884
2025-03-01 15:01:19 -08:00
Josh McKinney
9398a2550a ci: add workflow_dispatch trigger for release-plz (#1693) 2025-03-01 14:56:36 -08:00
dependabot[bot]
9f3019b4fe build(deps): bump serde from 1.0.217 to 1.0.218 (#1688)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.217 to
1.0.218.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.218</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7bfd518dd4"><code>7bfd518</code></a>
Release 1.0.218</li>
<li><a
href="723a9491e2"><code>723a949</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2895">#2895</a>
from dtolnay/stabledoc</li>
<li><a
href="2b44efb085"><code>2b44efb</code></a>
Point standard library links to stable</li>
<li><a
href="03dc0fc137"><code>03dc0fc</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2894">#2894</a>
from dtolnay/doclink</li>
<li><a
href="85cb0c478e"><code>85cb0c4</code></a>
Convert html links to intra-doc links</li>
<li><a
href="abe7194480"><code>abe7194</code></a>
Update ui test suite to nightly-2025-02-12</li>
<li><a
href="aaccac7413"><code>aaccac7</code></a>
Unset doc-scrape-examples for lib target</li>
<li><a
href="7cd4d84cac"><code>7cd4d84</code></a>
Update ui test suite to nightly-2025-02-07</li>
<li><a
href="04ff3e8f95"><code>04ff3e8</code></a>
More precise gitignore patterns</li>
<li><a
href="dc3031b614"><code>dc3031b</code></a>
Remove *.sw[po] from gitignore</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/serde/compare/v1.0.217...v1.0.218">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.217&new-version=1.0.218)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 23:37:30 +03:00
dependabot[bot]
474abe4a9d build(deps): bump clap from 4.5.29 to 4.5.31 (#1686)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.29 to 4.5.31.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.31</h2>
<h2>[4.5.31] - 2025-02-24</h2>
<h3>Features</h3>
<ul>
<li>Add <code>ValueParserFactory</code> for
<code>Saturating&lt;T&gt;</code></li>
</ul>
<h2>v4.5.30</h2>
<h2>[4.5.30] - 2025-02-17</h2>
<h3>Fixes</h3>
<ul>
<li><em>(assert)</em> Allow <code>num_args(0..=1)</code> to be used with
<code>SetTrue</code></li>
<li><em>(assert)</em> Clean up rendering of <code>takes_values</code>
assertions</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.31] - 2025-02-24</h2>
<h3>Features</h3>
<ul>
<li>Add <code>ValueParserFactory</code> for
<code>Saturating&lt;T&gt;</code></li>
</ul>
<h2>[4.5.30] - 2025-02-17</h2>
<h3>Fixes</h3>
<ul>
<li><em>(assert)</em> Allow <code>num_args(0..=1)</code> to be used with
<code>SetTrue</code></li>
<li><em>(assert)</em> Clean up rendering of <code>takes_values</code>
assertions</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="acf9abbc1b"><code>acf9abb</code></a>
chore: Release</li>
<li><a
href="9186a1872c"><code>9186a18</code></a>
docs: Update changelog</li>
<li><a
href="233c316d11"><code>233c316</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5926">#5926</a>
from sorairolake/feature/value-parser-factory-for-sa...</li>
<li><a
href="13931a25e7"><code>13931a2</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5923">#5923</a>
from Reverier-Xu/master</li>
<li><a
href="536e29fb85"><code>536e29f</code></a>
feat(builder): Add <code>ValueParserFactory</code> for
<code>Saturating\&lt;T&gt;</code></li>
<li><a
href="45ed71c0f2"><code>45ed71c</code></a>
chore: Avoid using gen for rust 2024 preserved keyword</li>
<li><a
href="5029bb3d11"><code>5029bb3</code></a>
chore: Avoid using <code>gen</code> for rust 2024 preserved keyword</li>
<li><a
href="8a1d59bbb0"><code>8a1d59b</code></a>
chore(deps): Update Rust Stable to v1.85 (<a
href="https://redirect.github.com/clap-rs/clap/issues/5921">#5921</a>)</li>
<li><a
href="9caee534e0"><code>9caee53</code></a>
docs(changelog): Clarify 5.0.0</li>
<li><a
href="cb2352f84a"><code>cb2352f</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5918">#5918</a>
from epage/test</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.29...v4.5.31">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.29&new-version=4.5.31)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 23:36:46 +03:00
dependabot[bot]
a6c61f0d12 build(deps): bump serde_json from 1.0.138 to 1.0.139 (#1687)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.138 to
1.0.139.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.139</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4d4f53c3b7"><code>4d4f53c</code></a>
Release 1.0.139</li>
<li><a
href="5d6b32f378"><code>5d6b32f</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1242">#1242</a>
from dtolnay/writefloat</li>
<li><a
href="e5bb8bd38f"><code>e5bb8bd</code></a>
Document behavior of write_f32/f64 on non-finite floats</li>
<li><a
href="7a797810d2"><code>7a79781</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1241">#1241</a>
from dtolnay/doclink</li>
<li><a
href="13591f1dd4"><code>13591f1</code></a>
Convert html links to intra-doc links</li>
<li><a
href="1d7378e8ee"><code>1d7378e</code></a>
Unset doc-scrape-examples for lib target</li>
<li><a
href="1174c5f57d"><code>1174c5f</code></a>
Resolve unnecessary_semicolon pedantic clippy lint</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.138...v1.0.139">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.138&new-version=1.0.139)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 23:22:37 +03:00
Austin Schey
912616af48 chore(deps): bump termwiz from 0.22.0 to 0.23.0 (#1682)
Based on the last several [termwiz
commits](https://github.com/wezterm/wezterm/commits/main/termwiz), it
looks like this release has a few fixes for hyperlinks and input
handling, plus some dependency updates.

Tested with the demo app to ensure things still work.

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-02-22 00:01:50 +03:00
Orhun Parmaksız
22e3e84de8 docs(core): remove link to Paragraph widget (#1683) 2025-02-21 12:12:16 -08:00
Orhun Parmaksız
0fd4753e6b fix(examples): run the correct example for chart (#1679)
fixes #1678
2025-02-18 13:44:29 +03:00
dependabot[bot]
e0b1b41c75 build(deps): bump document-features from 0.2.10 to 0.2.11 (#1677)
Bumps [document-features](https://github.com/slint-ui/document-features)
from 0.2.10 to 0.2.11.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/slint-ui/document-features/blob/master/CHANGELOG.md">document-features's
changelog</a>.</em></p>
<blockquote>
<h2>0.2.11 - 2024-02-16</h2>
<ul>
<li>Collect defaults recursively (<a
href="https://redirect.github.com/slint-ui/document-features/issues/19">#19</a>)</li>
</ul>
<h2>0.2.1O - 2024-07-12</h2>
<ul>
<li>Revert parsing of multi-lines string while parsing features
(Keep parsing of multi-lines string when detecting if we need to use
Cargo.toml.orig)</li>
</ul>
<h2>0.2.9 - 2024-07-11</h2>
<ul>
<li>Fix parsing of multi-lines string (<a
href="https://redirect.github.com/slint-ui/document-features/issues/25">#25</a>)</li>
<li>Fix <code>out_of_scope_macro_calls</code> compatibility warning</li>
<li>Fix documentation having too many <code>#</code> (<a
href="https://redirect.github.com/slint-ui/document-features/issues/22">#22</a>)</li>
</ul>
<h2>0.2.8 - 2023-12-29</h2>
<ul>
<li>Remove <code>\n</code> between features (<a
href="https://redirect.github.com/slint-ui/document-features/issues/17">#17</a>)</li>
<li>Don't throw an error when there is no features in Cargo.toml (<a
href="https://redirect.github.com/slint-ui/document-features/issues/20">#20</a>)</li>
</ul>
<h2>0.2.7 - 2022-12-21</h2>
<ul>
<li>Fix parsing of Cargo.toml with multi-line array of array (<a
href="https://redirect.github.com/slint-ui/document-features/issues/16">#16</a>)</li>
</ul>
<h2>0.2.6 - 2022-09-24</h2>
<ul>
<li>Fix parsing of escaped string literal in the macro arguments</li>
</ul>
<h2>0.2.5 - 2022-09-17</h2>
<ul>
<li>Allow customization of the output with the
<code>feature_label=</code> parameter</li>
</ul>
<h2>0.2.4 - 2022-09-14</h2>
<ul>
<li>Fix dependencies or features written with quotes</li>
</ul>
<h2>0.2.3 - 2022-08-15</h2>
<ul>
<li>Fix parsing of table with <code>#</code> within strings (<a
href="https://redirect.github.com/slint-ui/document-features/issues/10">#10</a>)</li>
</ul>
<h2>0.2.2 - 2022-07-25</h2>
<ul>
<li>Fix parsing of dependencies or feature spanning multiple lines (<a
href="https://redirect.github.com/slint-ui/document-features/issues/9">#9</a>)</li>
</ul>
<h2>0.2.1 - 2022-02-12</h2>
<ul>
<li>Fix indentation of multi-lines feature comments (<a
href="https://redirect.github.com/slint-ui/document-features/issues/5">#5</a>)</li>
</ul>
<h2>0.2.0 - 2022-02-11</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/slint-ui/document-features/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=document-features&package-manager=cargo&previous-version=0.2.10&new-version=0.2.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-18 09:30:20 +03:00
dependabot[bot]
03032920ee build(deps): bump clap from 4.5.28 to 4.5.29 (#1676)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.28 to 4.5.29.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.29</h2>
<h2>[4.5.29] - 2025-02-11</h2>
<h3>Fixes</h3>
<ul>
<li>Change <code>ArgMatches::args_present</code> so not-present flags
are considered not-present (matching the documentation)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.29] - 2025-02-11</h2>
<h3>Fixes</h3>
<ul>
<li>Change <code>ArgMatches::args_present</code> so not-present flags
are considered not-present (matching the documentation)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1f74b0178d"><code>1f74b01</code></a>
chore: Release</li>
<li><a
href="23feee1c13"><code>23feee1</code></a>
docs: Update changelog</li>
<li><a
href="ae1457b34a"><code>ae1457b</code></a>
chore(complete): Update require clap</li>
<li><a
href="0d142f6c04"><code>0d142f6</code></a>
chore: Release</li>
<li><a
href="0facf1f370"><code>0facf1f</code></a>
docs: Update changelog</li>
<li><a
href="ee6af99c6c"><code>ee6af99</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5743">#5743</a>
from epage/sort</li>
<li><a
href="232ee10661"><code>232ee10</code></a>
fix(complete): Use existing display order for Arg/Command</li>
<li><a
href="c6b5d627a0"><code>c6b5d62</code></a>
feat(builder): Expose get_display_order</li>
<li><a
href="67d9fef9ce"><code>67d9fef</code></a>
feat(complete): Give control over display order</li>
<li><a
href="59a61e188f"><code>59a61e1</code></a>
refactor(complete): Pull out common candidate code</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.28...clap_complete-v4.5.29">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.28&new-version=4.5.29)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-18 09:29:54 +03:00
John T. Wodder II
35a86427ab fix: Rect::positions() should be empty when width is 0 and height is nonzero (#1669)
Fixes #1666.
2025-02-11 13:51:48 -08:00
Orhun Parmaksız
882cc3c6c6 docs(examples): update app examples with tapes (#1673) 2025-02-11 13:18:06 -08:00
Orhun Parmaksız
39479e298c fix(examples): ensure that example projects are not published (#1672) 2025-02-11 13:12:31 -08:00
Orhun Parmaksız
9fb054453d chore(release): initialize release-plz (#1550)
See https://github.com/ratatui/ratatui/pull/1550
2025-02-11 20:43:58 +03:00
Orhun Parmaksız
4393fae54c docs(examples): move scrollbar example to examples folder (#1665) 2025-02-09 14:18:06 -08:00
Orhun Parmaksız
9ea70e28c6 docs(examples): move widget-impl example to examples folder (#1663) 2025-02-09 14:16:34 -08:00
Orhun Parmaksız
774ab788d4 docs(examples): move widget-ref-container example to examples folder (#1664)
see #1512
2025-02-09 14:13:32 -08:00
Caleb Cox
f05feac337 chore: sort dependencies in Cargo.toml (#1662) 2025-02-09 08:26:57 -08:00
Josh McKinney
7eab88fe9a chore: remove unused deps (#1661) 2025-02-06 18:19:44 -08:00
Orhun Parmaksız
910d16e63a docs(examples): move user-input example to examples folder (#1659) 2025-02-06 17:45:56 -08:00
Orhun Parmaksız
dbfb7da9e3 docs(examples): move table example to examples folder (#1657) 2025-02-06 17:45:20 -08:00
Orhun Parmaksız
cb2a58aaa0 docs(examples): move tracing example to examples folder (#1658) 2025-02-06 17:44:28 -08:00
Orhun Parmaksız
7e00b646fc docs(examples): move panic example to examples folder (#1655) 2025-02-06 17:43:18 -08:00
Orhun Parmaksız
8127590812 docs(examples): move modifiers example to examples folder (#1654) 2025-02-06 17:40:03 -08:00
Orhun Parmaksız
7c40c0bbdd docs(examples): move popup example to examples folder (#1656)
see #1512
2025-02-06 23:38:07 +03:00
Orhun Parmaksız
d87354f400 docs(examples): move list example to examples folder (#1653)
see #1512

also renames it to todo-list
2025-02-06 23:36:26 +03:00
Josh McKinney
e48bcf5f21 fix: ratatui-macros readme and doc links 2025-02-05 14:32:28 -08:00
Josh McKinney
d4415204e1 feat: add ratatui-macros crate
This crate previously lived at https://github.com/ratatui/ratatui-macros
and is now part of the ratatui mono-repo.
2025-02-05 13:20:53 -08:00
Josh McKinney
92c4078413 chore: prep for merge with ratatui
Move files under ratatui-macros folder, remove CI and husky config
2025-02-05 12:15:36 -08:00
dependabot[bot]
38a1474ca1 build(deps): bump the cargo-dependencies group across 1 directory with 3 updates (#77)
Bumps the cargo-dependencies group with 3 updates in the / directory:
[ratatui-core](https://github.com/ratatui/ratatui),
[ratatui-widgets](https://github.com/ratatui/ratatui) and
[trybuild](https://github.com/dtolnay/trybuild).

Updates `ratatui-core` from 0.1.0-alpha.0 to 0.1.0-alpha.2
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/ratatui/ratatui/commits">compare view</a></li>
</ul>
</details>
<br />

Updates `ratatui-widgets` from 0.3.0-alpha.0 to 0.3.0-alpha.1
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/ratatui/ratatui/commits">compare view</a></li>
</ul>
</details>
<br />

Updates `trybuild` from 1.0.101 to 1.0.103
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.103</h2>
<ul>
<li>Fix unindentation of multiline note (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/301">#301</a>)</li>
</ul>
<h2>1.0.102</h2>
<ul>
<li>Detect compilation failure more reliably for filepaths containing
<code>..</code> (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/300">#300</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="57705cd26d"><code>57705cd</code></a>
Release 1.0.103</li>
<li><a
href="7a19ab72ad"><code>7a19ab7</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/301">#301</a>
from dtolnay/multilinenote</li>
<li><a
href="14cad05bb5"><code>14cad05</code></a>
Fix unindentation of multiline note</li>
<li><a
href="7b2e334b57"><code>7b2e334</code></a>
Add regression test for multiline note</li>
<li><a
href="2736f370e6"><code>2736f37</code></a>
Release 1.0.102</li>
<li><a
href="8c509456dd"><code>8c50945</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/300">#300</a>
from dtolnay/pathmapkey</li>
<li><a
href="b2471d5c9b"><code>b2471d5</code></a>
Canonicalize paths used as map keys</li>
<li><a
href="ddfbe47850"><code>ddfbe47</code></a>
Drop &quot;dissimilar&quot; feature, keeping only &quot;diff&quot;</li>
<li><a
href="96340263d9"><code>9634026</code></a>
Resolve unnecessary_map_or clippy lint</li>
<li><a
href="e92bf293df"><code>e92bf29</code></a>
Prevent upload-artifact step from causing CI failure</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.101...1.0.103">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 12:06:26 -08:00
Orhun Parmaksız
621226f2e2 docs(examples): move inline example to examples folder (#1651) 2025-02-05 10:20:55 -08:00
Orhun Parmaksız
9ba7d25b71 docs(examples): move hyperlink example to examples folder (#1650) 2025-02-05 10:14:24 -08:00
Orhun Parmaksız
bb94d1c0fa docs(examples): move minimal example to examples folder (#1649) 2025-02-05 10:11:57 -08:00
Björn Steinbrink
f5fc8197ff fix: avoid extra line break on whitespace only lines when wrapping paragraphs (#1636)
Currently whitespace only lines produces an extra line break when
trimming is disabled, because both the trimmed as well as the
non-trimmed line get inserted. Fix this by only inserting the
non-trimmed one.

Co-authored-by: Björn Steinbrink <b.steinbrink@demv.de>
2025-02-04 17:02:50 -08:00
Orhun Parmaksız
9f399ac7a6 docs(examples): move gauge example to examples folder (#1646) 2025-02-04 16:48:09 -08:00
Orhun Parmaksız
37a1c6f89b chore: remove some examples (#1645) 2025-02-04 16:44:13 -08:00
Orhun Parmaksız
104d6a6c2b docs(examples): move custom-widget example to examples folder (#1644) 2025-02-04 16:39:24 -08:00
Orhun Parmaksız
fa8ca0121a docs(examples): move flex example to examples folder (#1642) 2025-02-04 16:36:38 -08:00
Orhun Parmaksız
f5fde0ef53 docs(examples): move constraints example to examples folder (#1641) 2025-02-04 16:33:28 -08:00
Orhun Parmaksız
fc70288954 docs(examples): move constraint-explorer example to examples folder (#1640) 2025-02-04 16:23:12 -08:00
Orhun Parmaksız
325f96102a docs(examples): move hello-world example to examples folder (#1647) 2025-02-04 16:05:52 -08:00
Josh McKinney
867c4bc4e9 docs(examples): move colors-rgb example to examples folder (#1582)
- **docs: move colors-rgb example to examples folder**
- **docs: update main examples README**

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2025-02-04 21:40:10 +03:00
dependabot[bot]
0b24e6c7bf chore(deps): bump serde_json from 1.0.137 to 1.0.138 (#1638)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.137 to
1.0.138.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.138</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c916099147"><code>c916099</code></a>
Release 1.0.138</li>
<li><a
href="dc29e4815d"><code>dc29e48</code></a>
Move BufReader to caller</li>
<li><a
href="29122f9ed7"><code>29122f9</code></a>
Sort imports from PR 1237</li>
<li><a
href="d33c1b527e"><code>d33c1b5</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1237">#1237</a>
from JonathanBrouwer/master</li>
<li><a
href="8c2d8004b2"><code>8c2d800</code></a>
Add more warnings to apply buffering on docs of affected functions</li>
<li><a
href="65bbd1aa2d"><code>65bbd1a</code></a>
Fix example of from_reader not applying buffering when it should</li>
<li><a
href="87f78da0f5"><code>87f78da</code></a>
More precise gitignore patterns</li>
<li><a
href="4134f119c0"><code>4134f11</code></a>
Remove *.sw[po] from gitignore</li>
<li><a
href="c7626dbac2"><code>c7626db</code></a>
Remove **/*.rs.bk from project-specific gitignore</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.137...v1.0.138">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.137&new-version=1.0.138)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-04 11:22:14 +03:00
Luca Vivona
f907c74bb3 docs(license): update copyright years (#1639)
Update MIT Licence to copyright year 2025
2025-02-04 11:18:02 +03:00
Orhun Parmaksız
d045305c67 chore(deps): bump rand and rand_chacha (#1633)
<https://rust-random.github.io/book/update-0.9.html>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 14:13:35 -08:00
dependabot[bot]
7a308c2090 chore(deps): bump dawidd6/action-download-artifact from 7 to 8 (#1631)
Bumps
[dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact)
from 7 to 8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dawidd6/action-download-artifact/releases">dawidd6/action-download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v8</h2>
<h2>New features</h2>
<ul>
<li><code>use_unzip</code> boolean input (defaulting to false) - if set
to true, the action will use system provided <code>unzip</code> utility
for unpacking downloaded artifact(s) (note that the action will first
download the .zip artifact file, then unpack it and remove the .zip
file)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>README: v7 by <a
href="https://github.com/haines"><code>@​haines</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/318">dawidd6/action-download-artifact#318</a></li>
<li>Unzip by <a
href="https://github.com/dawidd6"><code>@​dawidd6</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/325">dawidd6/action-download-artifact#325</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/haines"><code>@​haines</code></a> made
their first contribution in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/318">dawidd6/action-download-artifact#318</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/dawidd6/action-download-artifact/compare/v7...v8">https://github.com/dawidd6/action-download-artifact/compare/v7...v8</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="20319c5641"><code>20319c5</code></a>
README: v8</li>
<li><a
href="e58a9e5d14"><code>e58a9e5</code></a>
Unzip (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/325">#325</a>)</li>
<li><a
href="6d05268723"><code>6d05268</code></a>
node_modules: update</li>
<li><a
href="c03fb0c928"><code>c03fb0c</code></a>
README: v7 (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/318">#318</a>)</li>
<li>See full diff in <a
href="https://github.com/dawidd6/action-download-artifact/compare/v7...v8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dawidd6/action-download-artifact&package-manager=github_actions&previous-version=7&new-version=8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 21:01:57 +03:00
dependabot[bot]
24e71ab6ce chore(deps): bump clap from 4.5.26 to 4.5.27 (#1630)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.26 to 4.5.27.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.27</h2>
<h2>[4.5.27] - 2025-01-20</h2>
<h3>Documentation</h3>
<ul>
<li>Iterate on tutorials and reference based on feedback</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.27] - 2025-01-20</h2>
<h3>Documentation</h3>
<ul>
<li>Iterate on tutorials and reference based on feedback</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="21c9892efe"><code>21c9892</code></a>
chore: Release</li>
<li><a
href="0c8bceb3e9"><code>0c8bceb</code></a>
docs: Update changelog</li>
<li><a
href="d8f102a18c"><code>d8f102a</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5732">#5732</a>
from epage/consistent</li>
<li><a
href="c92fca3a8f"><code>c92fca3</code></a>
docs(complete): Clarify CompleteEnv's Shell trait</li>
<li><a
href="5ca60e9079"><code>5ca60e9</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5731">#5731</a>
from epage/bash</li>
<li><a
href="5d7c16c60e"><code>5d7c16c</code></a>
fix(complete): Adjust how IFS is passed to clap</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.26...clap_complete-v4.5.27">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.26&new-version=4.5.27)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 00:08:51 +03:00
Alex Pasmantier
1f41a61008 perf(paragraph): avoid unnecessary work when rendering (#1622)
Improve render times for paragraphs that are scrolled.

Currently all `LineComposer`s are considered to be state machines which
means rendering a paragraph with a given Y offset requires computing the
entire state up to Y before being able to render from Y onwards.

While this makes sense for Composers such as the `WordWrapper` (where
one needs to consider all previous lines to determine where a given line
will end up), it means it also penalizes Composers which can render a
given line "statelessely" (such as the `LineTruncator`) which actually
end up doing a lot of unnecessary work (and on the critical rendering
path) when the offset gets high.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2025-01-23 13:52:52 -08:00
Jens Krause
7ad9c29eac feat(linegauge): customized symbols (#1601)
With this PR any symbol (`&str`) can be used to render `filled` and
`unfilled` parts of `LineGauge` now. Before that change, only
[`symbols::line::Set`](https://docs.rs/ratatui/latest/ratatui/symbols/line/struct.Set.html)
was accepted.

Note: New methods are introduced to define those symbols:
`filled_symbol` and `unfilled_symbol`. The method
[`line_set`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.LineGauge.html#method.line_set)
is still there, but marked as `deprecated`.

![line_gauge](https://github.com/user-attachments/assets/cae308b8-151b-461d-8af6-9a20012adf2f)
2025-01-22 19:56:22 -08:00
dependabot[bot]
a0a37008da chore(deps): bump serde_json from 1.0.135 to 1.0.137 (#1625)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.135 to
1.0.137.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.137</h2>
<ul>
<li>Turn on &quot;float_roundtrip&quot; and &quot;unbounded_depth&quot;
features for serde_json in play.rust-lang.org (<a
href="https://redirect.github.com/serde-rs/json/issues/1231">#1231</a>)</li>
</ul>
<h2>v1.0.136</h2>
<ul>
<li>Optimize serde_json::value::Serializer::serialize_map by using
Map::with_capacity (<a
href="https://redirect.github.com/serde-rs/json/issues/1230">#1230</a>,
thanks <a
href="https://github.com/goffrie"><code>@​goffrie</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="eb49e28204"><code>eb49e28</code></a>
Release 1.0.137</li>
<li><a
href="51c48ab3b0"><code>51c48ab</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1231">#1231</a>
from dtolnay/playground</li>
<li><a
href="7d8f15b963"><code>7d8f15b</code></a>
Enable &quot;float_roundtrip&quot; and &quot;unbounded_depth&quot;
features in playground</li>
<li><a
href="a46f14cf2e"><code>a46f14c</code></a>
Release 1.0.136</li>
<li><a
href="eb9f3f6387"><code>eb9f3f6</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1230">#1230</a>
from goffrie/patch-1</li>
<li><a
href="513e5b2f74"><code>513e5b2</code></a>
Use Map::with_capacity in value::Serializer::serialize_map</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.135...v1.0.137">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.135&new-version=1.0.137)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 18:43:04 +03:00
dependabot[bot]
fd08d5b541 chore(deps): bump octocrab from 0.42.1 to 0.43.0 (#1624)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.42.1 to
0.43.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.43.0</h2>
<h3>Other</h3>
<ul>
<li>Enable client reuse when authenticating via a Github app using user
access tokens (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/740">#740</a>)</li>
<li>[<strong>breaking</strong>] Box the github error &amp; fix clippy
lints (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/743">#743</a>)</li>
<li>issues can now be closed as <code>duplicate</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/741">#741</a>)</li>
<li>Add &quot;merged&quot; field to PullRequest (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/737">#737</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.42.1...v0.43.0">0.43.0</a>
- 2025-01-13</h2>
<h3>Other</h3>
<ul>
<li>Enable client reuse when authenticating via a Github app using user
access tokens (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/740">#740</a>)</li>
<li>[<strong>breaking</strong>] Box the github error &amp; fix clippy
lints (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/743">#743</a>)</li>
<li>issues can now be closed as <code>duplicate</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/741">#741</a>)</li>
<li>Add &quot;merged&quot; field to PullRequest (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/737">#737</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ce8c885dc2"><code>ce8c885</code></a>
chore: release v0.43.0 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/739">#739</a>)</li>
<li><a
href="410625159b"><code>4106251</code></a>
Enable client reuse when authenticating via a Github app using user
access to...</li>
<li><a
href="65489d6eb4"><code>65489d6</code></a>
chore!: Box the github error &amp; fix clippy lints (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/743">#743</a>)</li>
<li><a
href="a9167147b6"><code>a916714</code></a>
issues can now be closed as <code>duplicate</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/741">#741</a>)</li>
<li><a
href="fae5b08916"><code>fae5b08</code></a>
Add &quot;merged&quot; field to PullRequest (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/737">#737</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.42.1...v0.43.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.42.1&new-version=0.43.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 18:42:47 +03:00
dependabot[bot]
9e319b92b2 chore(deps): bump DavidAnson/markdownlint-cli2-action from 18 to 19 (#1623)
Bumps
[DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action)
from 18 to 19.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/davidanson/markdownlint-cli2-action/releases">DavidAnson/markdownlint-cli2-action's
releases</a>.</em></p>
<blockquote>
<h2>Update markdownlint version (markdownlint-cli2 v0.17.2, markdownlint
v0.37.4).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.17.0, markdownlint
v0.37.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.15.0, markdownlint
v0.36.1).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.14.0, markdownlint
v0.35.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.13.0, markdownlint
v0.34.0).</h2>
<p>No release notes provided.</p>
<p>Update markdownlint version (markdownlint-cli2 v0.12.1, markdownlint
v0.33.0).</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.11.0, markdownlint
v0.32.1), remove deprecated &quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.10.0, markdownlint
v0.31.1).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.9.2, markdownlint
v0.30.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.8.1, markdownlint
v0.29.0), add &quot;config&quot; and &quot;fix&quot; inputs, deprecate
&quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.1, markdownlint
v0.28.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.0, markdownlint
v0.28.1), include link to rule information in title of annotations
(clickable in GitHub).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.6.0, markdownlint
v0.27.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.5.1, markdownlint
v0.26.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.4.0, markdownlint
v0.25.1)</h2>
<p>No release notes provided.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="05f32210e8"><code>05f3221</code></a>
Update to version 19.1.0.</li>
<li><a
href="1d17f9bb81"><code>1d17f9b</code></a>
Add tests for custom rules (markdown-it and micromark) with no errors
and err...</li>
<li><a
href="51527aa3e5"><code>51527aa</code></a>
Freshen generated index.js file.</li>
<li><a
href="e537c98f77"><code>e537c98</code></a>
Bump markdownlint-cli2 from 0.17.1 to 0.17.2</li>
<li><a
href="c0be6188d6"><code>c0be618</code></a>
Bump eslint from 9.17.0 to 9.18.0</li>
<li><a
href="5ed1ce51e3"><code>5ed1ce5</code></a>
Bump <code>@​eslint/js</code> from 9.17.0 to 9.18.0</li>
<li><a
href="502fa0bb7d"><code>502fa0b</code></a>
Bump <code>@​stylistic/eslint-plugin</code> from 2.12.1 to 2.13.0</li>
<li><a
href="49e5884463"><code>49e5884</code></a>
Freshen generated index.js file.</li>
<li><a
href="a30a754947"><code>a30a754</code></a>
Freshen generated index.js file.</li>
<li><a
href="a662b8af10"><code>a662b8a</code></a>
Bump markdownlint-cli2 from 0.17.0 to 0.17.1</li>
<li>Additional commits viewable in <a
href="https://github.com/davidanson/markdownlint-cli2-action/compare/v18...v19">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=DavidAnson/markdownlint-cli2-action&package-manager=github_actions&previous-version=18&new-version=19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 18:42:24 +03:00
Théo Tchilinguirian
985cd05573 feat(symbols): add dashed borders (#1573)
Adds several new border sets:
- ratatui::symbols::border::LIGHT_DOUBLE_DASHED
- ratatui::symbols::border::HEAVY_DOUBLE_DASHED
- ratatui::symbols::border::LIGHT_TRIPLE_DASHED
- ratatui::symbols::border::HEAVY_TRIPLE_DASHED
- ratatui::symbols::border::LIGHT_QUADRUPLE_DASHED
- ratatui::symbols::border::HEAVY_QUADRUPLE_DASHED

And corresponding variants to the ratatui::widgets::BorderType enum

Fixes: https://github.com/ratatui/ratatui/issues/1355
Signed-off-by: Théo Tchilinguirian <theo.tchlx@gmail.com>
2025-01-20 00:36:19 -08:00
Josh McKinney
57c2326574 ci: run cargo-deny directly rather than via action (#1621)
Improves CI time
2025-01-17 01:40:54 -08:00
Josh McKinney
a195d59a47 refactor: move xtask commands to small modules (#1620) 2025-01-17 01:40:22 -08:00
Josh McKinney
e7831aedd4 chore: release 0.30.0-alpha.1 (#1618)
Versions:

```
ratatui = { path = "ratatui", version = "0.30.0-alpha.1" }
ratatui-core = { path = "ratatui-core", version = "0.1.0-alpha.2" }
ratatui-crossterm = { path = "ratatui-crossterm", version = "0.1.0-alpha.1" }
ratatui-termion = { path = "ratatui-termion", version = "0.1.0-alpha.1" }
ratatui-termwiz = { path = "ratatui-termwiz", version = "0.1.0-alpha.1" }
ratatui-widgets = { path = "ratatui-widgets", version = "0.3.0-alpha.1" }
```
2025-01-15 15:31:38 -08:00
Josh McKinney
4a871f993e ci: refactor xtask / toml formatting (#1602)
- format toml files using taplo
- add toml formatting check to CI
- use xtask consistently from bacon
- refactor xtask commands to take params instead of multiple commands
2025-01-14 14:20:05 -08:00
Josh McKinney
da05957fa0 docs: add widget-ref-container example (#1603)
Implements ideas alluded to by
<https://discord.com/channels/1070692720437383208/1072907135664529508/1323061053990637640>
and followup conversations.
2025-01-14 14:05:58 -08:00
dependabot[bot]
41d883da7a chore(deps): bump serde_json from 1.0.134 to 1.0.135 (#1614)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.134 to
1.0.135.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.135</h2>
<ul>
<li>Add serde_json::Map::into_values method (<a
href="https://redirect.github.com/serde-rs/json/issues/1226">#1226</a>,
thanks <a
href="https://github.com/tisonkun"><code>@​tisonkun</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9802c08d4e"><code>9802c08</code></a>
Release 1.0.135</li>
<li><a
href="b97935fde2"><code>b97935f</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1226">#1226</a>
from tisonkun/map-into-values</li>
<li><a
href="d48c224d12"><code>d48c224</code></a>
Add Map::into_values method</li>
<li><a
href="1e77cac742"><code>1e77cac</code></a>
Resolve precedence clippy lint</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.134...v1.0.135">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.134&new-version=1.0.135)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-14 20:31:20 +03:00
dependabot[bot]
0552223511 chore(deps): bump rstest from 0.23.0 to 0.24.0 (#1610)
Bumps [rstest](https://github.com/la10736/rstest) from 0.23.0 to 0.24.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/releases">rstest's
releases</a>.</em></p>
<blockquote>
<h2>0.24.0</h2>
<h2>What's Changed</h2>
<ul>
<li>refactor: use <code>core</code> instead of <code>std</code> by <a
href="https://github.com/rnbguy"><code>@​rnbguy</code></a> in <a
href="https://redirect.github.com/la10736/rstest/pull/283">la10736/rstest#283</a></li>
<li>Fix msrv and complete no_std support by <a
href="https://github.com/la10736"><code>@​la10736</code></a> in <a
href="https://redirect.github.com/la10736/rstest/pull/285">la10736/rstest#285</a></li>
<li>replace futures with futures-util by <a
href="https://github.com/mati865"><code>@​mati865</code></a> in <a
href="https://redirect.github.com/la10736/rstest/pull/288">la10736/rstest#288</a></li>
<li>Introduce Context by <a
href="https://github.com/la10736"><code>@​la10736</code></a> in <a
href="https://redirect.github.com/la10736/rstest/pull/289">la10736/rstest#289</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/rnbguy"><code>@​rnbguy</code></a> made
their first contribution in <a
href="https://redirect.github.com/la10736/rstest/pull/283">la10736/rstest#283</a></li>
<li><a href="https://github.com/mati865"><code>@​mati865</code></a> made
their first contribution in <a
href="https://redirect.github.com/la10736/rstest/pull/288">la10736/rstest#288</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/la10736/rstest/compare/v0.23.0...v0.24.0">https://github.com/la10736/rstest/compare/v0.23.0...v0.24.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/blob/master/CHANGELOG.md">rstest's
changelog</a>.</em></p>
<blockquote>
<h2>[0.24.0] 2025/1/1</h2>
<h3>Changed</h3>
<ul>
<li>MSRV to 1.70.0 (see <a
href="https://redirect.github.com/la10736/rstest/issues/284">#284</a>
thanks to <a
href="https://github.com/rnbguy"><code>@​rnbguy</code></a>)</li>
</ul>
<h3>Add</h3>
<ul>
<li><code>#![no_std]</code> support: now you can use <code>rstest</code>
also in <code>no_std</code> lib
(see <a
href="https://redirect.github.com/la10736/rstest/issues/282">#282</a>
thanks to <a
href="https://github.com/rnbguy"><code>@​rnbguy</code></a>)</li>
<li><code>#[context]</code> to have test function name and other useful
thighs on
the tip of your fingers (see <a
href="https://redirect.github.com/la10736/rstest/issues/177">#177</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d57af90f16"><code>d57af90</code></a>
Prepare release</li>
<li><a
href="dfc4ff0e42"><code>dfc4ff0</code></a>
Make clippy happy</li>
<li><a
href="01140c13a1"><code>01140c1</code></a>
Docs and changelog</li>
<li><a
href="4a9763f2fe"><code>4a9763f</code></a>
1. Test also matrix case</li>
<li><a
href="d77d7c6a48"><code>d77d7c6</code></a>
Base implementation</li>
<li><a
href="7792a9b7bc"><code>7792a9b</code></a>
Add the ability to run CI test on demand</li>
<li><a
href="11869b587c"><code>11869b5</code></a>
Don't add channel if the env is not provided explicitly.</li>
<li><a
href="9a78bfb78f"><code>9a78bfb</code></a>
replace futures with futures-util</li>
<li><a
href="88f9c2ef6f"><code>88f9c2e</code></a>
<a href="https://redirect.github.com/la10736/rstest/issues/282">#282</a>
: add e2e test, cover also the once fixture case and add cheange log
lines</li>
<li><a
href="cb5db35f26"><code>cb5db35</code></a>
Close <a
href="https://redirect.github.com/la10736/rstest/issues/284">#284</a>
and add a test to check msrv on rendered code.</li>
<li>Additional commits viewable in <a
href="https://github.com/la10736/rstest/compare/v0.23.0...v0.24.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rstest&package-manager=cargo&previous-version=0.23.0&new-version=0.24.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-14 20:31:03 +03:00
dependabot[bot]
21a561b1b3 chore(deps): bump tokio from 1.42.0 to 1.43.0 (#1613)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.42.0 to 1.43.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.43.0</h2>
<h1>1.43.0 (Jan 8th, 2025)</h1>
<h3>Added</h3>
<ul>
<li>net: add <code>UdpSocket::peek</code> methods (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7068">#7068</a>)</li>
<li>net: add support for Haiku OS (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7042">#7042</a>)</li>
<li>process: add <code>Command::into_std()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7014">#7014</a>)</li>
<li>signal: add <code>SignalKind::info</code> on illumos (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6995">#6995</a>)</li>
<li>signal: add support for realtime signals on illumos (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7029">#7029</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>io: don't call <code>set_len</code> before initializing vector in
<code>Blocking</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7054">#7054</a>)</li>
<li>macros: suppress <code>clippy::needless_return</code> in
<code>#[tokio::main]</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6874">#6874</a>)</li>
<li>runtime: fix thread parking on WebAssembly (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7041">#7041</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>chore: use unsync loads for <code>unsync_load</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7073">#7073</a>)</li>
<li>io: use <code>Buf::put_bytes</code> in <code>Repeat</code> read impl
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7055">#7055</a>)</li>
<li>task: drop the join waker of a task eagerly (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6986">#6986</a>)</li>
</ul>
<h3>Changes to unstable APIs</h3>
<ul>
<li>metrics: improve flexibility of H2Histogram Configuration (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6963">#6963</a>)</li>
<li>taskdump: add accessor methods for backtrace (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6975">#6975</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>io: clarify <code>ReadBuf::uninit</code> allows initialized buffers
as well (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7053">#7053</a>)</li>
<li>net: fix ambiguity in <code>TcpStream::try_write_vectored</code>
docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7067">#7067</a>)</li>
<li>runtime: fix <code>LocalRuntime</code> doc links (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7074">#7074</a>)</li>
<li>sync: extend documentation for
<code>watch::Receiver::wait_for</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7038">#7038</a>)</li>
<li>sync: fix typos in <code>OnceCell</code> docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7047">#7047</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/6874">#6874</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6874">tokio-rs/tokio#6874</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6963">#6963</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6963">tokio-rs/tokio#6963</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6975">#6975</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6975">tokio-rs/tokio#6975</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6986">#6986</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6986">tokio-rs/tokio#6986</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6995">#6995</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6995">tokio-rs/tokio#6995</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7014">#7014</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7014">tokio-rs/tokio#7014</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7029">#7029</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7029">tokio-rs/tokio#7029</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7038">#7038</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7038">tokio-rs/tokio#7038</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7041">#7041</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7041">tokio-rs/tokio#7041</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7042">#7042</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7042">tokio-rs/tokio#7042</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7047">#7047</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7047">tokio-rs/tokio#7047</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7053">#7053</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7053">tokio-rs/tokio#7053</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7054">#7054</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7054">tokio-rs/tokio#7054</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7055">#7055</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7055">tokio-rs/tokio#7055</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5f3296df77"><code>5f3296d</code></a>
chore: prepare Tokio v1.43.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7079">#7079</a>)</li>
<li><a
href="cc974a646b"><code>cc974a6</code></a>
chore: prepare tokio-macros v2.5.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7078">#7078</a>)</li>
<li><a
href="15495fd883"><code>15495fd</code></a>
metrics: improve flexibility of H2Histogram Configuration (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6963">#6963</a>)</li>
<li><a
href="ad4183412a"><code>ad41834</code></a>
io: don't call <code>set_len</code> before initializing vector in
<code>Blocking</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7054">#7054</a>)</li>
<li><a
href="bd3e857737"><code>bd3e857</code></a>
runtime: move <code>is_join_waker_set</code> assertion in
<code>unset_waker</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7072">#7072</a>)</li>
<li><a
href="15f73666f1"><code>15f7366</code></a>
runtime: fix <code>LocalRuntime</code> doc links (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7074">#7074</a>)</li>
<li><a
href="fd2048dad1"><code>fd2048d</code></a>
ci: split miri jobs into unit and integration tests (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7071">#7071</a>)</li>
<li><a
href="e8f39157b6"><code>e8f3915</code></a>
chore: use unsync loads for <code>unsync_load</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7073">#7073</a>)</li>
<li><a
href="67f127769b"><code>67f1277</code></a>
net: fix ambiguity in <code>TcpStream::try_write_vectored</code> docs
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7067">#7067</a>)</li>
<li><a
href="463502cbaf"><code>463502c</code></a>
io: clarify <code>ReadBuf::uninit</code> allows initialized buffers as
well (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7053">#7053</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.42.0...tokio-1.43.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.42.0&new-version=1.43.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 13:18:16 -08:00
dependabot[bot]
079d74ce14 chore(deps): bump bitflags from 2.6.0 to 2.7.0 (#1615)
Bumps [bitflags](https://github.com/bitflags/bitflags) from 2.6.0 to
2.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/releases">bitflags's
releases</a>.</em></p>
<blockquote>
<h2>2.7.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix <code>clippy::doc_lazy_continuation</code> lints by <a
href="https://github.com/waywardmonkeys"><code>@​waywardmonkeys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/414">bitflags/bitflags#414</a></li>
<li>Run clippy on extra features in CI. by <a
href="https://github.com/waywardmonkeys"><code>@​waywardmonkeys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/415">bitflags/bitflags#415</a></li>
<li>Fix CI: trybuild refresh, allow some clippy restrictions. by <a
href="https://github.com/waywardmonkeys"><code>@​waywardmonkeys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/417">bitflags/bitflags#417</a></li>
<li>Update zerocopy version in example by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/422">bitflags/bitflags#422</a></li>
<li>Add method to check if unknown bits are set by <a
href="https://github.com/wysiwys"><code>@​wysiwys</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/426">bitflags/bitflags#426</a></li>
<li>Update error messages by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/427">bitflags/bitflags#427</a></li>
<li>Add <code>truncate(&amp;mut self)</code> method to unset unknown
bits by <a href="https://github.com/wysiwys"><code>@​wysiwys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/428">bitflags/bitflags#428</a></li>
<li>Update error messages by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/429">bitflags/bitflags#429</a></li>
<li>Prepare for 2.7.0 release by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/430">bitflags/bitflags#430</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/wysiwys"><code>@​wysiwys</code></a> made
their first contribution in <a
href="https://redirect.github.com/bitflags/bitflags/pull/426">bitflags/bitflags#426</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.6.0...2.7.0">https://github.com/bitflags/bitflags/compare/2.6.0...2.7.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md">bitflags's
changelog</a>.</em></p>
<blockquote>
<h1>2.7.0</h1>
<h2>What's Changed</h2>
<ul>
<li>Fix <code>clippy::doc_lazy_continuation</code> lints by <a
href="https://github.com/waywardmonkeys"><code>@​waywardmonkeys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/414">bitflags/bitflags#414</a></li>
<li>Run clippy on extra features in CI. by <a
href="https://github.com/waywardmonkeys"><code>@​waywardmonkeys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/415">bitflags/bitflags#415</a></li>
<li>Fix CI: trybuild refresh, allow some clippy restrictions. by <a
href="https://github.com/waywardmonkeys"><code>@​waywardmonkeys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/417">bitflags/bitflags#417</a></li>
<li>Update zerocopy version in example by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/422">bitflags/bitflags#422</a></li>
<li>Add method to check if unknown bits are set by <a
href="https://github.com/wysiwys"><code>@​wysiwys</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/426">bitflags/bitflags#426</a></li>
<li>Update error messages by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/427">bitflags/bitflags#427</a></li>
<li>Add <code>truncate(&amp;mut self)</code> method to unset unknown
bits by <a href="https://github.com/wysiwys"><code>@​wysiwys</code></a>
in <a
href="https://redirect.github.com/bitflags/bitflags/pull/428">bitflags/bitflags#428</a></li>
<li>Update error messages by <a
href="https://github.com/KodrAus"><code>@​KodrAus</code></a> in <a
href="https://redirect.github.com/bitflags/bitflags/pull/429">bitflags/bitflags#429</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/wysiwys"><code>@​wysiwys</code></a> made
their first contribution in <a
href="https://redirect.github.com/bitflags/bitflags/pull/426">bitflags/bitflags#426</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/bitflags/bitflags/compare/2.6.0...2.7.0">https://github.com/bitflags/bitflags/compare/2.6.0...2.7.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="10b9fd3a9e"><code>10b9fd3</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/430">#430</a>
from bitflags/cargo/2.7.0</li>
<li><a
href="137485a2c2"><code>137485a</code></a>
prepare for 2.7.0 release</li>
<li><a
href="6c0dfa4a0c"><code>6c0dfa4</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/429">#429</a>
from bitflags/fix/err-msgs-2</li>
<li><a
href="451fdf4778"><code>451fdf4</code></a>
update rust before building</li>
<li><a
href="f5ac5b14e5"><code>f5ac5b1</code></a>
update error messages</li>
<li><a
href="30901e6dee"><code>30901e6</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/428">#428</a>
from wysiwys/main</li>
<li><a
href="7b9ecab84d"><code>7b9ecab</code></a>
add <code>truncate(&amp;mut self)</code> method to unset unknown
bits</li>
<li><a
href="85983a4b1c"><code>85983a4</code></a>
Merge pull request <a
href="https://redirect.github.com/bitflags/bitflags/issues/427">#427</a>
from bitflags/ci/error-msgs</li>
<li><a
href="f00779337d"><code>f007793</code></a>
remove match case</li>
<li><a
href="6ebcd190a2"><code>6ebcd19</code></a>
add test case for match statement</li>
<li>Additional commits viewable in <a
href="https://github.com/bitflags/bitflags/compare/2.6.0...2.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bitflags&package-manager=cargo&previous-version=2.6.0&new-version=2.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 13:17:41 -08:00
dependabot[bot]
22ec4f7414 chore(deps): bump instability from 0.3.6 to 0.3.7 (#1616)
Bumps [instability](https://github.com/ratatui-org/instability) from
0.3.6 to 0.3.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/instability/releases">instability's
releases</a>.</em></p>
<blockquote>
<h2>instability-example-v0.3.7</h2>
<h3>Other</h3>
<ul>
<li>Add #[allow(unused_imports)] lint to unstable reexports (<a
href="https://redirect.github.com/ratatui/instability/pull/21">#21</a>)</li>
</ul>
<h2>instability-v0.3.7</h2>
<h3>Other</h3>
<ul>
<li>Add #[allow(unused_imports)] lint to unstable reexports (<a
href="https://redirect.github.com/ratatui/instability/pull/21">#21</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/blob/main/CHANGELOG.md">instability's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.6...instability-v0.3.7">0.3.7</a>
- 2025-01-10</h2>
<h3>Other</h3>
<ul>
<li>Add #[allow(unused_imports)] lint to unstable reexports (<a
href="https://redirect.github.com/ratatui/instability/pull/21">#21</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c9ae88731b"><code>c9ae887</code></a>
chore: release v0.3.7 (<a
href="https://redirect.github.com/ratatui-org/instability/issues/22">#22</a>)</li>
<li><a
href="cf3e49aa16"><code>cf3e49a</code></a>
Add #[allow(unused_imports)] lint to unstable reexports (<a
href="https://redirect.github.com/ratatui-org/instability/issues/21">#21</a>)</li>
<li>See full diff in <a
href="https://github.com/ratatui-org/instability/compare/instability-v0.3.6...instability-v0.3.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=instability&package-manager=cargo&previous-version=0.3.6&new-version=0.3.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 13:16:24 -08:00
Josh McKinney
6f213191ef chore: rename examples with clashing names (#1597)
These will eventually be moved / consolidated elsewhere, but this clears
the warnings while building for now.
2025-01-11 00:10:54 +03:00
Josh McKinney
088aac136d docs(readme): tweak links and badges (#1598) 2025-01-11 00:06:52 +03:00
Josh McKinney
a692a6e371 fix(lint): apply rust 1.84 clippy suggestions (#1612)
The canvas map constants are now statics instead.
Fixes
https://rust-lang.github.io/rust-clippy/master/index.html\#large_const_arrays
2025-01-10 23:17:07 +03:00
dawe
1798512e94 docs: fix wording in user_input example (#1611)
Fix wording in `user_input.rs` example.
2025-01-07 19:25:47 +03:00
dependabot[bot]
32f3833a6d chore(deps): bump clap-cargo from 0.14.1 to 0.15.1 (#1608)
Bumps [clap-cargo](https://github.com/crate-ci/clap-cargo) from 0.14.1
to 0.15.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/clap-cargo/blob/master/CHANGELOG.md">clap-cargo's
changelog</a>.</em></p>
<blockquote>
<h2>[0.15.1] - 2025-01-03</h2>
<h3>Fix</h3>
<ul>
<li>Reduce <code>Cargo.lock</code> content</li>
</ul>
<h2>[0.15.0] - 2025-01-02</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgraded <code>cargo_metadata</code> to 0.19</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3eadd0f476"><code>3eadd0f</code></a>
chore: Release clap-cargo version 0.15.1</li>
<li><a
href="427af69642"><code>427af69</code></a>
docs: Update changelog</li>
<li><a
href="a37548f05b"><code>a37548f</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/clap-cargo/issues/79">#79</a>
from dtolnay-contrib/deps</li>
<li><a
href="80914f3015"><code>80914f3</code></a>
chore: Omit serde/serde_json from lockfiles not using
cargo_metadata</li>
<li><a
href="9b76d52f24"><code>9b76d52</code></a>
chore: Release clap-cargo version 0.15.0</li>
<li><a
href="bb2590c3af"><code>bb2590c</code></a>
docs: Update changelog</li>
<li><a
href="b44569a3ce"><code>b44569a</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/clap-cargo/issues/78">#78</a>
from epage/renovate/cargo_metadata-0.x</li>
<li><a
href="28a8c00d3f"><code>28a8c00</code></a>
chore(deps)!: Update Rust crate cargo_metadata to 0.19</li>
<li><a
href="4f485ee5de"><code>4f485ee</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/clap-cargo/issues/77">#77</a>
from crate-ci/renovate/stable-1.x</li>
<li><a
href="cfe5cacab3"><code>cfe5cac</code></a>
chore(deps): Update dependency STABLE to v1.83.0</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/clap-cargo/compare/v0.14.1...v0.15.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap-cargo&package-manager=cargo&previous-version=0.14.1&new-version=0.15.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 18:25:23 +03:00
dependabot[bot]
2ccc40e116 chore(deps): bump instability from 0.3.5 to 0.3.6 (#1609)
Bumps [instability](https://github.com/ratatui-org/instability) from
0.3.5 to 0.3.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/instability/releases">instability's
releases</a>.</em></p>
<blockquote>
<h2>instability-example-v0.3.6</h2>
<h3>Added</h3>
<ul>
<li>Allow marking impl blocks unstable/stable (<a
href="https://redirect.github.com/ratatui-org/instability/issues/15">#15</a>)</li>
<li>add stable macro (<a
href="https://redirect.github.com/ratatui-org/instability/issues/14">#14</a>)</li>
<li>use doc(cfg)</li>
<li>allow use statements to be marked unstable (<a
href="https://redirect.github.com/ratatui-org/instability/issues/3">#3</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>prepare instability-example for publish (<a
href="https://redirect.github.com/ratatui-org/instability/issues/18">#18</a>)</li>
<li>bump msrv to 1.63</li>
<li>tweak doc wording and formatting (<a
href="https://redirect.github.com/ratatui-org/instability/issues/4">#4</a>)</li>
<li>fork and change name to instabilty</li>
<li>Apply visibility restriction to struct fields (<a
href="https://redirect.github.com/ratatui/instability/pull/10">#10</a>)</li>
<li>Update to Rust edition 2021 (<a
href="https://redirect.github.com/ratatui/instability/pull/9">#9</a>)</li>
<li>Add issue tracking</li>
<li>Initial version</li>
</ul>
<h2>instability-v0.3.6</h2>
<h3>Other</h3>
<ul>
<li>Move pretty_assertions to dev-dependencies (<a
href="https://redirect.github.com/ratatui/instability/pull/19">#19</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/blob/main/CHANGELOG.md">instability's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.5...instability-v0.3.6">0.3.6</a>
- 2025-01-04</h2>
<h3>Other</h3>
<ul>
<li>Move pretty_assertions to dev-dependencies (<a
href="https://redirect.github.com/ratatui/instability/pull/19">#19</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cf84fbe505"><code>cf84fbe</code></a>
chore: release v0.3.6 (<a
href="https://redirect.github.com/ratatui-org/instability/issues/20">#20</a>)</li>
<li><a
href="5eca2ee0d1"><code>5eca2ee</code></a>
Move pretty_assertions to dev-dependencies (<a
href="https://redirect.github.com/ratatui-org/instability/issues/19">#19</a>)</li>
<li>See full diff in <a
href="https://github.com/ratatui-org/instability/compare/instability-v0.3.5...instability-v0.3.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=instability&package-manager=cargo&previous-version=0.3.5&new-version=0.3.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 18:24:20 +03:00
dependabot[bot]
019e34e006 chore(deps): bump serde from 1.0.216 to 1.0.217 (#1600)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.216 to
1.0.217.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.217</h2>
<ul>
<li>Support serializing externally tagged unit variant inside flattened
field (<a
href="https://redirect.github.com/serde-rs/serde/issues/2786">#2786</a>,
thanks <a
href="https://github.com/Mingun"><code>@​Mingun</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="930401b0dd"><code>930401b</code></a>
Release 1.0.217</li>
<li><a
href="cb6eaea151"><code>cb6eaea</code></a>
Fix roundtrip inconsistency:</li>
<li><a
href="b6f339ca36"><code>b6f339c</code></a>
Resolve repr_packed_without_abi clippy lint in tests</li>
<li><a
href="2a5caea1a8"><code>2a5caea</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2872">#2872</a>
from dtolnay/ehpersonality</li>
<li><a
href="b9f93f99aa"><code>b9f93f9</code></a>
Add no-std CI on stable compiler</li>
<li><a
href="eb5cd476ba"><code>eb5cd47</code></a>
Drop #[lang = &quot;eh_personality&quot;] from no-std test</li>
<li><a
href="8478a3b7dd"><code>8478a3b</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2871">#2871</a>
from dtolnay/nostdstart</li>
<li><a
href="dbb909136e"><code>dbb9091</code></a>
Replace #[start] with extern fn main</li>
<li>See full diff in <a
href="https://github.com/serde-rs/serde/compare/v1.0.216...v1.0.217">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.216&new-version=1.0.217)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-30 22:24:53 +03:00
Josh McKinney
11cbb2ba87 chore: use cargo xtask for bacon clippy command (#1592) 2024-12-29 11:49:41 -08:00
n4n5
50ba96518f feat: add a new RatatuiMascot widget (#1584)
Move the Mascot from Demo2 into a new widget.
Make the Rat grey and adjust the other colors.

```rust
frame.render_widget(RatatuiMascot::default(), frame.area());
```
2024-12-26 04:32:38 -08:00
Josh McKinney
904b0aa723 refactor: move symbols to modules (#1594) 2024-12-26 04:05:05 -08:00
Josh McKinney
b544e394c9 chore: use clap instead of argh for demo example (#1591) 2024-12-24 22:45:39 -08:00
Josh McKinney
1d28c89fe5 feat: add conversions for anstyle (#1581)
https://crates.io/crates/anstyle makes it possible to define colors in
an interoperable way. This makes it possible for applications to easily
load colors from a variety of formats.

This is gated by the anstyle feature flag which is disabled by default.

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2024-12-24 12:03:14 -08:00
dependabot[bot]
1d2882636e chore(deps): bump serde_json from 1.0.133 to 1.0.134 (#1586)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.133 to
1.0.134.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.134</h2>
<ul>
<li>Add <code>RawValue</code> associated constants for literal
<code>null</code>, <code>true</code>, <code>false</code> (<a
href="https://redirect.github.com/serde-rs/json/issues/1221">#1221</a>,
thanks <a
href="https://github.com/bheylin"><code>@​bheylin</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b2a1415aad"><code>b2a1415</code></a>
Release 1.0.134</li>
<li><a
href="9875785f24"><code>9875785</code></a>
Tweak wording of NULL/TRUE/FALSE documentation</li>
<li><a
href="4aa05b9143"><code>4aa05b9</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1222">#1222</a>
from dtolnay/rawvalueassoc</li>
<li><a
href="f42c7c760b"><code>f42c7c7</code></a>
Move RawValue associated constants into same impl block as public
functions</li>
<li><a
href="96576bad53"><code>96576ba</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1221">#1221</a>
from bheylin/add-const-raw-values-for-null-and-bools</li>
<li><a
href="4db66fb0b2"><code>4db66fb</code></a>
Add <code>'static</code> lifetime to <code>const</code>'s</li>
<li><a
href="9c9aa1f380"><code>9c9aa1f</code></a>
Add literal 'null', 'true' and 'false' consts to <code>RawValue</code>
struct.</li>
<li>See full diff in <a
href="https://github.com/serde-rs/json/compare/v1.0.133...v1.0.134">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.133&new-version=1.0.134)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-24 11:39:39 -08:00
dependabot[bot]
157cb3401b chore(deps): bump clap-verbosity-flag from 3.0.1 to 3.0.2 (#1587)
Bumps
[clap-verbosity-flag](https://github.com/clap-rs/clap-verbosity-flag)
from 3.0.1 to 3.0.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap-verbosity-flag/blob/master/CHANGELOG.md">clap-verbosity-flag's
changelog</a>.</em></p>
<blockquote>
<h2>[3.0.2] - 2024-12-16</h2>
<h3>Features</h3>
<ul>
<li>Add a <code>Copy</code> impl to <code>Verbosity</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8a65b98d9b"><code>8a65b98</code></a>
chore: Release clap-verbosity-flag version 3.0.2</li>
<li><a
href="6f634c99b2"><code>6f634c9</code></a>
docs: Update changelog</li>
<li><a
href="bcfc9e88f6"><code>bcfc9e8</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/133">#133</a>
from joshka/jm/verbosity-copy</li>
<li><a
href="9191996bed"><code>9191996</code></a>
feat: Impl Copy for Verbosity</li>
<li><a
href="9f72d6c034"><code>9f72d6c</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/131">#131</a>
from clap-rs/renovate/stable-1.x</li>
<li><a
href="3c00cdad77"><code>3c00cda</code></a>
chore(deps): Update compatible (dev) (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/130">#130</a>)</li>
<li><a
href="061da5a9ef"><code>061da5a</code></a>
chore(deps): Update dependency STABLE to v1.83.0</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap-verbosity-flag/compare/v3.0.1...v3.0.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap-verbosity-flag&package-manager=cargo&previous-version=3.0.1&new-version=3.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-24 11:39:07 -08:00
dependabot[bot]
3d0c96a838 chore(deps): bump instability from 0.3.3 to 0.3.5 (#1588)
Bumps [instability](https://github.com/ratatui-org/instability) from
0.3.3 to 0.3.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/instability/releases">instability's
releases</a>.</em></p>
<blockquote>
<h2>instability-example-v0.3.5</h2>
<h3>Added</h3>
<ul>
<li>Allow marking impl blocks unstable/stable (<a
href="https://redirect.github.com/ratatui-org/instability/issues/15">#15</a>)</li>
<li>add stable macro (<a
href="https://redirect.github.com/ratatui-org/instability/issues/14">#14</a>)</li>
<li>use doc(cfg)</li>
<li>allow use statements to be marked unstable (<a
href="https://redirect.github.com/ratatui-org/instability/issues/3">#3</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>prepare instability-example for publish (<a
href="https://redirect.github.com/ratatui-org/instability/issues/18">#18</a>)</li>
<li>bump msrv to 1.63</li>
<li>tweak doc wording and formatting (<a
href="https://redirect.github.com/ratatui-org/instability/issues/4">#4</a>)</li>
<li>fork and change name to instabilty</li>
<li>Apply visibility restriction to struct fields (<a
href="https://redirect.github.com/ratatui/instability/pull/10">#10</a>)</li>
<li>Update to Rust edition 2021 (<a
href="https://redirect.github.com/ratatui/instability/pull/9">#9</a>)</li>
<li>Add issue tracking</li>
<li>Initial version</li>
</ul>
<h2>instability-v0.3.5</h2>
<h3>Other</h3>
<ul>
<li>prepare instability-example for publish (<a
href="https://redirect.github.com/ratatui-org/instability/issues/18">#18</a>)</li>
<li>clippy --fix</li>
</ul>
<h2>instability-example-v0.3.4</h2>
<p>No release notes provided.</p>
<h2>instability-v0.3.4</h2>
<h3>Added</h3>
<ul>
<li>Allow marking impl blocks unstable/stable (<a
href="https://redirect.github.com/ratatui/instability/pull/15">#15</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/blob/main/CHANGELOG.md">instability's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.4...instability-v0.3.5">0.3.5</a>
- 2024-12-21</h2>
<h3>Other</h3>
<ul>
<li>prepare instability-example for publish (<a
href="https://redirect.github.com/ratatui-org/instability/issues/18">#18</a>)</li>
<li>clippy --fix</li>
</ul>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.3...instability-v0.3.4">0.3.4</a>
- 2024-12-21</h2>
<h3>Added</h3>
<ul>
<li>Allow marking impl blocks unstable/stable (<a
href="https://redirect.github.com/ratatui/instability/pull/15">#15</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6420472e5b"><code>6420472</code></a>
chore: release v0.3.5 (<a
href="https://redirect.github.com/ratatui-org/instability/issues/17">#17</a>)</li>
<li><a
href="308c590e9e"><code>308c590</code></a>
docs: prepare instability-example for publish (<a
href="https://redirect.github.com/ratatui-org/instability/issues/18">#18</a>)</li>
<li><a
href="7655288648"><code>7655288</code></a>
chore: clippy --fix</li>
<li><a
href="0762e064c2"><code>0762e06</code></a>
chore: release v0.3.4 (<a
href="https://redirect.github.com/ratatui-org/instability/issues/16">#16</a>)</li>
<li><a
href="596e13c00d"><code>596e13c</code></a>
feat: Allow marking impl blocks unstable/stable (<a
href="https://redirect.github.com/ratatui-org/instability/issues/15">#15</a>)</li>
<li>See full diff in <a
href="https://github.com/ratatui-org/instability/compare/instability-v0.3.3...instability-v0.3.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=instability&package-manager=cargo&previous-version=0.3.3&new-version=0.3.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-24 11:37:27 -08:00
dawe
03066d81bf docs: fix punctuation in canvas.rs documentation (#1583)
Fix end of sentence punctuation in canvas.rs docs.
2024-12-21 03:49:44 -05:00
Orhun Parmaksız
5f57d35234 chore(examples): add colors explorer demo app (#1580)
related #1512 

Moves the colors examples to apps

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-12-18 20:09:17 -08:00
Orhun Parmaksız
5c021bf344 chore(examples): add chart demo app (#1579)
related #1512 

Moves the chart example to apps

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-12-18 20:08:16 -08:00
Orhun Parmaksız
9721300a47 chore(examples): add canvas demo app (#1578)
related #1512 

This moves the canvas example to the apps and adds some interactivity
via changing the marker by pressing enter.
2024-12-18 20:06:12 -08:00
Orhun Parmaksız
9a541981b8 chore: make source files non-executable (#1577)
```bash
find . -type f -not -path './.git/*' -not -name '*.bash' -exec chmod 644 {} +
```

fixes #1576
2024-12-17 17:33:06 +03:00
Orhun Parmaksız
a6a1368250 chore(examples): add calendar explorer demo app (#1571)
Related to #1512 

As discussed, this moves the calendar example from ratatui to app
examples as an "explorer" example. It also adds interactivity where you
can press s to toggle between different styles of calendars.

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-12-16 11:41:41 -08:00
dependabot[bot]
1fcca6369e chore(deps): bump tokio from 1.41.1 to 1.42.0 (#1574)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.41.1 to 1.42.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.42.0</h2>
<h1>1.42.0 (Dec 3rd, 2024)</h1>
<h3>Added</h3>
<ul>
<li>io: add <code>AsyncFd::{try_io, try_io_mut}</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6967">#6967</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>io: avoid <code>ptr-&gt;ref-&gt;ptr</code> roundtrip in
RegistrationSet (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6929">#6929</a>)</li>
<li>runtime: do not defer <code>yield_now</code> inside
<code>block_in_place</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6999">#6999</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>io: simplify io readiness logic (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6966">#6966</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>net: fix docs for <code>tokio::net::unix::{pid_t, gid_t,
uid_t}</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6791">#6791</a>)</li>
<li>time: fix a typo in <code>Instant</code> docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6982">#6982</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/6791">#6791</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6791">tokio-rs/tokio#6791</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6929">#6929</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6929">tokio-rs/tokio#6929</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6966">#6966</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6966">tokio-rs/tokio#6966</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6967">#6967</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6967">tokio-rs/tokio#6967</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6982">#6982</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6982">tokio-rs/tokio#6982</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6999">#6999</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6999">tokio-rs/tokio#6999</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bb9d57017e"><code>bb9d570</code></a>
chore: prepare Tokio v1.42.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7005">#7005</a>)</li>
<li><a
href="af9c683d52"><code>af9c683</code></a>
tests: fix typo in build test instructions (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7004">#7004</a>)</li>
<li><a
href="4bc5a1a058"><code>4bc5a1a</code></a>
ci: allow Unicode-3.0 license for unicode-ident (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7006">#7006</a>)</li>
<li><a
href="f8948ea021"><code>f8948ea</code></a>
runtime: do not defer <code>yield_now</code> inside
<code>block_in_place</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6999">#6999</a>)</li>
<li><a
href="bce9780dd3"><code>bce9780</code></a>
time: use <code>array::from_fn</code> instead of manually creating array
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7000">#7000</a>)</li>
<li><a
href="38151f30cb"><code>38151f3</code></a>
readme: unlist 1.32.x as LTS release (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6997">#6997</a>)</li>
<li><a
href="5dda72d338"><code>5dda72d</code></a>
ci: pin valgrind to rustc 1.82 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6998">#6998</a>)</li>
<li><a
href="c07257f99f"><code>c07257f</code></a>
io: simplify io readiness logic (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6966">#6966</a>)</li>
<li><a
href="d08578fc9a"><code>d08578f</code></a>
time: fix a typo in <code>Instant</code> docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6982">#6982</a>)</li>
<li><a
href="4047d7962a"><code>4047d79</code></a>
miri: add annotations for tests with miri ignore (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6981">#6981</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.41.1...tokio-1.42.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.41.1&new-version=1.42.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 10:26:49 -08:00
dependabot[bot]
694c788c24 chore(deps): bump serde from 1.0.215 to 1.0.216 (#1575)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.215 to
1.0.216.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.216</h2>
<ul>
<li>Mark all generated impls with #[automatically_derived] to exclude
from code coverage (<a
href="https://redirect.github.com/serde-rs/serde/issues/2866">#2866</a>,
<a
href="https://redirect.github.com/serde-rs/serde/issues/2868">#2868</a>,
thanks <a
href="https://github.com/tdittr"><code>@​tdittr</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ad8dd4148b"><code>ad8dd41</code></a>
Release 1.0.216</li>
<li><a
href="f91d2ed9ae"><code>f91d2ed</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2868">#2868</a>
from dtolnay/automaticallyderived</li>
<li><a
href="9497463718"><code>9497463</code></a>
Mark all generated trait impls as #[automatically_derived]</li>
<li><a
href="46e9ecfcdd"><code>46e9ecf</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2866">#2866</a>
from tdittr/mark-visitors-as-generated</li>
<li><a
href="e9c399c822"><code>e9c399c</code></a>
Mark generated <code>impl de::Visitor</code> blocks as
<code>#[automatically_derived]</code></li>
<li><a
href="b9dbfcb4ac"><code>b9dbfcb</code></a>
Switch out fnv in favor of foldhash in test</li>
<li><a
href="c270e27a4d"><code>c270e27</code></a>
Use BuildHasher instead of Hasher in collection macros</li>
<li><a
href="0307f604ea"><code>0307f60</code></a>
Resolve question_mark clippy lint in build script</li>
<li>See full diff in <a
href="https://github.com/serde-rs/serde/compare/v1.0.215...v1.0.216">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.215&new-version=1.0.216)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 10:23:50 -08:00
Orhun Parmaksız
6e436725e4 docs(readme): reimagine README.md (#1569)
This is the result of the re-imagination of a more suitable README.md. It
is simpler and shorter: not giving more information to the user than
they actually need.

Also updates the quickstart code with the up-to-date version and adds
link to templates which was missing.

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-12-14 22:22:33 +03:00
Orhun Parmaksız
dafb716f9d docs(widgets): add example for grouped barchart (#1566)
related #1512

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-12-12 20:42:41 +03:00
Orhun Parmaksız
819e92cd44 chore(examples): add weather demo app (#1567)
related to #1512
2024-12-11 11:25:56 +03:00
dependabot[bot]
a38066d2d1 chore(deps): bump dawidd6/action-download-artifact from 6 to 7 (#1560)
Bumps
[dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact)
from 6 to 7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dawidd6/action-download-artifact/releases">dawidd6/action-download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v7</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump fast-xml-parser from 4.4.0 to 4.4.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/299">dawidd6/action-download-artifact#299</a></li>
<li>build(deps): bump <code>@​actions/artifact</code> from 2.1.7 to
2.1.9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/300">dawidd6/action-download-artifact#300</a></li>
<li>build(deps): bump adm-zip from 0.5.14 to 0.5.15 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/301">dawidd6/action-download-artifact#301</a></li>
<li>build(deps): bump adm-zip from 0.5.15 to 0.5.16 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/306">dawidd6/action-download-artifact#306</a></li>
<li>build(deps): bump path-to-regexp from 6.2.2 to 6.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/307">dawidd6/action-download-artifact#307</a></li>
<li>build(deps): bump <code>@​actions/artifact</code> from 2.1.9 to
2.1.10 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/311">dawidd6/action-download-artifact#311</a></li>
<li>build(deps): bump <code>@​actions/core</code> from 1.10.1 to 1.11.0
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/310">dawidd6/action-download-artifact#310</a></li>
<li>build(deps): bump <code>@​actions/core</code> from 1.11.0 to 1.11.1
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/312">dawidd6/action-download-artifact#312</a></li>
<li>build(deps): bump <code>@​actions/artifact</code> from 2.1.10 to
2.1.11 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/313">dawidd6/action-download-artifact#313</a></li>
<li>build(deps): Fix cross-spawn &gt;=7.0.0 &lt;= 7.0.5 vulnerability by
<a href="https://github.com/alexcouret"><code>@​alexcouret</code></a> in
<a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/317">dawidd6/action-download-artifact#317</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/alexcouret"><code>@​alexcouret</code></a> made
their first contribution in <a
href="https://redirect.github.com/dawidd6/action-download-artifact/pull/317">dawidd6/action-download-artifact#317</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/dawidd6/action-download-artifact/compare/v6...v7">https://github.com/dawidd6/action-download-artifact/compare/v6...v7</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="80620a5d27"><code>80620a5</code></a>
node_modules: update</li>
<li><a
href="b15e003f46"><code>b15e003</code></a>
node_modules: install</li>
<li><a
href="1ee9a455fd"><code>1ee9a45</code></a>
build(deps): Fix cross-spawn &gt;=7.0.0 &lt;= 7.0.5 vulnerability (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/317">#317</a>)</li>
<li><a
href="b2f2706ac4"><code>b2f2706</code></a>
build(deps): bump <code>@​actions/artifact</code> from 2.1.10 to 2.1.11
(<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/313">#313</a>)</li>
<li><a
href="fdbeba027c"><code>fdbeba0</code></a>
build(deps): bump <code>@​actions/core</code> from 1.11.0 to 1.11.1 (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/312">#312</a>)</li>
<li><a
href="a74b42987a"><code>a74b429</code></a>
build(deps): bump <code>@​actions/core</code> from 1.10.1 to 1.11.0 (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/310">#310</a>)</li>
<li><a
href="24e807a70c"><code>24e807a</code></a>
build(deps): bump <code>@​actions/artifact</code> from 2.1.9 to 2.1.10
(<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/311">#311</a>)</li>
<li><a
href="9592e3c4ab"><code>9592e3c</code></a>
build(deps): bump path-to-regexp from 6.2.2 to 6.3.0 (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/307">#307</a>)</li>
<li><a
href="5f966b63eb"><code>5f966b6</code></a>
build(deps): bump adm-zip from 0.5.15 to 0.5.16 (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/306">#306</a>)</li>
<li><a
href="db9477a3eb"><code>db9477a</code></a>
build(deps): bump adm-zip from 0.5.14 to 0.5.15 (<a
href="https://redirect.github.com/dawidd6/action-download-artifact/issues/301">#301</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/dawidd6/action-download-artifact/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dawidd6/action-download-artifact&package-manager=github_actions&previous-version=6&new-version=7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 15:26:49 -08:00
dependabot[bot]
3646c97840 chore(deps): bump time from 0.3.36 to 0.3.37 (#1561)
Bumps [time](https://github.com/time-rs/time) from 0.3.36 to 0.3.37.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/releases">time's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.37</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's
changelog</a>.</em></p>
<blockquote>
<h2>0.3.37 [2024-12-03]</h2>
<h3>Added</h3>
<ul>
<li><code>Time::MAX</code>, equivalent to
<code>time!(23:59:59.999999999)</code></li>
<li><code>[year repr:century]</code> is now supported in format
descriptions. When used in conjunction with
<code>[year repr:last_two]</code>, there is sufficient information to
parse a date. Note that with the
<code>large-date</code> feature enabled, there is an ambiguity when
parsing the two back-to-back.</li>
<li>Parsing of <code>strftime</code>-style format descriptions, located
at
<code>time::format_description::parse_strftime_borrowed</code> and
<code>time::format_description::parse_strftime_owned</code></li>
<li><code>time::util::refresh_tz</code> and
<code>time::util::refresh_tz_unchecked</code>, which updates information
obtained via the <code>TZ</code> environment variable. This is
equivalent to the <code>tzset</code> syscall on Unix-like
systems, with and without built-in soundness checks, respectively.</li>
<li><code>Month::length</code> and <code>util::days_in_month</code>,
replacing <code>util::days_in_year_month</code>.</li>
<li>Expressions are permitted in
<code>time::serde::format_description!</code> rather than only paths.
This also
drastically improves diagnostics when an invalid value is provided.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>
<p>Obtaining the system UTC offset on Unix-like systems should now
succeed when multi-threaded.
However, if the <code>TZ</code> environment variable is altered, the
program will not be aware of this until
<code>time::util::refresh_tz</code> or
<code>time::util::refresh_tz_unchecked</code> is called.
<code>refresh_tz</code> has the
same soundness requirements as obtaining the system UTC offset
previously did, with the
requirements still being automatically enforced.
<code>refresh_tz_unchecked</code> does not enforce these
requirements at the expense of being <code>unsafe</code>. Most programs
should not need to call either
function.</p>
<p>Due to this change, the <code>time::util::local_offset</code> module
has been deprecated in its entirety. The
<code>get_soundness</code> and <code>set_soundness</code> functions are
now no-ops.</p>
<p>Note that while calls <em>should</em> succeed, success is not
guaranteed in any situation. Downstream
users should always be prepared to handle the error case.</p>
</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Floating point values are truncated, not rounded, when
formatting.</li>
<li>RFC3339 allows arbitrary separators between the date and time
components.</li>
<li>Serialization of negative <code>Duration</code>s less than one
second is now correct. It previously omitted
the negative sign.</li>
<li><code>From&lt;js_sys::Date&gt; for OffsetDateTime</code> now ensures
sub-millisecond values are not erroneously
returned.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d4e39b306d"><code>d4e39b3</code></a>
v0.3.37 release</li>
<li><a
href="09439970e5"><code>0943997</code></a>
Fix CI failure</li>
<li><a
href="8b50f04ee0"><code>8b50f04</code></a>
Update lints</li>
<li><a
href="56f1db6dfa"><code>56f1db6</code></a>
Add <code>Month::length</code>, <code>days_in_month</code></li>
<li><a
href="03bcfe9f28"><code>03bcfe9</code></a>
Skip formatting some macros, update UI tests</li>
<li><a
href="4404638fe2"><code>4404638</code></a>
Permit exprs in <code>serde::format_description!</code></li>
<li><a
href="6b43b44060"><code>6b43b44</code></a>
strftime implementation</li>
<li><a
href="98569ffe5b"><code>98569ff</code></a>
Hide deprecations from docs</li>
<li><a
href="febf3a10de"><code>febf3a1</code></a>
Obtain local offset in multi-threaded situations</li>
<li><a
href="1e19827c5a"><code>1e19827</code></a>
Update rstest and rstest_reuse; bump MSRV to 1.67.1 (<a
href="https://redirect.github.com/time-rs/time/issues/716">#716</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/time-rs/time/compare/v0.3.36...v0.3.37">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.36&new-version=0.3.37)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 15:26:18 -08:00
dependabot[bot]
1c3b698b82 chore(deps): bump cargo_metadata from 0.19.0 to 0.19.1 (#1562)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [cargo_metadata](https://github.com/oli-obk/cargo_metadata) from
0.19.0 to 0.19.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/oli-obk/cargo_metadata/blob/main/CHANGELOG.md">cargo_metadata's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>Unreleased</h2>
<ul>
<li>n/a</li>
</ul>
<h3>Added</h3>
<ul>
<li>n/a</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Updated dependencies:
<ul>
<li><code>thiserror</code> from <code>1.0.31</code> to
<code>2.0.3</code></li>
<li><code>derive_builder</code> from <code>0.12</code> to
<code>0.20</code></li>
</ul>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>n/a</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>n/a</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8f4c3a8e6d"><code>8f4c3a8</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/276">#276</a>
from sunshowers/fromstr-display</li>
<li><a
href="e6c0f06160"><code>e6c0f06</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/278">#278</a>
from oli-obk/push-qxuollxmvlzn</li>
<li><a
href="61ceb9aabc"><code>61ceb9a</code></a>
Pacify clippy</li>
<li><a
href="eae17fb2da"><code>eae17fb</code></a>
Bump msrv to keep in sync with our dependencies</li>
<li><a
href="2983f519a2"><code>2983f51</code></a>
add FromStr and Display impls for TargetKind and CrateType</li>
<li><a
href="834207b821"><code>834207b</code></a>
Merge pull request <a
href="https://redirect.github.com/oli-obk/cargo_metadata/issues/273">#273</a>
from regexident/update-dependencies</li>
<li><a
href="437339616a"><code>4373396</code></a>
Update dependencies</li>
<li>See full diff in <a
href="https://github.com/oli-obk/cargo_metadata/compare/0.19.0...0.19.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cargo_metadata&package-manager=cargo&previous-version=0.19.0&new-version=0.19.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-12-09 15:25:59 -08:00
dependabot[bot]
c767f6bc3c chore(deps): bump tokio-stream from 0.1.16 to 0.1.17 (#1563)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.16 to
0.1.17.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="67355c6d23"><code>67355c6</code></a>
chore: prepare tokio-stream v0.1.17 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7020">#7020</a>)</li>
<li><a
href="405d746d38"><code>405d746</code></a>
signal: remove oneshot channels from tests (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7015">#7015</a>)</li>
<li><a
href="e0d1293fac"><code>e0d1293</code></a>
ci: add instructions that explain how to fix spellcheck errors (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7016">#7016</a>)</li>
<li><a
href="480c010b01"><code>480c010</code></a>
signal: add <code>SignalKind::info</code> on illumos (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6995">#6995</a>)</li>
<li><a
href="c032ea0203"><code>c032ea0</code></a>
ci: detect trailing whitespace (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7013">#7013</a>)</li>
<li><a
href="0b31c2f73d"><code>0b31c2f</code></a>
chore: prepare tokio-util v0.7.13 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7012">#7012</a>)</li>
<li><a
href="129f9fc0c8"><code>129f9fc</code></a>
codec: fix incorrect handling of invalid utf-8 in
<code>LinesCodec::decode_eof</code> (#...</li>
<li><a
href="b5c227d51f"><code>b5c227d</code></a>
tracing: move tracing instrumentation tests into tokio tests (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7007">#7007</a>)</li>
<li><a
href="dcae2b9eb8"><code>dcae2b9</code></a>
ci: unfreeze FreeBSD from rustc 1.81 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7009">#7009</a>)</li>
<li><a
href="bb9d57017e"><code>bb9d570</code></a>
chore: prepare Tokio v1.42.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7005">#7005</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.16...tokio-stream-0.1.17">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio-stream&package-manager=cargo&previous-version=0.1.16&new-version=0.1.17)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 15:25:05 -08:00
dependabot[bot]
08ea837753 chore(deps): bump octocrab from 0.42.0 to 0.42.1 (#1564)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.42.0 to
0.42.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.42.1</h2>
<h3>Other</h3>
<ul>
<li>Secret scanning alert locations API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/735">#735</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.42.0...v0.42.1">0.42.1</a>
- 2024-11-22</h2>
<h3>Other</h3>
<ul>
<li>Secret scanning alert locations API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/735">#735</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="653814c434"><code>653814c</code></a>
chore: release v0.42.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/736">#736</a>)</li>
<li><a
href="592f165801"><code>592f165</code></a>
Secret scanning alert locations API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/735">#735</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.42.0...v0.42.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.42.0&new-version=0.42.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 15:24:47 -08:00
dependabot[bot]
a8aca0ec12 chore(deps): bump clap from 4.5.21 to 4.5.23 (#1565)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.21 to 4.5.23.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.23</h2>
<h2>[4.5.23] - 2024-12-05</h2>
<h3>Fixes</h3>
<ul>
<li><em>(parser)</em> When check <code>allow_negative_numbers</code>,
allow <code>E</code> again</li>
</ul>
<h2>v4.5.22</h2>
<h2>[4.5.22] - 2024-12-03</h2>
<h3>Fixes</h3>
<ul>
<li><em>(assert)</em> Catch bugs with arguments requiring themself</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.23] - 2024-12-05</h2>
<h3>Fixes</h3>
<ul>
<li><em>(parser)</em> When check <code>allow_negative_numbers</code>,
allow <code>E</code> again</li>
</ul>
<h2>[4.5.22] - 2024-12-03</h2>
<h3>Fixes</h3>
<ul>
<li><em>(assert)</em> Catch bugs with arguments requiring themself</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7916028a90"><code>7916028</code></a>
chore: Release</li>
<li><a
href="804498d3b1"><code>804498d</code></a>
docs: Update changelog</li>
<li><a
href="f9721f1435"><code>f9721f1</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5695">#5695</a>
from epage/value</li>
<li><a
href="b04bf72436"><code>b04bf72</code></a>
fix(complete)!: Be consistent in value language</li>
<li><a
href="0e28259e55"><code>0e28259</code></a>
chore: Release</li>
<li><a
href="e55c986309"><code>e55c986</code></a>
docs: Update changelog</li>
<li><a
href="c7157dfe1d"><code>c7157df</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5692">#5692</a>
from epage/self</li>
<li><a
href="84252b7123"><code>84252b7</code></a>
fix(complete): Allow completing '.'</li>
<li><a
href="eded64a13b"><code>eded64a</code></a>
test(complete): Verify PathCompleter::dir</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.21...clap_complete-v4.5.23">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.21&new-version=4.5.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 15:24:05 -08:00
Orhun Parmaksız
ed5dd73084 docs(widgets): add example for tabs (#1559)
related #1512 

Also removes the tabs example from ratatui crate since it overlaps with
this new example in terms of functionality and it was not following the
general theme of other examples.
2024-12-09 15:22:03 -08:00
Josh McKinney
b5f7e44183 chore(examples): move async example to apps (#1503)
Move async example to examples/apps/async as full project.
Simplify a little by removing the need for the github api token.

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-12-09 18:30:37 +03:00
Orhun Parmaksız
fab532171d docs(widgets): add example for scrollbar (#1545)
Related to: #1512
2024-12-08 02:28:18 -08:00
Orhun Parmaksız
898aef6e2f docs(widgets): add example for list (#1542)
Related to: #1512
2024-12-08 02:27:19 -08:00
EdJoPaTo
f57b696fdc fix(span): dont render control characters (#1312) 2024-12-08 02:10:58 -08:00
Orhun Parmaksız
452366aa9e docs(widgets): add example for sparkline (#1556)
related #1512

Also removes the sparkline example from ratatui crate since this example
is a simplified and easier to understand version of that
2024-12-07 18:35:45 +03:00
Orhun Parmaksız
ff729b7607 feat(scrollbar): support retrieving the current position of state (#1552)
As of now it is possible to change the position of the Scrollbar but not
possible to retrieve the position for further use. e.g.

```rust
let mut state = ScrollbarState::default();
state.next();
```

This commit adds a new method "`current_position`" (since `position` is
already taken by the fluent setter) for that purpose:

```rust
let index = state.get_position(); // yay
```

See #1545 for the concrete usage of this.
2024-12-07 18:23:22 +03:00
Orhun Parmaksız
6ddde0e8a8 docs(widgets): add example for table (#1557)
related #1512
2024-12-07 18:21:01 +03:00
Orhun Parmaksız
93ad6b828c docs(widgets): update values in chart example (#1558)
better stonks
2024-12-07 18:20:49 +03:00
Josh McKinney
e411d9ec3e docs: add input form example (#1551)
Demonstrates how to manage the cursor and input focus with a simple
form. Uses an enum to track the current input field and passes the
input events to the active field.

This is similar to the json tutorial on the website, but a bit simpler
2024-12-05 14:12:40 -08:00
Josh McKinney
a0979d6871 chore(build): remove cargo lint (#1549)
Duplicate crate lint is too noisy and sensitive to upstream changes
2024-12-05 21:35:06 +03:00
Josh McKinney
ed071f3723 docs: add mouse-drawing example (#1546)
Demonstrates how to handle mouse events
2024-12-04 13:34:12 -08:00
Josh McKinney
9275d3421c feat(layout): add Offset::new() constructor (#1547) 2024-12-04 12:57:38 -08:00
Orhun Parmaksız
15f442a71e docs(widgets): add example for paragraph (#1544)
related #1512 

Also removes the paragraph example from `ratatui` since these examples
are more or less the same.
2024-12-04 21:16:04 +03:00
Martin Sivák
18e70d3d51 fix(crossterm): terminal should keep Bold when removing Dim (#1541)
The Dim removal should behave the same as the logic for Bold removal
that sends NormalIntensity sequence and then restores Dim when needed.

Signed-off-by: Martin Sivak <mars@montik.net>
2024-12-03 13:21:59 -08:00
Orhun Parmaksız
17bba14540 docs(widgets): move the logo example to widgets (#1543)
related #1512 

Also updates the code to make it consistent with the other examples
2024-12-03 22:30:35 +03:00
Orhun Parmaksız
ce4856a65f feat(widgets): add the missing constructor to canvas types (#1538)
Allows constructing `Rectangle`, `Points` and `Circle` using the `new`
method instead of initializing with the public fields directly.
2024-12-03 12:04:53 +03:00
Orhun Parmaksız
f2451e7f1e docs(widgets): add example for gauge (#1539)
related #1512
2024-12-03 12:04:29 +03:00
raylu
7c8573f575 refactor: rearrange selection_spacing code (#1540) 2024-12-03 00:11:47 -08:00
Orhun Parmaksız
4f0a8b21af docs(widgets): add example for canvas (#1533)
related #1512
2024-12-02 17:21:53 +03:00
Orhun Parmaksız
91147c4d75 docs(widgets): add example for chart (#1536)
stonks
2024-12-01 20:34:57 +03:00
Orhun Parmaksız
6dd25a3111 docs(widgets): add example for calendar (#1532)
related #1512
2024-12-01 14:12:06 +03:00
Josh McKinney
35eba76b4d chore(example): move demo2 to top level folder (#1524) 2024-12-01 13:46:26 +03:00
Josh McKinney
357ae7e251 chore: move terminal types to ratatui-core (#1530)
- Move Terminal, TerminalOptions, ViewPort, CompletedFrame, Frame to
  ratatui-core crate
- Move render_widget_ref() and render_stateful_widget_ref() to extension
  trait (FrameExt) due as the Ref types are unstable and kept in the
  main lib instead of -core
- Fix rustdoc errors / feature config issues

BREAKING CHANGE: to call `Frame::render_widget_ref()` or
`Frame::render_stateful_widget_ref()` you now need to import the
FrameExt trait from `ratatui::widgets` and enable the
`unstable-widget-ref` feature.

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-11-30 17:11:17 -08:00
Raffaele Cataldo
3b13240728 fix(scrollbar): check for area.is_empty() before rendering (#1529)
This adds the `area.is_empty()` back into the scrollbar render method.
Without it, the widget panics if the height is 0.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-11-30 16:36:49 -08:00
Orhun Parmaksız
d201b8e5dd chore(xtask): check lints for only library targets (#1531)
Makes it possible to filter workspace packages by their targets.
(e.g. when we want to retrieve all the binary targets / examples, etc.)
2024-11-30 15:41:27 -08:00
Josh McKinney
21e62d84c2 chore: Move the demo example to main folder (#1523)
Add a top level examples folder for more app-ish examples
Move the demo example into the top level folder.

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-11-30 03:14:19 -08:00
Josh McKinney
d3f01ebf6e chore(lint): ensure lint config is correct (#1528)
- Move lints to workspace manifest
- Add lint config to backend crates
- Fix one small lint error
2024-11-30 11:13:50 +03:00
Josh McKinney
2892bddce6 fix: rust 1.83 clippy lints (#1527)
https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
2024-11-29 10:49:12 +03:00
Josh McKinney
fbf6050c86 chore: prepare alpha modularization release (#1525)
This is the first modularization -alpha release. It captures the changes
necessary to manual publish. And ensures all the crates are properly
setup and to set a baseline for comparison in future release checks etc.

This does not update / check the git-cliff setup / changelog

Part of: #1388
2024-11-28 16:47:43 -08:00
Josh McKinney
16ba867c58 chore: use modularized ratatui crates (#75) 2024-11-27 14:54:11 -08:00
Orhun Parmaksız
2b7ec5cb7f chore(widgets): enable calendar widget as default (#1521)
We now expect that you disable the default features if you want less
dependencies
2024-11-27 11:06:09 +03:00
Orhun Parmaksız
d291042e69 docs(block): revise the block example (#1520)
- Moves the block example from `ratatui` to `ratatui-widgets`
- Simplifies the example (bordered, styled, custom borders)

see #1512
2024-11-26 22:38:40 +03:00
dependabot[bot]
5c1c97d5a2 chore(deps): bump cargo_metadata from 0.18.1 to 0.19.0 (#1517)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-11-25 19:52:03 -08:00
dependabot[bot]
f51d1ccc07 chore(deps): bump clap-verbosity-flag from 2.2.3 to 3.0.0 (#1516)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-11-25 19:51:09 -08:00
dependabot[bot]
d137456ca1 chore(deps): bump octocrab from 0.42.0 to 0.42.1 (#1515)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-11-25 19:50:46 -08:00
dependabot[bot]
881fe3eff1 chore(deps): bump rustls from 0.23.15 to 0.23.18 (#1518)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 19:23:03 -08:00
Josh McKinney
99ac005b06 docs(widgets): Add simple barchart example (#1511) 2024-11-24 01:32:54 -08:00
Josh McKinney
f132fa1715 refactor(table): small readability improvements (#1510) 2024-11-24 01:32:44 -08:00
Emirhan TALA
369b18eef2 feat(barchart): reduce barchart creation verbosity (#1453)
Adds constructor methods for BarChart, BarGroup, and Bar
2024-11-24 00:06:16 -08:00
Eric Lunderberg
2ce958e38c fix(table): Allow display of additional table row, if row height > 1 (#1452) 2024-11-23 18:40:22 -08:00
Orhun Parmaksız
217c57cd60 refactor: modularize backends (#1508)
Backend code is now moved to `ratatui-crossterm`, `ratatui-termion` and
`ratatui-termwiz`. This should be backwards compatible with existing code.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-11-23 15:23:40 -08:00
Orhun Parmaksız
3ae6bf1d6f docs(contributing): use cargo-xtask for intructions (#1509)
- Updates `CONTRIBUTING.md` about the usage of `xtask`
- Removes `Makefile.toml`
2024-11-23 10:53:40 -08:00
Josh McKinney
ec30390446 fix(canvas): round coordinates to nearest grid cell (#1507)
Previously the canvas coordinates were rounded towards zero, which
causes the rendering to be off by one pixel in some cases. It also meant
that pixels at the extreme edges of the canvas can only be drawn if the
point was exactly on the edge of the canvas. This commit rounds the
coordinates to the nearest integer instead. This may change the output
for some apps using Canvas / Charts.
2024-11-22 14:00:55 -08:00
Emirhan TALA
56d5e05762 feat(bar)!: update label and text_value to accept Into<> (#1471)
BREAKING CHANGE: label and text_value now accept `Into<>` types, which
breaks type inference.

```diff
- Bar::default().label("foo".into());
+ Bar::default().label("foo");
```

```diff
- Bar::default().text_value("bar".into());
+ Bar::default().text_value("bar");
```
2024-11-21 19:12:24 -08:00
Emirhan TALA
b76ad3b02e feat(bar): impl Styled for Bar (#1476)
Related: https://github.com/ratatui/ratatui/issues/683
2024-11-21 17:30:08 -08:00
Ivan Smoliakov
afd1ce179b fix(canvas): Lines that start outside the visible grid are now drawn (#1501)
Previously lines with points that were outside the canvas bounds were
not drawn at all. Now they are clipped to the bounds of the canvas so
that the portion of the line within the canvas is draw.

To facilitate this, a new `Painter::bounds()` method which returns the
bounds of the canvas is added.

Fixes: https://github.com/ratatui/ratatui/issues/1489
2024-11-21 16:16:11 -08:00
Ho Kim
8f282473b2 docs(readme): correct examples links (#1484) 2024-11-20 06:59:01 -08:00
Josh McKinney
36e2d1bda1 fix: add feature(doc_cfg) when generating docs (#1506) 2024-11-20 04:17:13 -08:00
dependabot[bot]
9d5aba69e9 chore(deps): bump serde from 1.0.214 to 1.0.215 (#1495)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.214 to
1.0.215.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.215</h2>
<ul>
<li>Produce warning when multiple fields or variants have the same
deserialization name (<a
href="https://redirect.github.com/serde-rs/serde/issues/2855">#2855</a>,
<a
href="https://redirect.github.com/serde-rs/serde/issues/2856">#2856</a>,
<a
href="https://redirect.github.com/serde-rs/serde/issues/2857">#2857</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8939af48fe"><code>8939af4</code></a>
Release 1.0.215</li>
<li><a
href="fa5d58cd00"><code>fa5d58c</code></a>
Use ui test syntax that does not interfere with rustfmt</li>
<li><a
href="1a3cf4b3c1"><code>1a3cf4b</code></a>
Update PR 2562 ui tests</li>
<li><a
href="7d96352e96"><code>7d96352</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2857">#2857</a>
from dtolnay/collide</li>
<li><a
href="111ecc5d8c"><code>111ecc5</code></a>
Update ui tests for warning on colliding aliases</li>
<li><a
href="edd6fe954b"><code>edd6fe9</code></a>
Revert &quot;Add checks for conflicts for aliases&quot;</li>
<li><a
href="a20e9249c5"><code>a20e924</code></a>
Revert &quot;pacify clippy&quot;</li>
<li><a
href="b1353a99cd"><code>b1353a9</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2856">#2856</a>
from dtolnay/dename</li>
<li><a
href="c59e876bb3"><code>c59e876</code></a>
Produce a separate warning for every colliding name</li>
<li><a
href="7f1e697c0d"><code>7f1e697</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2855">#2855</a>
from dtolnay/namespan</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/serde/compare/v1.0.214...v1.0.215">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.214&new-version=1.0.215)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 20:56:43 -08:00
dependabot[bot]
1b0d6b473b chore(deps): bump clap from 4.5.20 to 4.5.21 (#1496)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.20 to 4.5.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.21</h2>
<h2>[4.5.21] - 2024-11-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(parser)</em> Ensure defaults are filled in on error with
<code>ignore_errors(true)</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.21] - 2024-11-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(parser)</em> Ensure defaults are filled in on error with
<code>ignore_errors(true)</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="03d722625a"><code>03d7226</code></a>
chore: Release</li>
<li><a
href="3df70fb2b6"><code>3df70fb</code></a>
docs: Update changelog</li>
<li><a
href="3266c36abf"><code>3266c36</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5691">#5691</a>
from epage/custom</li>
<li><a
href="951762db57"><code>951762d</code></a>
feat(complete): Allow any OsString-compatible type to be a
CompletionCandidate</li>
<li><a
href="bb6493e890"><code>bb6493e</code></a>
feat(complete): Offer - as a path option</li>
<li><a
href="27b348dbcb"><code>27b348d</code></a>
refactor(complete): Simplify ArgValueCandidates code</li>
<li><a
href="49b8108f8c"><code>49b8108</code></a>
feat(complete): Add PathCompleter</li>
<li><a
href="82a360aa54"><code>82a360a</code></a>
feat(complete): Add ArgValueCompleter</li>
<li><a
href="47aedc6906"><code>47aedc6</code></a>
fix(complete): Ensure paths are sorted</li>
<li><a
href="431e2bc931"><code>431e2bc</code></a>
test(complete): Ensure ArgValueCandidates get filtered</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.20...clap_complete-v4.5.21">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.20&new-version=4.5.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 20:56:02 -08:00
dependabot[bot]
c8339494a8 chore(deps): bump clap-verbosity-flag from 2.2.2 to 2.2.3 (#1494)
Bumps
[clap-verbosity-flag](https://github.com/clap-rs/clap-verbosity-flag)
from 2.2.2 to 2.2.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap-verbosity-flag/blob/master/CHANGELOG.md">clap-verbosity-flag's
changelog</a>.</em></p>
<blockquote>
<h2>[2.2.3] - 2024-11-16</h2>
<h3>Features</h3>
<ul>
<li>Add <code>DebugLevel</code> and <code>TraceLevel</code> for
exploratory programming</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="99c0859e7b"><code>99c0859</code></a>
chore: Release clap-verbosity-flag version 2.2.3</li>
<li><a
href="9966b2552c"><code>9966b25</code></a>
docs: Update changelog</li>
<li><a
href="cdd29017d5"><code>cdd2901</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/123">#123</a>
from joshka/jm/additional-log-levels</li>
<li><a
href="2192330889"><code>2192330</code></a>
docs: Add example for setting default log level</li>
<li><a
href="e628191254"><code>e628191</code></a>
chore: Remove unnecessary clippy allow directives</li>
<li><a
href="6e5fc6a6be"><code>6e5fc6a</code></a>
feat: Add additional log levels</li>
<li><a
href="a7e305e8b0"><code>a7e305e</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/120">#120</a>
from clap-rs/renovate/stable-1.x</li>
<li><a
href="3e3368c681"><code>3e3368c</code></a>
chore(deps): Update Rust crate clap to v4.5.20 (<a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/119">#119</a>)</li>
<li><a
href="f1c663cba5"><code>f1c663c</code></a>
chore(deps): Update dependency STABLE to v1.82.0</li>
<li><a
href="42bed96a45"><code>42bed96</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap-verbosity-flag/issues/118">#118</a>
from clap-rs/renovate/stable-1.x</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap-verbosity-flag/compare/v2.2.2...v2.2.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap-verbosity-flag&package-manager=cargo&previous-version=2.2.2&new-version=2.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 20:05:42 -08:00
dependabot[bot]
3ef1face9a chore(deps): bump octocrab from 0.41.2 to 0.42.0 (#1498)
Bumps [octocrab](https://github.com/XAMPPRocky/octocrab) from 0.41.2 to
0.42.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.42.0</h2>
<h3>Added</h3>
<ul>
<li>added ssh_signing_keys ops (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/725">#725</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Secrets and Code scanning alerts API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/730">#730</a>)</li>
<li>add support for custom executors (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/728">#728</a>)</li>
<li>Fixup route in api/issues/update (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/732">#732</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.41.2...v0.42.0">0.42.0</a>
- 2024-11-13</h2>
<h3>Added</h3>
<ul>
<li>added ssh_signing_keys ops (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/725">#725</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Secrets and Code scanning alerts API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/730">#730</a>)</li>
<li>add support for custom executors (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/728">#728</a>)</li>
<li>Fixup route in api/issues/update (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/732">#732</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9c39eaac75"><code>9c39eaa</code></a>
chore: release v0.42.0 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/733">#733</a>)</li>
<li><a
href="5f6b085a62"><code>5f6b085</code></a>
Secrets and Code scanning alerts API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/730">#730</a>)</li>
<li><a
href="6f30dc5cf1"><code>6f30dc5</code></a>
imp: add support for custom executors (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/728">#728</a>)</li>
<li><a
href="57681d9940"><code>57681d9</code></a>
Fixup route in api/issues/update (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/732">#732</a>)</li>
<li><a
href="3958f288a4"><code>3958f28</code></a>
feat: added ssh_signing_keys ops (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/725">#725</a>)</li>
<li><a
href="c043d063f0"><code>c043d06</code></a>
chore: release v0.41.2 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/721">#721</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.41.2...v0.42.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octocrab&package-manager=cargo&previous-version=0.41.2&new-version=0.42.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 20:00:48 -08:00
dependabot[bot]
f4cbab4101 chore(deps): bump codecov/codecov-action from 4 to 5 (#1499)
Bumps
[codecov/codecov-action](https://github.com/codecov/codecov-action) from
4 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/releases">codecov/codecov-action's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>v5 Release</h2>
<p><code>v5</code> of the Codecov GitHub Action will use the <a
href="https://github.com/codecov/wrapper">Codecov Wrapper</a> to
encapsulate the <a
href="https://github.com/codecov/codecov-cli">CLI</a>. This will help
ensure that the Action gets updates quicker.</p>
<h3>Migration Guide</h3>
<p>The <code>v5</code> release also coincides with the opt-out feature
for tokens for public repositories. In the <code>Global Upload
Token</code> section of the settings page of an organization in
codecov.io, you can set the ability for Codecov to receive a coverage
reports from any source. This will allow contributors or other members
of a repository to upload without needing access to the Codecov token.
For more details see <a
href="https://docs.codecov.com/docs/codecov-tokens#uploading-without-a-token">how
to upload without a token</a>.</p>
<blockquote>
<p>[!WARNING]<br />
<strong>The following arguments have been changed</strong></p>
<ul>
<li><code>file</code> (this has been deprecated in favor of
<code>files</code>)</li>
<li><code>plugin</code> (this has been deprecated in favor of
<code>plugins</code>)</li>
</ul>
</blockquote>
<p>The following arguments have been added:</p>
<ul>
<li><code>binary</code></li>
<li><code>gcov_args</code></li>
<li><code>gcov_executable</code></li>
<li><code>gcov_ignore</code></li>
<li><code>gcov_include</code></li>
<li><code>report_type</code></li>
<li><code>skip_validation</code></li>
<li><code>swift_project</code></li>
</ul>
<p>You can see their usage in the <code>action.yml</code> <a
href="https://github.com/codecov/codecov-action/blob/main/action.yml">file</a>.</p>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump to eslint9+ and remove eslint-config-google by <a
href="https://github.com/thomasrockhu-codecov"><code>@​thomasrockhu-codecov</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1591">codecov/codecov-action#1591</a></li>
<li>build(deps-dev): bump <code>@​octokit/webhooks-types</code> from
7.5.1 to 7.6.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1595">codecov/codecov-action#1595</a></li>
<li>build(deps-dev): bump typescript from 5.6.2 to 5.6.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1604">codecov/codecov-action#1604</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.8.0 to 8.8.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1601">codecov/codecov-action#1601</a></li>
<li>build(deps): bump <code>@​actions/core</code> from 1.11.0 to 1.11.1
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1597">codecov/codecov-action#1597</a></li>
<li>build(deps): bump github/codeql-action from 3.26.9 to 3.26.11 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1596">codecov/codecov-action#1596</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.8.0 to 8.8.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1600">codecov/codecov-action#1600</a></li>
<li>build(deps-dev): bump eslint from 9.11.1 to 9.12.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1598">codecov/codecov-action#1598</a></li>
<li>build(deps): bump github/codeql-action from 3.26.11 to 3.26.12 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1609">codecov/codecov-action#1609</a></li>
<li>build(deps): bump actions/checkout from 4.2.0 to 4.2.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1608">codecov/codecov-action#1608</a></li>
<li>build(deps): bump actions/upload-artifact from 4.4.0 to 4.4.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1607">codecov/codecov-action#1607</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.8.1 to 8.9.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1612">codecov/codecov-action#1612</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.8.1 to 8.9.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1611">codecov/codecov-action#1611</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.9.0 to 8.10.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1615">codecov/codecov-action#1615</a></li>
<li>build(deps-dev): bump eslint from 9.12.0 to 9.13.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1618">codecov/codecov-action#1618</a></li>
<li>build(deps): bump github/codeql-action from 3.26.12 to 3.26.13 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1617">codecov/codecov-action#1617</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.9.0 to 8.10.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1614">codecov/codecov-action#1614</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.10.0 to 8.11.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1620">codecov/codecov-action#1620</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/parser</code> from
8.10.0 to 8.11.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1619">codecov/codecov-action#1619</a></li>
<li>build(deps-dev): bump <code>@​types/jest</code> from 29.5.13 to
29.5.14 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1622">codecov/codecov-action#1622</a></li>
<li>build(deps): bump actions/checkout from 4.2.1 to 4.2.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1625">codecov/codecov-action#1625</a></li>
<li>build(deps): bump github/codeql-action from 3.26.13 to 3.27.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1624">codecov/codecov-action#1624</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.11.0 to 8.12.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1626">codecov/codecov-action#1626</a></li>
<li>build(deps-dev): bump <code>@​typescript-eslint/eslint-plugin</code>
from 8.12.1 to 8.12.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/codecov/codecov-action/pull/1629">codecov/codecov-action#1629</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md">codecov/codecov-action's
changelog</a>.</em></p>
<blockquote>
<h2>4.0.0-beta.2</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/1085">#1085</a>
not adding -n if empty to do-upload command</li>
</ul>
<h2>4.0.0-beta.1</h2>
<p><code>v4</code> represents a move from the <a
href="https://github.com/codecov/uploader">universal uploader</a> to the
<a href="https://github.com/codecov/codecov-cli">Codecov CLI</a>.
Although this will unlock new features for our users, the CLI is not yet
at feature parity with the universal uploader.</p>
<h3>Breaking Changes</h3>
<ul>
<li>No current support for <code>aarch64</code> and <code>alpine</code>
architectures.</li>
<li>Tokenless uploading is unsuported</li>
<li>Various arguments to the Action have been removed</li>
</ul>
<h2>3.1.4</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/967">#967</a>
Fix typo in README.md</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/971">#971</a>
fix: add back in working dir</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/969">#969</a>
fix: CLI option names for uploader</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/970">#970</a>
build(deps-dev): bump <code>@​types/node</code> from 18.15.12 to
18.16.3</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/979">#979</a>
build(deps-dev): bump <code>@​types/node</code> from 20.1.0 to
20.1.2</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/981">#981</a>
build(deps-dev): bump <code>@​types/node</code> from 20.1.2 to
20.1.4</li>
</ul>
<h2>3.1.3</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/960">#960</a>
fix: allow for aarch64 build</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/957">#957</a>
build(deps-dev): bump jest-junit from 15.0.0 to 16.0.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/958">#958</a>
build(deps): bump openpgp from 5.7.0 to 5.8.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/959">#959</a>
build(deps-dev): bump <code>@​types/node</code> from 18.15.10 to
18.15.12</li>
</ul>
<h2>3.1.2</h2>
<h3>Fixes</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/718">#718</a>
Update README.md</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/851">#851</a>
Remove unsupported path_to_write_report argument</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/898">#898</a>
codeql-analysis.yml</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/901">#901</a>
Update README to contain correct information - inputs and negate
feature</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/955">#955</a>
fix: add in all the extra arguments for uploader</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/819">#819</a>
build(deps): bump openpgp from 5.4.0 to 5.5.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/835">#835</a>
build(deps): bump node-fetch from 3.2.4 to 3.2.10</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/840">#840</a>
build(deps): bump ossf/scorecard-action from 1.1.1 to 2.0.4</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/841">#841</a>
build(deps): bump <code>@​actions/core</code> from 1.9.1 to 1.10.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/843">#843</a>
build(deps): bump <code>@​actions/github</code> from 5.0.3 to 5.1.1</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/869">#869</a>
build(deps): bump node-fetch from 3.2.10 to 3.3.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/872">#872</a>
build(deps-dev): bump jest-junit from 13.2.0 to 15.0.0</li>
<li><a
href="https://redirect.github.com/codecov/codecov-action/issues/879">#879</a>
build(deps): bump decode-uri-component from 0.2.0 to 0.2.2</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5c47607acb"><code>5c47607</code></a>
fix: override commit and pr values for PR cases (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1657">#1657</a>)</li>
<li><a
href="3b1354a6c4"><code>3b1354a</code></a>
chore(release): 5.0.1 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1656">#1656</a>)</li>
<li><a
href="2e2a9c6d58"><code>2e2a9c6</code></a>
fix: update tokenless branch logic (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1650">#1650</a>)</li>
<li><a
href="cfc521b7a1"><code>cfc521b</code></a>
Update README.md</li>
<li><a
href="06425412c8"><code>0642541</code></a>
fix: use marketplace v5 badge (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1646">#1646</a>)</li>
<li><a
href="968872560f"><code>9688725</code></a>
Update README.md</li>
<li><a
href="2112eaec1b"><code>2112eae</code></a>
chore(deps): bump wrapper to 0.0.23 (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1644">#1644</a>)</li>
<li><a
href="193421c5b3"><code>193421c</code></a>
fixL use the correct source (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1642">#1642</a>)</li>
<li><a
href="6018df70b0"><code>6018df7</code></a>
fix: update container builds (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1640">#1640</a>)</li>
<li><a
href="eff1a643d6"><code>eff1a64</code></a>
fix: add missing vars (<a
href="https://redirect.github.com/codecov/codecov-action/issues/1638">#1638</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/codecov/codecov-action/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=codecov/codecov-action&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 19:52:52 -08:00
dependabot[bot]
ae6a8501ee chore(deps): bump DavidAnson/markdownlint-cli2-action from 17 to 18 (#1500)
Bumps
[DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action)
from 17 to 18.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/davidanson/markdownlint-cli2-action/releases">DavidAnson/markdownlint-cli2-action's
releases</a>.</em></p>
<blockquote>
<h2>Update markdownlint version (markdownlint-cli2 v0.15.0, markdownlint
v0.36.1).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.14.0, markdownlint
v0.35.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.13.0, markdownlint
v0.34.0).</h2>
<p>No release notes provided.</p>
<p>Update markdownlint version (markdownlint-cli2 v0.12.1, markdownlint
v0.33.0).</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.11.0, markdownlint
v0.32.1), remove deprecated &quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.10.0, markdownlint
v0.31.1).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.9.2, markdownlint
v0.30.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.8.1, markdownlint
v0.29.0), add &quot;config&quot; and &quot;fix&quot; inputs, deprecate
&quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.1, markdownlint
v0.28.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.0, markdownlint
v0.28.1), include link to rule information in title of annotations
(clickable in GitHub).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.6.0, markdownlint
v0.27.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.5.1, markdownlint
v0.26.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.4.0, markdownlint
v0.25.1)</h2>
<p>No release notes provided.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="eb5ca3ab41"><code>eb5ca3a</code></a>
Update to version 18.0.0.</li>
<li><a
href="bd47e95879"><code>bd47e95</code></a>
Freshen generated index.js file.</li>
<li><a
href="ad0fecff0d"><code>ad0fecf</code></a>
Bump markdownlint-cli2 from 0.14.0 to 0.15.0</li>
<li><a
href="079995c6c3"><code>079995c</code></a>
Bump eslint-plugin-n from 17.13.0 to 17.13.1</li>
<li><a
href="4163a2f0f6"><code>4163a2f</code></a>
Bump eslint-plugin-n from 17.12.0 to 17.13.0</li>
<li><a
href="8b67109ec6"><code>8b67109</code></a>
Bump eslint from 9.13.0 to 9.14.0</li>
<li><a
href="f6d787a2fc"><code>f6d787a</code></a>
Bump <code>@​eslint/js</code> from 9.13.0 to 9.14.0</li>
<li><a
href="c05e13d409"><code>c05e13d</code></a>
Bump <code>@​stylistic/eslint-plugin</code> from 2.10.0 to 2.10.1</li>
<li><a
href="6d12e16c76"><code>6d12e16</code></a>
Bump eslint-plugin-n from 17.11.1 to 17.12.0</li>
<li><a
href="0f558ed3a6"><code>0f558ed</code></a>
Bump <code>@​stylistic/eslint-plugin</code> from 2.9.0 to 2.10.0</li>
<li>Additional commits viewable in <a
href="https://github.com/davidanson/markdownlint-cli2-action/compare/v17...v18">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=DavidAnson/markdownlint-cli2-action&package-manager=github_actions&previous-version=17&new-version=18)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 19:52:23 -08:00
dependabot[bot]
1bb41e7165 chore(deps): bump instability from 0.3.2 to 0.3.3 (#1497)
Bumps [instability](https://github.com/ratatui-org/instability) from
0.3.2 to 0.3.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/instability/releases">instability's
releases</a>.</em></p>
<blockquote>
<h2>instability-v0.3.3</h2>
<h3>Added</h3>
<ul>
<li>add stable macro (<a
href="https://redirect.github.com/ratatui/instability/pull/14">#14</a>)</li>
<li>use doc(cfg)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>tests (<a
href="https://redirect.github.com/ratatui/instability/pull/13">#13</a>)</li>
<li>change master to main in lib.rs</li>
</ul>
<h3>Other</h3>
<ul>
<li>bump msrv to 1.63</li>
<li>use proc_macro2 and add tests</li>
<li>use darling instead of manual parsing for better error messages on
attributes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/instability/blob/main/CHANGELOG.md">instability's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/instability/compare/instability-v0.3.2...instability-v0.3.3">0.3.3</a>
- 2024-11-12</h2>
<h3>Added</h3>
<ul>
<li>add stable macro (<a
href="https://redirect.github.com/ratatui/instability/pull/14">#14</a>)</li>
<li>use doc(cfg)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>tests (<a
href="https://redirect.github.com/ratatui/instability/pull/13">#13</a>)</li>
<li>change master to main in lib.rs</li>
</ul>
<h3>Other</h3>
<ul>
<li>bump msrv to 1.63</li>
<li>use proc_macro2 and add tests</li>
<li>use darling instead of manual parsing for better error messages on
attributes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e365305716"><code>e365305</code></a>
chore: release v0.3.3 (<a
href="https://redirect.github.com/ratatui-org/instability/issues/9">#9</a>)</li>
<li><a
href="14f2993a8f"><code>14f2993</code></a>
feat: add stable macro (<a
href="https://redirect.github.com/ratatui-org/instability/issues/14">#14</a>)</li>
<li><a
href="f833f10e01"><code>f833f10</code></a>
fix: tests (<a
href="https://redirect.github.com/ratatui-org/instability/issues/13">#13</a>)</li>
<li><a
href="261fdfd252"><code>261fdfd</code></a>
build: bump msrv to 1.63</li>
<li><a
href="402d37064c"><code>402d370</code></a>
feat: use doc(cfg)</li>
<li><a
href="731685a257"><code>731685a</code></a>
refactor: use proc_macro2 and add tests</li>
<li><a
href="82d15c721c"><code>82d15c7</code></a>
chore: use darling instead of manual parsing for better error messages
on att...</li>
<li><a
href="47e02c2009"><code>47e02c2</code></a>
fix: change master to main in lib.rs</li>
<li>See full diff in <a
href="https://github.com/ratatui-org/instability/compare/instability-v0.3.2...instability-v0.3.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=instability&package-manager=cargo&previous-version=0.3.2&new-version=0.3.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-19 19:31:38 -08:00
thscharler
4d7704fba5 fix: Make StatefulWidget and Ref work with unsized State (#1505)
StatefulWidget::State and StatefulWidgetRef::State are now ?Sized.

This allows implementations of the traits to use unsized types for the
State associated type. This is turn is useful when doing things like
boxing different stateful widget types with State which implements
`Any`, are slices or any other dynamically sized type.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-11-19 17:56:26 -08:00
Josh McKinney
e4e95bcecf chore: remove --color always flags from bacon.toml (#1502)
No longer necessary as of bacon 3.3
2024-11-19 21:21:12 +03:00
Josh McKinney
a41c97b413 chore: move unstable widget refs to ratatui (#1491)
These are less stable than the non-ref traits as we have not yet
committed to the exact API. This change moves them to ratatui from
ratatui-core.

To facilitate this:
- implementations of WidgetRef for all internal widgets are removed and
  replaced with implementations of Widget for references to those
  widgets.
- Widget is now implemented for Option<W> where W: Widget, allowing for
  rendering of optional widgets.
- The blanket implementation of Widget for WidgetRef is reversed, to be
  a blanket implementation of WidgetRef for all &W where W: Widget.

BREAKING CHANGE: implementations of WidgetRef no longer have a blanket
implementation of Widget, so Widgets should generally implement the
Widget trait on a reference to the widget rather than implementing
WidgetRef directly. This has the advantage of not requiring unstable
features to be enabled.

Part of: https://github.com/ratatui/ratatui/issues/1388

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-11-18 14:19:21 -08:00
Orhun Parmaksız
46902f5587 docs: improve docs for workspace crates (#1490)
Overall makes improvements in the documentation of the workspace crates and checking them.
2024-11-18 02:03:44 +03:00
Josh McKinney
e7085e3a3e chore: move widgets into ratatui-widgets crate (#1474)
All the widgets now live in their own ratatui-widgets crate, but are re-exported in the main ratatui crate.
This makes it easier to use portions of the ratatui library and is part of the effort to modularize

Part of: #1388

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-11-15 19:42:07 -08:00
Nils Martel
9f90f7495f docs(readme): fix broken link (#1485) 2024-11-13 12:52:40 +03:00
Dheepak Krishnamurthy
260af68a34 docs(readme): include iocraft as an alternative (#1483) 2024-11-12 18:41:43 +03:00
Josh McKinney
e461b724a6 refactor: move {Stateful,}Widget{,Ref} types into individual files (#1479)
This is a preparatory refactoring for modularization. No user visible
changes.
2024-11-12 15:34:48 +03:00
dependabot[bot]
02c8c9373e chore(deps): bump unicode-truncate from 1.1.0 to 2.0.0 (#1481)
Bumps [unicode-truncate](https://github.com/Aetf/unicode-truncate) from
1.1.0 to 2.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Aetf/unicode-truncate/releases">unicode-truncate's
releases</a>.</em></p>
<blockquote>
<h2>v2.0.0</h2>
<h3>Fixed</h3>
<ul>
<li><em>(deps)</em> update rust crate unicode-width to 0.2</li>
</ul>
<h3>Other</h3>
<ul>
<li>make release-plz use github app token</li>
<li>[<strong>breaking</strong>] bump MSRV to 1.66</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Aetf/unicode-truncate/blob/master/CHANGELOG.md">unicode-truncate's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/Aetf/unicode-truncate/compare/v1.1.0...v2.0.0">2.0.0</a>
- 2024-11-10</h2>
<h3>Fixed</h3>
<ul>
<li><em>(deps)</em> update rust crate unicode-width to 0.2</li>
</ul>
<h3>Other</h3>
<ul>
<li>make release-plz use github app token</li>
<li>[<strong>breaking</strong>] bump MSRV to 1.66</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="95b4d26103"><code>95b4d26</code></a>
chore: release v2.0.0</li>
<li><a
href="4c0b472226"><code>4c0b472</code></a>
ci: make release-plz use github app token</li>
<li><a
href="2812162513"><code>2812162</code></a>
build!: bump MSRV to 1.66</li>
<li><a
href="8984d1529a"><code>8984d15</code></a>
fix(deps): update rust crate unicode-width to 0.2</li>
<li><a
href="abd6d916b9"><code>abd6d91</code></a>
fix(deps): update rust crate unicode-segmentation to v1.12.0</li>
<li>See full diff in <a
href="https://github.com/Aetf/unicode-truncate/compare/v1.1.0...v2.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=unicode-truncate&package-manager=cargo&previous-version=1.1.0&new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 03:42:47 -08:00
dependabot[bot]
f40fa787d1 chore(deps): bump tokio from 1.40.0 to 1.41.1 (#1482)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.40.0 to 1.41.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.41.1</h2>
<h1>1.41.1 (Nov 7th, 2024)</h1>
<h3>Fixed</h3>
<ul>
<li>metrics: fix bug with wrong number of buckets for the histogram (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6957">#6957</a>)</li>
<li>net: display <code>net</code> requirement for
<code>net::UdpSocket</code> in docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6938">#6938</a>)</li>
<li>net: fix typo in <code>TcpStream</code> internal comment (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6944">#6944</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/6957">#6957</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6957">tokio-rs/tokio#6957</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6938">#6938</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6938">tokio-rs/tokio#6938</a>
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6944">#6944</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/6944">tokio-rs/tokio#6944</a></p>
<h2>Tokio v1.41.0</h2>
<h1>1.41.0 (Oct 22th, 2024)</h1>
<h3>Added</h3>
<ul>
<li>metrics: stabilize <code>global_queue_depth</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6854">#6854</a>,
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6918">#6918</a>)</li>
<li>net: add conversions for unix <code>SocketAddr</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6868">#6868</a>)</li>
<li>sync: add <code>watch::Sender::sender_count</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6836">#6836</a>)</li>
<li>sync: add <code>mpsc::Receiver::blocking_recv_many</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6867">#6867</a>)</li>
<li>task: stabilize <code>Id</code> apis (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6793">#6793</a>,
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6891">#6891</a>)</li>
</ul>
<h3>Added (unstable)</h3>
<ul>
<li>metrics: add H2 Histogram option to improve histogram granularity
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6897">#6897</a>)</li>
<li>metrics: rename some histogram apis (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6924">#6924</a>)</li>
<li>runtime: add <code>LocalRuntime</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6808">#6808</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>runtime: box futures larger than 16k on release mode (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6826">#6826</a>)</li>
<li>sync: add <code>#[must_use]</code> to <code>Notified</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6828">#6828</a>)</li>
<li>sync: make <code>watch</code> cooperative (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6846">#6846</a>)</li>
<li>sync: make <code>broadcast::Receiver</code> cooperative (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6870">#6870</a>)</li>
<li>task: add task size to tracing instrumentation (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6881">#6881</a>)</li>
<li>wasm: enable <code>cfg_fs</code> for <code>wasi</code> target (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6822">#6822</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>net: fix regression of abstract socket path in unix socket (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6838">#6838</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>io: recommend <code>OwnedFd</code> with <code>AsyncFd</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6821">#6821</a>)</li>
<li>io: document cancel safety of <code>AsyncFd</code> methods (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6890">#6890</a>)</li>
<li>macros: render more comprehensible documentation for
<code>join</code> and <code>try_join</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6814">#6814</a>,
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6841">#6841</a>)</li>
<li>net: fix swapped examples for <code>TcpSocket::set_nodelay</code>
and <code>TcpSocket::nodelay</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6840">#6840</a>)</li>
<li>sync: document runtime compatibility (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6833">#6833</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bb7ca7507b"><code>bb7ca75</code></a>
chore: prepare Tokio v1.41.1 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6959">#6959</a>)</li>
<li><a
href="4a34b77af5"><code>4a34b77</code></a>
metrics: fix bug with wrong number of buckets for the histogram (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6957">#6957</a>)</li>
<li><a
href="8897885425"><code>8897885</code></a>
docs: fix mismatched backticks in CONTRIBUTING.md (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6951">#6951</a>)</li>
<li><a
href="0dbdd196b6"><code>0dbdd19</code></a>
ci: update cargo-check-external-types to 0.1.13 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6949">#6949</a>)</li>
<li><a
href="94e55c092b"><code>94e55c0</code></a>
net: fix typo in <code>TcpStream</code> internal comment (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6944">#6944</a>)</li>
<li><a
href="4468f27c31"><code>4468f27</code></a>
metrics: fixed flaky <code>worker_steal_count</code> test (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6932">#6932</a>)</li>
<li><a
href="070a825999"><code>070a825</code></a>
metrics: removed race condition from global_queue_depth_multi_thread
test (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6">#6</a>...</li>
<li><a
href="946401c345"><code>946401c</code></a>
net: display <code>net</code> requirement for
<code>net::UdpSocket</code> in docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6938">#6938</a>)</li>
<li><a
href="0c01fd23b4"><code>0c01fd2</code></a>
ci: use patched version of cargo-check-external-types to fix CI failure
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6937">#6937</a>)</li>
<li><a
href="ebe241647e"><code>ebe2416</code></a>
ci: use cargo deny (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6931">#6931</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.40.0...tokio-1.41.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio&package-manager=cargo&previous-version=1.40.0&new-version=1.41.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 03:42:08 -08:00
Marco Ieni
7b875091e1 fix: typo (#1480) 2024-11-09 19:10:31 -08:00
Orhun Parmaksız
17316ec5d0 chore(github): enable sponsorship button (#1478) 2024-11-08 16:34:03 +03:00
Orhun Parmaksız
eaa403856e chore(ci): install pre-built binaries for cargo-rdme (#1477)
`install-action` uses `cargo-binstall` to install the pre-built binaries
of `cargo-rdme` (which was released in
https://github.com/orium/cargo-rdme/releases/tag/v1.4.7).

This will make the `check-readme` step faster in CI (now takes only 10
seconds).
2024-11-08 16:33:48 +03:00
Orhun Parmaksız
e5e2316451 chore(ci): add check for keeping README.md up-to-date (#1473) 2024-11-07 09:45:14 +03:00
Josh McKinney
98df774d7f chore(core): move core types to ratatui-core (#1460)
The buffer, layout, style, symbols, text, and the top level of widgets
modules are moved to ratatui-core. This is the first step in
modularizing the library so that the core types can be used in other
projects without the need for the backend / widgets types.

This helps reduce the need for updating other crates as often due to
semver changes outside of the core types.

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-11-06 09:10:49 +03:00
Everett Pompeii
0a47ebd94b chore(bencher): update bencher CLI usage (#1470) 2024-11-06 00:37:23 +03:00
Josh McKinney
abe2f27328 chore(backend): change From<T> impls to new backend specific IntoBackend and FromBackend traits (#1464)
Adds two traits `IntoCrossterm` and `FromCrossterm` for converting
between ratatui and crossterm types. This is necessary in order to avoid
the orphan rule when implementing `From` for crossterm types once the
crossterm types are moved to a separate crate.

Similarly Termwiz and Termwiz gain FromTermion, IntoTermion, FromTermwiz
and IntoTermwiz traits.

BREAKING CHANGE: The `From` and `Into` impls for backend types are now
replaced
with specific backend traits.

```diff
+ use ratatui::backend::{FromCrossterm, IntoCrossterm};

let crossterm_color = crossterm::style::Color::Black;
- let ratatui_color = crossterm_color.into();
- let ratatui_color = ratatui::style::Color::from(crossterm_color);
+ let ratatui_color = ratatui::style::Color::from_crossterm(crossterm_color);
- let crossterm_color = ratatui_color.into();
- let crossterm_color = crossterm::style::Color::from(ratatui_color);
+ let crossterm_color = ratatui_color.into_crossterm();

let crossterm_attribute = crossterm::style::types::Attribute::Bold;
- let ratatui_modifier = crossterm_attribute.into();
- let ratatui_modifier = ratatui::style::Modifier::from(crossterm_attribute);
+ let ratatui_modifier = ratatui::style::Modifier::from_crossterm(crossterm_attribute);
- let crossterm_attribute = ratatui_modifier.into();
- let crossterm_attribute = crossterm::style::types::Attribute::from(ratatui_modifier);
+ let crossterm_attribute = ratatui_modifier.into_crossterm();
```

Similar conversions for `ContentStyle` -> `Style` and `Attributes` ->
`Modifier` exist for Crossterm,
and all the Termion and Termwiz types.

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2024-11-03 13:43:24 -08:00
Orhun Parmaksız
fcde9cb9c3 docs(changelog): fix typo (#1463) 2024-11-02 04:28:37 -07:00
Josh McKinney
2ef3583eff chore(ci): replace cargo-make with a custom cargo-xtask (#1461)
This removes the need for cargo-make and replaces it with a custom xtask
binary. See <https://github.com/matklad/cargo-xtask> for info.

Rearranges the CI workflow to use the new xtask and simplify which
workflows that run.

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2024-11-02 10:03:44 +03:00
Thomas TACQUET
a6b579223f docs: fix example link in readme (#1462) 2024-11-01 18:08:07 -07:00
Josh McKinney
f1d0a18375 chore: move ratatui crate into workspace folder (#1459)
This is the first step towards modularization. Handling the move
as a separate step rather than combining it should make it easier
to rebase other PRs when necessary.

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-10-31 14:59:17 -07:00
Josh McKinney
55fb2d2e56 chore: update repo links to ratatui instead of ratatui-org (#1458) 2024-10-30 03:37:04 -07:00
dependabot[bot]
836634734f chore(deps): bump serde from 1.0.210 to 1.0.213 (#1455)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.210 to
1.0.213.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.213</h2>
<ul>
<li>Fix support for macro-generated <code>with</code> attributes inside
a newtype struct (<a
href="https://redirect.github.com/serde-rs/serde/issues/2847">#2847</a>)</li>
</ul>
<h2>v1.0.212</h2>
<ul>
<li>Fix hygiene of macro-generated local variable accesses in
serde(with) wrappers (<a
href="https://redirect.github.com/serde-rs/serde/issues/2845">#2845</a>)</li>
</ul>
<h2>v1.0.211</h2>
<ul>
<li>Improve error reporting about mismatched signature in
<code>with</code> and <code>default</code> attributes (<a
href="https://redirect.github.com/serde-rs/serde/issues/2558">#2558</a>,
thanks <a
href="https://github.com/Mingun"><code>@​Mingun</code></a>)</li>
<li>Show variant aliases in error message when variant deserialization
fails (<a
href="https://redirect.github.com/serde-rs/serde/issues/2566">#2566</a>,
thanks <a
href="https://github.com/Mingun"><code>@​Mingun</code></a>)</li>
<li>Improve binary size of untagged enum and internally tagged enum
deserialization by about 12% (<a
href="https://redirect.github.com/serde-rs/serde/issues/2821">#2821</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="58a8d22931"><code>58a8d22</code></a>
Release 1.0.213</li>
<li><a
href="ef0ed22593"><code>ef0ed22</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2847">#2847</a>
from dtolnay/newtypewith</li>
<li><a
href="79925ac394"><code>79925ac</code></a>
Ignore dead_code warning in regression test</li>
<li><a
href="b60e4092ec"><code>b60e409</code></a>
Hygiene for macro-generated newtype struct deserialization with 'with'
attr</li>
<li><a
href="fdc36e5c06"><code>fdc36e5</code></a>
Add regression test for issue 2846</li>
<li><a
href="49e11ce1ba"><code>49e11ce</code></a>
Ignore trivially_copy_pass_by_ref pedantic clippy lint in test</li>
<li><a
href="7ae1b5f8f3"><code>7ae1b5f</code></a>
Release 1.0.212</li>
<li><a
href="1ac054b34a"><code>1ac054b</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2845">#2845</a>
from dtolnay/withlocal</li>
<li><a
href="1e36ef551d"><code>1e36ef5</code></a>
Fix hygiene of macro-generated local variable accesses in serde(with)
wrappers</li>
<li><a
href="0058c7226e"><code>0058c72</code></a>
Add regression test for issue 2844</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/serde/compare/v1.0.210...v1.0.213">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.210&new-version=1.0.213)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-28 23:10:57 +03:00
github-actions[bot]
f804c90f96 chore: release v0.6.0 (#71)
## 🤖 New release
* `ratatui-macros`: 0.5.0 -> 0.6.0 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.5.1](https://github.com/ratatui/ratatui-macros/compare/v0.5.0...v0.5.1)
- 2024-10-21

### Other

- *(deps)* bump the cargo-dependencies group with 2 updates
([#73](https://github.com/ratatui/ratatui-macros/pull/73))
- *(deps)* bump ratatui from 0.28.0 to 0.28.1 in the cargo-dependencies
group ([#70](https://github.com/ratatui/ratatui-macros/pull/70))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-25 04:32:14 -07:00
Josh McKinney
860e48b0f0 fix(buffer): buffer::get_pos() now correctly handles index > u16::MAX (#1447)
Previously this function wrapped the index pass u16::MAX which caused
problems rendering.

Fixes: <https://github.com/ratatui/ratatui/issues/1441>
2024-10-22 03:46:27 -07:00
miro
04e1b32cd2 docs(layout): rename cassowary-rs references to cassowary (#1448)
closes #1423
2024-10-22 12:15:36 +03:00
dependabot[bot]
bbaa9a5432 build(deps): bump the cargo-dependencies group with 2 updates (#73)
Bumps the cargo-dependencies group with 2 updates:
[ratatui](https://github.com/ratatui/ratatui) and
[trybuild](https://github.com/dtolnay/trybuild).

Updates `ratatui` from 0.28.1 to 0.29.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/ratatui/releases">ratatui's
releases</a>.</em></p>
<blockquote>
<h2>v0.29.0</h2>
<!-- raw HTML omitted -->
<h2><a
href="https://github.com/ratatui/ratatui/releases/tag/v0.29.0">v0.29.0</a>
- 2024-10-21</h2>
<p><em>&quot;Food will come, Remy. Food always comes to those who love
to cook.&quot; – Gusteau</em></p>
<p>We are excited to announce the new version of <code>ratatui</code> -
a Rust library that's all about cooking up TUIs 👨‍🍳🐀</p>
<p> <strong>Release highlights</strong>: <a
href="https://ratatui.rs/highlights/v029/">https://ratatui.rs/highlights/v029/</a></p>
<p>⚠️ List of breaking changes can be found <a
href="https://github.com/ratatui/ratatui/blob/main/BREAKING-CHANGES.md">here</a>.</p>
<h3>Features</h3>
<ul>
<li>
<p><a
href="3a43274881">3a43274</a>
<em>(color)</em> Add hsluv support by <a
href="https://github.com/du-ob"><code>@​du-ob</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1333">#1333</a></p>
</li>
<li>
<p><a
href="4c4851ca3d">4c4851c</a>
<em>(example)</em> Add drawing feature to the canvas example by <a
href="https://github.com/orhun"><code>@​orhun</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1429">#1429</a></p>
<blockquote>
<p><img
src="https://github.com/user-attachments/assets/cfb2f9f8-773b-4599-9312-29625ff2ca60"
alt="rec_20241018T235208" /></p>
<p>fun fact: I had to do <a
href="https://www.youtube.com/watch?v=eS92stzBYXA">35
pushups</a> for this...</p>
<hr />
</blockquote>
</li>
<li>
<p><a
href="e5a7609588">e5a7609</a>
<em>(line)</em> Impl From<!-- raw HTML omitted --> for Line by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1373">#1373</a>
[<strong>breaking</strong>]</p>
<blockquote>
<p>BREAKING-CHANGES:<code>Line</code> now implements
<code>From&lt;Cow&lt;str&gt;</code></p>
<p>As this adds an extra conversion, ambiguous inferred values may no
longer
compile.</p>
<pre lang="rust"><code>// given:
struct Foo { ... }
impl From&lt;Foo&gt; for String { ... }
impl From&lt;Foo&gt; for Cow&lt;str&gt; { ... }
<p>let foo = Foo { ... };
let line = Line::from(foo); // now fails due to ambiguous type inference
// replace with
let line = Line::from(String::from(foo));
</code></pre></p>
<p>Fixes:<a
href="https://redirect.github.com/ratatui/ratatui/issues/1367">ratatui/ratatui#1367</a></p>
<hr />
</blockquote>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/ratatui/blob/main/CHANGELOG.md">ratatui's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/ratatui/releases/tag/v0.29.0">v0.29.0</a>
- 2024-10-21</h2>
<h3>Features</h3>
<ul>
<li>
<p><a
href="3a43274881">3a43274</a>
<em>(color)</em> Add hsluv support by <a
href="https://github.com/du-ob"><code>@​du-ob</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1333">#1333</a></p>
</li>
<li>
<p><a
href="4c4851ca3d">4c4851c</a>
<em>(example)</em> Add drawing feature to the canvas example by <a
href="https://github.com/orhun"><code>@​orhun</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1429">#1429</a></p>
<blockquote>
<p><img
src="https://github.com/user-attachments/assets/cfb2f9f8-773b-4599-9312-29625ff2ca60"
alt="rec_20241018T235208" /></p>
<p>fun fact: I had to do <a
href="https://www.youtube.com/watch?v=eS92stzBYXA">35
pushups</a> for this...</p>
<hr />
</blockquote>
</li>
<li>
<p><a
href="e5a7609588">e5a7609</a>
<em>(line)</em> Impl From<!-- raw HTML omitted --> for Line by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1373">#1373</a>
[<strong>breaking</strong>]</p>
<blockquote>
<p>BREAKING-CHANGES:<code>Line</code> now implements
<code>From&lt;Cow&lt;str&gt;</code></p>
<p>As this adds an extra conversion, ambiguous inferred values may no
longer
compile.</p>
<pre lang="rust"><code>// given:
struct Foo { ... }
impl From&lt;Foo&gt; for String { ... }
impl From&lt;Foo&gt; for Cow&lt;str&gt; { ... }
<p>let foo = Foo { ... };
let line = Line::from(foo); // now fails due to ambiguous type inference
// replace with
let line = Line::from(String::from(foo));
</code></pre></p>
<p>Fixes:<a
href="https://redirect.github.com/ratatui/ratatui/issues/1367">ratatui/ratatui#1367</a></p>
<hr />
</blockquote>
</li>
<li>
<p><a
href="2805dddf05">2805ddd</a>
<em>(logo)</em> Add a Ratatui logo widget by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1307">#1307</a></p>
<blockquote>
<p>This is a simple logo widget that can be used to render the Ratatui
logo
in the terminal. It is used in the <code>examples/ratatui-logo.rs</code>
example,
and may be used in your applications' help or about screens.</p>
<pre lang="rust"><code>use ratatui::{Frame, widgets::RatatuiLogo};
<p>fn draw(frame: &amp;mut Frame) {
frame.render_widget(RatatuiLogo::tiny(), frame.area());
</code></pre></p>
</blockquote>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="28732176e1"><code>2873217</code></a>
chore(release): prepare for 0.29.0 (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1444">#1444</a>)</li>
<li><a
href="6515097434"><code>6515097</code></a>
chore(cargo): check in Cargo.lock (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1434">#1434</a>)</li>
<li><a
href="4c4851ca3d"><code>4c4851c</code></a>
feat(example): add drawing feature to the canvas example (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1429">#1429</a>)</li>
<li><a
href="4f5503dbf6"><code>4f5503d</code></a>
fix(color)!: hsl and hsluv are now clamped before conversion (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1436">#1436</a>)</li>
<li><a
href="611086eba4"><code>611086e</code></a>
fix: sparkline docs / doc tests (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1437">#1437</a>)</li>
<li><a
href="514d273875"><code>514d273</code></a>
fix(terminal): use the latest, resized area when clearing (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1427">#1427</a>)</li>
<li><a
href="60cc15bbb0"><code>60cc15b</code></a>
feat!: add support for empty bar style to <code>Sparkline</code> (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1326">#1326</a>)</li>
<li><a
href="a52ee82fc7"><code>a52ee82</code></a>
fix(text): truncate based on alignment (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1432">#1432</a>)</li>
<li><a
href="381ec75329"><code>381ec75</code></a>
docs(readme): reduce the length (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1431">#1431</a>)</li>
<li><a
href="f6f7794dd7"><code>f6f7794</code></a>
chore: remove leftover prelude refs / glob imports from example code (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1430">#1430</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ratatui/ratatui/compare/v0.28.1...v0.29.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `trybuild` from 1.0.99 to 1.0.101
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.101</h2>
<ul>
<li>Fix rustflags unification when using target-specific rustflags in a
config.toml (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/293">#293</a>)</li>
</ul>
<h2>1.0.100</h2>
<ul>
<li>Documentation improvements (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/288">#288</a>,
<a
href="https://redirect.github.com/dtolnay/trybuild/issues/289">#289</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="32408f9c63"><code>32408f9</code></a>
Release 1.0.101</li>
<li><a
href="6fe643543b"><code>6fe6435</code></a>
Resolve unexpected_cfgs warning when build script is not run</li>
<li><a
href="fba7a15198"><code>fba7a15</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/293">#293</a>
from dtolnay/targetrustflags</li>
<li><a
href="e3d8dab0bb"><code>e3d8dab</code></a>
Combine trybuild rustflags with target-specific rustflags</li>
<li><a
href="1fa2fcb686"><code>1fa2fcb</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/292">#292</a>
from dtolnay/targettriple</li>
<li><a
href="669bdb0e91"><code>669bdb0</code></a>
Delegate TARGET identification to target-triple crate</li>
<li><a
href="7c399e0046"><code>7c399e0</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/291">#291</a>
from dtolnay/target</li>
<li><a
href="2d760927ba"><code>2d76092</code></a>
Rely on $TARGET always set during build script execution</li>
<li><a
href="909f7512f2"><code>909f751</code></a>
Release 1.0.100</li>
<li><a
href="c4501dcb0d"><code>c4501dc</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/289">#289</a>
from dtolnay/rust-src</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.99...1.0.101">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-21 19:06:46 -04:00
Orhun Parmaksız
28732176e1 chore(release): prepare for 0.29.0 (#1444)
🧀
2024-10-21 13:35:36 +03:00
Josh McKinney
6515097434 chore(cargo): check in Cargo.lock (#1434)
When kept up to date, this makes it possible to build any git version
with the same versions of crates that were used for any version, without
it, you can only use the current versions. This makes bugs in semver
compatible code difficult to detect.

The Cargo.lock file is not used by downstream consumers of the crate, so
it is safe to include it in the repository (and recommended by the Rust
docs).

See:
- https://doc.rust-lang.org/cargo/faq.html#why-have-cargolock-in-version-control
- https://blog.rust-lang.org/2023/08/29/committing-lockfiles.html
- https://github.com/rust-lang/cargo/issues/8728

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2024-10-20 11:59:07 +03:00
Orhun Parmaksız
4c4851ca3d feat(example): add drawing feature to the canvas example (#1429)
![rec_20241018T235208](https://github.com/user-attachments/assets/cfb2f9f8-773b-4599-9312-29625ff2ca60)


fun fact: I had to do [35
pushups](https://www.youtube.com/watch?v=eS92stzBYXA) for this...

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-20 01:41:40 -07:00
Josh McKinney
4f5503dbf6 fix(color)!: hsl and hsluv are now clamped before conversion (#1436)
The `from_hsl` and `from_hsluv` functions now clamp the HSL and HSLuv
values before converting them to RGB. This ensures that the input values
are within the expected range before conversion.

Also note that the ranges of Saturation and Lightness values have been
aligned to be consisten with the palette crate. Saturation and Lightness
for `from_hsl` are now in the range [0.0..1.0] while `from_hsluv` are
in the range [0.0..100.0].

Refs:
- <https://github.com/Ogeon/palette/discussions/253>
- <https://docs.rs/palette/latest/palette/struct.Hsl.html>
- <https://docs.rs/palette/latest/palette/struct.Hsluv.html>

Fixes: <https://github.com/ratatui/ratatui/issues/1433>
2024-10-20 00:46:04 -07:00
Josh McKinney
611086eba4 fix: sparkline docs / doc tests (#1437) 2024-10-20 09:24:38 +03:00
Robert Hensing
514d273875 fix(terminal): use the latest, resized area when clearing (#1427) 2024-10-19 20:17:12 -07:00
FujiApple
60cc15bbb0 feat!: add support for empty bar style to Sparkline (#1326)
- distingiush between empty bars and bars with a value of 0
- provide custom styling for empty bars
- provide custom styling for individual bars
- inverts the rendering algorithm to be item first

Closes: #1325 

BREAKING CHANGE: `Sparkline::data` takes `IntoIterator<Item = SparklineBar>`
instead of `&[u64]` and is no longer const

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-19 19:49:05 -07:00
Eric Lunderberg
a52ee82fc7 fix(text): truncate based on alignment (#1432)
This is a follow-up PR to https://github.com/ratatui/ratatui/pull/987,
which implemented alignment-aware truncation for the `Line` widget.
However, the truncation only checked the `Line::alignment` field, and
any alignment inherited from a parent's `Text::alignment` field would
not be used.

This commit updates the truncation of `Line` to depend both on the
individual `Line::alignment`, and on any alignment inherited from the
parent's `Text::alignment`.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-19 09:16:44 -07:00
Josh McKinney
381ec75329 docs(readme): reduce the length (#1431)
Motivation for this is that there's a bunch of stuff at the bottom of the Readme that we don't really keep up to date. Instead it's better to link to the places that we do keep this info.
2024-10-19 16:28:04 +03:00
Josh McKinney
f6f7794dd7 chore: remove leftover prelude refs / glob imports from example code (#1430)
Fixes: <https://github.com/ratatui/ratatui/issues/1150>

Co-authored-by: Dheepak Krishnamurthy <1813121+kdheepak@users.noreply.github.com>
2024-10-19 02:54:34 -07:00
Dheepak Krishnamurthy
453a308b46 feat!: Add overlap to layout (#1398)
This PR adds a new feature for the existing `Layout::spacing` method,
and introducing a `Spacing` enum.

Now `Layout::spacing` is generic and can take

- zero or positive numbers, e.g. `Layout::spacing(1)` (current
functionality)
- negative number, e.g. `Layout::spacing(-1)` (new)
- variant of the `Spacing` (new)

This allows creating layouts with a shared pixel for segments. When
`spacing(negative_value)` is used, spacing is ignored and all segments
will be adjacent and have pixels overlapping.
`spacing(zero_or_positive_value)` behaves the same as before. These are
internally converted to `Spacing::Overlap` or `Spacing::Space`.

Here's an example output to illustrate the layout solve from this PR:

```rust
#[test]
fn test_layout() {
    use crate::layout::Constraint::*;
    let mut terminal = crate::Terminal::new(crate::backend::TestBackend::new(50, 4)).unwrap();
    terminal
        .draw(|frame| {
            let [upper, lower] = Layout::vertical([Fill(1), Fill(1)]).areas(frame.area());

            let (segments, spacers) = Layout::horizontal([Length(10), Length(10), Length(10)])
                .flex(Flex::Center)
                .split_with_spacers(upper);

            for segment in segments.iter() {
                frame.render_widget(
                    crate::widgets::Block::bordered()
                        .border_set(crate::symbols::border::DOUBLE),
                    *segment,
                );
            }
            for spacer in spacers.iter() {
                frame.render_widget(crate::widgets::Block::bordered(), *spacer);
            }

            let (segments, spacers) = Layout::horizontal([Length(10), Length(10), Length(10)])
                .flex(Flex::Center)
                .spacing(-1) // new feature
                .split_with_spacers(lower);

            for segment in segments.iter() {
                frame.render_widget(
                    crate::widgets::Block::bordered()
                        .border_set(crate::symbols::border::DOUBLE),
                    *segment,
                );
            }
            for spacer in spacers.iter() {
                frame.render_widget(crate::widgets::Block::bordered(), *spacer);
            }
        })
        .unwrap();
    dbg!(terminal.backend());
}
```


```plain
┌────────┐╔════════╗╔════════╗╔════════╗┌────────┐
└────────┘╚════════╝╚════════╝╚════════╝└────────┘
┌─────────┐╔════════╔════════╔════════╗┌─────────┐
└─────────┘╚════════╚════════╚════════╝└─────────┘
```

Currently drawing a border on top of an existing border overwrites it.
Future PRs will allow for making the border drawing handle overlaps
better.

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-16 05:41:08 -04:00
Josh McKinney
9fd1beedb2 chore!: make Positions iterator fields private (#1424)
BREAKING CHANGE: The Rect Positions iterator no longer has public
fields. The `rect` and `current_position` fields have been made private
as they were not intended to be accessed directly.
2024-10-15 21:38:53 -07:00
Tayfun Bocek
8db7a9a44a perf: implement size hints for Rect iterators (#1420)
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-15 18:48:17 -07:00
Josh McKinney
b7e488507d fix(color): fix doc test for from_hsl (#1421) 2024-10-15 13:08:52 +03:00
Josh McKinney
4728f0e68b docs: tweak readme (#1419)
Fixes: <https://github.com/ratatui/ratatui/issues/1417>
2024-10-15 03:00:03 -07:00
Orhun Parmaksız
6db16d67fc refactor(color)!: use palette types for Hsl/Hsluv conversions (#1418)
BREAKING-CHANGE: Previously `Color::from_hsl` accepted components
as individual f64 parameters. It now accepts a single `palette::Hsl`
value
and is gated behind a `palette` feature flag.

```diff
- Color::from_hsl(360.0, 100.0, 100.0)
+ Color::from_hsl(Hsl::new(360.0, 100.0, 100.0))
```

Fixes: <https://github.com/ratatui/ratatui/issues/1414>

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-14 19:15:05 -07:00
Orhun Parmaksız
cc7497532a chore(deps)!: pin unicode-width to 0.2.0 (#1403)
We pin unicode-width to avoid breaking applications when there are breaking changes in the library.

Discussion in #1271

Fixes: #1385

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-10-14 19:05:43 -07:00
Neal Fachan
d72968d86b feat(scrolling-regions)!: use terminal scrolling regions to stop Terminal::insert_before from flickering (#1341)
The current implementation of Terminal::insert_before causes the
viewport to flicker. This is described in #584 .

This PR removes that flickering by using terminal scrolling regions
(sometimes called "scroll regions"). A terminal can have its scrolling
region set to something other than the whole screen. When a scroll ANSI
sequence is sent to the terminal and it has a non-default scrolling
region, the terminal will scroll just inside of that region.

We use scrolling regions to implement insert_before. We create a region
on the screen above the viewport, scroll that up to make room for the
newly inserted lines, and then draw the new lines. We may need to repeat
this process depending on how much space there is and how many lines we
need to draw.

When the viewport takes up the entire screen, we take a modified
approach. We create a scrolling region of just the top line (could be
more) of the viewport, then use that to draw the lines we want to
output. When we're done, we scroll it up by one line, into the
scrollback history, and then redraw the top line from the viewport.

A final edge case is when the viewport hasn't yet reached the bottom of
the screen. This case, we set up a different scrolling region, where the
top is the top of the viewport, and the bottom is the viewport's bottom
plus the number of lines we want to scroll by. We then scroll this
region down to open up space above the viewport for drawing the inserted
lines.

Regardless of what we do, we need to reset the scrolling region. This PR
takes the approach of always resetting the scrolling region after every
operation. So the Backend gets new scroll_region_up and
scroll_region_down methods instead of set_scrolling_region, scroll_up,
scroll_down, and reset_scrolling_region methods. We chose that approach
for two reasons. First, we don't want Ratatui to have to remember that
state and then reset the scrolling region when tearing down. Second, the
pre-Windows-10 console code doesn't support scrolling regio

This PR:
- Adds a new scrolling-regions feature.
- Adds two new Backend methods: scroll_region_up and scroll_region_down.
- Implements those Backend methods on all backends in the codebase.
- The crossterm and termion implementations use raw ANSI escape
sequences. I'm trying to merge changes into those two projects
separately to support these functions.
- Adds code to Terminal::insert_before to choose between
insert_before_scrolling_regions and insert_before_no_scrolling_regions.
The latter is the old implementation.
- Adds lots of tests to the TestBackend to for the
scrolling-region-related Backend methods.
- Adds versions of terminal tests that show that insert_before doesn't
clobber the viewport. This is a change in behavior from before.
2024-10-14 15:46:13 -07:00
FujiApple
7bdccce3d5 feat!: add an impl of DoubleEndedIterator for Columns and Rows (#1358)
BREAKING-CHANGE: The `pub` modifier has been removed from fields on the
`layout::rect::Columns` and `layout::rect::Rows` iterators. These fields
were not intended to be public and should not have been accessed
directly.

Fixes: #1357
2024-10-14 15:41:39 -07:00
Josh McKinney
3df685e114 fix(rect)!: Rect::area now returns u32 and Rect::new() no longer clamps area to u16::MAX (#1378)
This change fixes the unexpected behavior of the Rect::new() function to
be more intuitive. The Rect::new() function now clamps the width and
height of the rectangle to keep each bound within u16::MAX. The
Rect::area() function now returns a u32 instead of a u16 to allow for
larger areas to be calculated.

Previously, the Rect::new() function would clamp the total area of the
rectangle to u16::MAX, by preserving the aspect ratio of the rectangle.

BREAKING CHANGE: Rect::area() now returns a u32 instead of a u16.

Fixes: <https://github.com/ratatui/ratatui/issues/1375>

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-10-14 15:04:56 -07:00
Josh McKinney
4069aa8274 docs: fix missing breaking changes link (#1416) 2024-10-14 17:46:23 +03:00
Josh McKinney
e5a7609588 feat(line)!: impl From<Cow<str>> for Line (#1373)
BREAKING-CHANGES: `Line` now implements `From<Cow<str>`

As this adds an extra conversion, ambiguous infered values may no longer
compile.

```rust
// given:
struct Foo { ... }
impl From<Foo> for String { ... }
impl From<Foo> for Cow<str> { ... }

let foo = Foo { ... };
let line = Line::from(foo); // now fails due to ambiguous type inference
// replace with
let line = Line::from(String::from(foo));
```

Fixes: https://github.com/ratatui/ratatui/issues/1367

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-10-14 17:02:57 +03:00
Orhun Parmaksız
69e0cd2fc4 chore(deny): allow Zlib license in cargo-deny configuration (#1411) 2024-10-14 02:48:30 -07:00
Josh McKinney
ab6b1feaec feat(tabs)!: allow tabs to be deselected (#1413)
`Tabs::select()` now accepts `Into<Option<usize>>` instead of `usize`.
This allows tabs to be deselected by passing `None`.

`Tabs::default()` is now also implemented manually instead of deriving
`Default`, and a new method `Tabs::titles()` is added to set the titles
of the tabs.

Fixes: <https://github.com/ratatui/ratatui/pull/1412>

BREAKING CHANGE: `Tabs::select()` now accepts `Into<Option<usize>>`
which breaks any code already using parameter type inference:

```diff
let selected = 1u8;
- let tabs = Tabs::new(["A", "B"]).select(selected.into())
+ let tabs = Tabs::new(["A", "B"]).select(selected as usize)
```
2024-10-14 02:44:58 -07:00
du-ob
3a43274881 feat(color): add hsluv support (#1333)
closes #763

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2024-10-13 14:08:20 +03:00
Tayfun Bocek
dc8d0587ec feat(table)!: add support for selecting column and cell (#1331)
Fixes https://github.com/ratatui-org/ratatui/issues/1250

Adds support for selecting a column and cell in `TableState`. The
selected column, and cells style can be set by
`Table::column_highlight_style` and `Table::cell_highlight_style`
respectively.

The table example has also been updated to display the new
functionality:


https://github.com/user-attachments/assets/e5fd2858-4931-4ce1-a2f6-a5ea1eacbecc

BREAKING CHANGE: The Serialized output of the state will now include the
"selected_column" field. Software that manually parse the serialized the
output (with anything other than the `Serialize` implementation on
`TableState`) may have to be refactored if the "selected_column" field
is not accounted for. This does not affect users who rely on the
`Deserialize`, or `Serialize` implementation on the state.

BREAKING CHANGE: The `Table::highlight_style` is now deprecated in favor
of `Table::row_highlight_style`.

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-10-13 14:06:29 +03:00
Josh McKinney
23c0d52c29 feat(text): improve concise debug view for Span,Line,Text,Style (#1410)
Improves https://github.com/ratatui/ratatui/pull/1383

The following now round trips when formatted for debug.
This will make it easier to use insta when testing text related views of
widgets.

```rust
Text::from_iter([
    Line::from("Hello, world!"),
    Line::from("How are you?").bold().left_aligned(),
    Line::from_iter([
        Span::from("I'm "),
        Span::from("doing ").italic(),
        Span::from("great!").bold(),
    ]),
]).on_blue().italic().centered()
```
2024-10-08 09:08:21 +03:00
Tayfun Bocek
c32baa7cd8 chore: add benchmark for Table (#1408) 2024-10-07 12:32:05 -07:00
Raffaele Cataldo
1153a9ebaf refactor: Consistent result expected in layout tests (#1406)
Fixes #1399 
I've looked through all the `assert_eq` and made sure that they follow
the `expected, result` pattern. I wasn't sure if it was desired to
actually pass result and expected as variables to the assert_eq
statements, so I've left everything that seems to have followed the
pattern as is.
2024-10-07 00:09:42 -04:00
Josh McKinney
2805dddf05 feat(logo): Add a Ratatui logo widget
This is a simple logo widget that can be used to render the Ratatui logo
in the terminal. It is used in the `examples/ratatui-logo.rs` example,
and may be used in your applications' help or about screens.

```rust
use ratatui::{Frame, widgets::RatatuiLogo};

fn draw(frame: &mut Frame) {
    frame.render_widget(RatatuiLogo::tiny(), frame.area());
}
```
2024-10-05 17:35:43 -07:00
dependabot[bot]
baf047f556 chore(deps): update rstest requirement from 0.22.0 to 0.23.0 (#1394)
Updates the requirements on [rstest](https://github.com/la10736/rstest)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/releases">rstest's
releases</a>.</em></p>
<blockquote>
<h2>0.23.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Upgrade to async-std v1.13 by <a
href="https://github.com/jayvdb"><code>@​jayvdb</code></a> in <a
href="https://redirect.github.com/la10736/rstest/pull/274">la10736/rstest#274</a></li>
<li>Allow environment variables in #[files] attributes by <a
href="https://github.com/hansl"><code>@​hansl</code></a> in <a
href="https://redirect.github.com/la10736/rstest/pull/277">la10736/rstest#277</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jayvdb"><code>@​jayvdb</code></a> made
their first contribution in <a
href="https://redirect.github.com/la10736/rstest/pull/274">la10736/rstest#274</a></li>
<li><a href="https://github.com/hansl"><code>@​hansl</code></a> made
their first contribution in <a
href="https://redirect.github.com/la10736/rstest/pull/277">la10736/rstest#277</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/la10736/rstest/compare/v0.22.0...v0.23.0">https://github.com/la10736/rstest/compare/v0.22.0...v0.23.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/blob/master/CHANGELOG.md">rstest's
changelog</a>.</em></p>
<blockquote>
<h2>[0.23.0] 2024/9/29</h2>
<h3>Add</h3>
<ul>
<li>You can now use environment variables in <code>#[files]</code> with
an optional default value (see <a
href="https://redirect.github.com/la10736/rstest/pull/277">#277</a>).</li>
<li>You can now set a base_dir for <code>#[files]</code> with the
<code>$[base_dir = &quot;...&quot;]</code> attribute (see <a
href="https://redirect.github.com/la10736/rstest/pull/277">#277</a>).</li>
</ul>
<h2>[0.22.0] 2024/8/4</h2>
<h3>Changed</h3>
<ul>
<li>Now it's possible destructuring input values both for cases, values
and fixtures. See <a
href="https://redirect.github.com/la10736/rstest/issues/231">#231</a>
for details</li>
</ul>
<h3>Add</h3>
<ul>
<li>Implemented <code>#[ignore]</code> attribute to ignore test
parameters during fixtures resolution/injection. See <a
href="https://redirect.github.com/la10736/rstest/issues/228">#228</a>
for details</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Lot of typo in code</li>
</ul>
<h2>[0.21.0] 2024/6/1</h2>
<h3>Changed</h3>
<ul>
<li>Add feature <code>crate-name</code> enabled by default to opt-in
crate rename
support. See <a
href="https://redirect.github.com/la10736/rstest/issues/258">#258</a></li>
</ul>
<h2>[0.20.0] 2024/5/30</h2>
<h3>Add</h3>
<ul>
<li>Implemented <code>#[by_ref]</code> attribute to take get a local
lifetime for test arguments.
See <a
href="https://redirect.github.com/la10736/rstest/issues/241">#241</a>
for more details. Thanks to
<a href="https://github.com/narpfel"><code>@​narpfel</code></a> for
suggesting it and useful discussions.</li>
<li>Support for import <code>rstest</code> with another name. See <a
href="https://redirect.github.com/la10736/rstest/issues/221">#221</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Don't remove Lifetimes from test function if any. See <a
href="https://redirect.github.com/la10736/rstest/issues/230">#230</a>
<a href="https://redirect.github.com/la10736/rstest/issues/241">#241</a>
for more details.</li>
<li><a
href="https://doc.rust-lang.org/std/path/struct.PathBuf.html"><code>PathBuf</code></a>
does no longer need to be
in scope when using <code>#[files]</code> (see <a
href="https://redirect.github.com/la10736/rstest/pull/242">#242</a>)</li>
<li><code>#[from(now::accept::also::path::for::fixture)]</code> See <a
href="https://redirect.github.com/la10736/rstest/issues/246">#246</a>
for more details</li>
</ul>
<h2>[0.19.0] 2024/4/9</h2>
<h3>Changed</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="da11d4e48a"><code>da11d4e</code></a>
Update dependency and prepare the release</li>
<li><a
href="0c6e203b53"><code>0c6e203</code></a>
Update checkout list</li>
<li><a
href="20e8858611"><code>20e8858</code></a>
Make clippy happy</li>
<li><a
href="57a93425a5"><code>57a9342</code></a>
Playground should use dev package</li>
<li><a
href="8a04803580"><code>8a04803</code></a>
Removed the useless build rerun variable</li>
<li><a
href="8c232bce88"><code>8c232bc</code></a>
Add a test for invalid base_dir value</li>
<li><a
href="3520861ca5"><code>3520861</code></a>
Add tests for replace_env_vars</li>
<li><a
href="465a4012af"><code>465a401</code></a>
Add unit tests for parsing attributes, and add base_dir</li>
<li><a
href="a970613f43"><code>a970613</code></a>
Add a test for declared environment variables</li>
<li><a
href="c65d1c002c"><code>c65d1c0</code></a>
Add tests and #[ignore_missing_env_vars]</li>
<li>Additional commits viewable in <a
href="https://github.com/la10736/rstest/compare/v0.22.0...v0.23.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-05 23:49:25 +03:00
dependabot[bot]
6745a10508 chore(deps): update octocrab requirement from 0.40.0 to 0.41.0 (#1393)
Updates the requirements on
[octocrab](https://github.com/XAMPPRocky/octocrab) to permit the latest
version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.41.0</h2>
<h3>Added</h3>
<ul>
<li>Implement getting users and reopos by their respective IDs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/690">#690</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><em>(installation)</em> [<strong>breaking</strong>] Return Result
instead of panicking in <code>Octocrab::installation</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/687">#687</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Update tower-http requirement from 0.5.1 to 0.6.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/701">#701</a>)</li>
<li>add additional webhook model fields (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/696">#696</a>)</li>
<li>Bump hyper-rustls version. (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/699">#699</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.40.0...v0.41.0">0.41.0</a>
- 2024-09-30</h2>
<h3>Added</h3>
<ul>
<li>Implement getting users and reopos by their respective IDs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/690">#690</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><em>(installation)</em> [<strong>breaking</strong>] Return Result
instead of panicking in <code>Octocrab::installation</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/687">#687</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Update tower-http requirement from 0.5.1 to 0.6.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/701">#701</a>)</li>
<li>add additional webhook model fields (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/696">#696</a>)</li>
<li>Bump hyper-rustls version. (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/699">#699</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.39.0...v0.40.0">0.40.0</a>
- 2024-09-22</h2>
<h3>Added</h3>
<ul>
<li>Support <code>remove_assignees</code> on issue API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/686">#686</a>)</li>
<li>add missing fields in <code>CreateForkBuilder</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/682">#682</a>)</li>
<li>Add <code>Gist::public</code> field (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/678">#678</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><em>(refs)</em> [<strong>breaking</strong>] remove
<code>Reference::Commit</code> variant (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/697">#697</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Fix typo in cfg_attr statement (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/693">#693</a>)</li>
<li>Handle empty author object in pr_commits (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/656">#656</a>)</li>
<li>Add <code>DeviceCodes::poll_until_available</code> method (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/679">#679</a>)</li>
<li>Uncomment pr_commits function (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/680">#680</a>)</li>
<li>Only add base_path if req_pandq does not contain it (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/684">#684</a>)</li>
<li>Update code scanning alert (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/673">#673</a>)</li>
<li>Added <code>merged_by</code> and <code>closed_by</code> fields (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/674">#674</a>)</li>
<li>Update and Fixes to the Code Scanning Models &amp; Webhooks (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/675">#675</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.38.0...v0.39.0">0.39.0</a>
- 2024-07-30</h2>
<h3>Added</h3>
<ul>
<li>support permission on list_collaborators (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/630">#630</a>)</li>
<li>add check run pull requests and list parameters (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/494">#494</a>)</li>
<li>implement hook deliveries (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/668">#668</a>)</li>
<li>allow sending non String payload with execute (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/665">#665</a>)</li>
<li>added /user/blocks functionality (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/657">#657</a>)</li>
<li>add method to create repo webhook (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/640">#640</a>)</li>
</ul>
<h3>Fixed</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8f7929f120"><code>8f7929f</code></a>
chore: release (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/700">#700</a>)</li>
<li><a
href="4164ea9ec6"><code>4164ea9</code></a>
fix(installation)!: Return Result instead of panicking in
`Octocrab::installa...</li>
<li><a
href="6ca41409d5"><code>6ca4140</code></a>
feat: Implement getting users and reopos by their respective IDs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/690">#690</a>)</li>
<li><a
href="5f1ee03a9b"><code>5f1ee03</code></a>
Update tower-http requirement from 0.5.1 to 0.6.1 (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/701">#701</a>)</li>
<li><a
href="5ffd5313ee"><code>5ffd531</code></a>
add additional webhook model fields (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/696">#696</a>)</li>
<li><a
href="53e3d4f403"><code>53e3d4f</code></a>
Bump hyper-rustls version. (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/699">#699</a>)</li>
<li>See full diff in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.40.0...v0.41.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-05 23:47:42 +03:00
dependabot[bot]
7799f4ff5b chore(deps): bump bnjbvr/cargo-machete from 0.6.2 to 0.7.0 (#1392)
Bumps [bnjbvr/cargo-machete](https://github.com/bnjbvr/cargo-machete)
from 0.6.2 to 0.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/bnjbvr/cargo-machete/releases">bnjbvr/cargo-machete's
releases</a>.</em></p>
<blockquote>
<h2>v0.7.0</h2>
<ul>
<li>Breaking change: Don't search in ignored files (those specified in
.ignore/.gitignore) by default. It's possible to use
<code>--no-ignore</code> to search in these directories by default (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/137">#137</a>).</li>
<li>Improved: fix false positives for multi dependencies single use
statements (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/120">#120</a>).
This improves precision at the cost of a small performance hit.</li>
<li>Improved: make usage of <code>--with-metadata</code> more accurate
(<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/122">#122</a>,
<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/132">#132</a>).</li>
<li>Improved: instead of displaying <code>.</code> for the current
directory, <code>cargo-machete</code> will now display <code>this
directory</code> (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/109">#109</a>).</li>
<li>Added: There's now an automated docker image build that publishes to
the <a
href="https://github.com/bnjbvr/cargo-machete/pkgs/container/cargo-machete">github
repository</a> (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/121">#121</a>).</li>
<li>Added: <code>--ignore</code> flag which make cargo-machete respect
.ignore and .gitignore files when searching for files (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/95">#95</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/bnjbvr/cargo-machete/blob/main/CHANGELOG.md">bnjbvr/cargo-machete's
changelog</a>.</em></p>
<blockquote>
<h1>0.7.0 (released on 2024-09-25)</h1>
<ul>
<li>Breaking change: Don't search in ignored files (those specified in
.ignore/.gitignore) by default. It's possible to use
<code>--no-ignore</code> to search in these directories by default (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/137">#137</a>).</li>
<li>Improved: fix false positives for multi dependencies single use
statements (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/120">#120</a>).
This improves precision at the cost of a small performance hit.</li>
<li>Improved: make usage of <code>--with-metadata</code> more accurate
(<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/122">#122</a>,
<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/132">#132</a>).</li>
<li>Improved: instead of displaying <code>.</code> for the current
directory, <code>cargo-machete</code> will now display <code>this
directory</code> (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/109">#109</a>).</li>
<li>Added: There's now an automated docker image build that publishes to
the <a
href="https://github.com/bnjbvr/cargo-machete/pkgs/container/cargo-machete">github
repository</a> (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/121">#121</a>).</li>
<li>Added: <code>--ignore</code> flag which make cargo-machete respect
.ignore and .gitignore files when searching for files (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/95">#95</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5eaad10acf"><code>5eaad10</code></a>
ci: update OS versions in release task</li>
<li><a
href="a881c7261d"><code>a881c72</code></a>
Update CHANGELOG.md: address typo (thanks <a
href="https://github.com/signez"><code>@​signez</code></a>)</li>
<li><a
href="37beb07f34"><code>37beb07</code></a>
Release 0.7.0</li>
<li><a
href="ad0fea4b0b"><code>ad0fea4</code></a>
bump dependencies</li>
<li><a
href="426119c8f0"><code>426119c</code></a>
Fix typo.</li>
<li><a
href="a14e71ad3d"><code>a14e71a</code></a>
Don't search in ignored files by default</li>
<li><a
href="a767940ee9"><code>a767940</code></a>
Fix false positive for multi dep single use statements (<a
href="https://redirect.github.com/bnjbvr/cargo-machete/issues/120">#120</a>)</li>
<li><a
href="16e3e931d0"><code>16e3e93</code></a>
move regex-try to its own repository</li>
<li><a
href="bea9e7361a"><code>bea9e73</code></a>
nump dependencies</li>
<li><a
href="94a21474d2"><code>94a2147</code></a>
remove unnecessary clones, and some minor changes</li>
<li>Additional commits viewable in <a
href="https://github.com/bnjbvr/cargo-machete/compare/v0.6.2...v0.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bnjbvr/cargo-machete&package-manager=github_actions&previous-version=0.6.2&new-version=0.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-05 23:43:00 +03:00
Dheepak Krishnamurthy
edcdc8a814 refactor(layout): rename element to segment in layout (#1397)
This PR renames `element` to `segment` in a couple of functions in the
layout calculations for clarity. `element` can refer to `segment`s or
`spacer`s and functions that take only `segment`s should use `segment`
as the variable names.
2024-10-02 22:34:07 +03:00
Josh McKinney
5ad623c29b chore: remove usage of prelude (#1390)
This helps make the doc examples more explicit about what is being used.
It will also makes it a bit easier to do future refactoring of Ratatui,
into several crates, as the ambiguity of where types are coming from
will be reduced.

Additionally, several doc examples have been simplified to use Stylize,
and necessary imports are no longer hidden.

This doesn't remove the prelude. Only the internal usages.
2024-09-28 11:47:45 -07:00
Josh McKinney
bc10af5931 chore(style): make Debug output for Text/Line/Span/Style more concise (#1383)
Given:

```rust
Text::from_iter([
    Line::from("without line fields"),
    Line::from("with line fields").bold().centered(),
    Line::from_iter([
        Span::from("without span fields"),
        Span::from("with span fields")
            .green()
            .on_black()
            .italic()
            .not_dim(),
    ]),
])
```

Debug:
```
Text [Line [Span("without line fields")], Line { style: Style::new().add_modifier(Modifier::BOLD), alignment: Some(Center), spans: [Span("with line fields")] }, Line [Span("without span fields"), Span { style: Style::new().green().on_black().add_modifier(Modifier::ITALIC).remove_modifier(Modifier::DIM), content: "with span fields" }]]
```

Fixes: https://github.com/ratatui/ratatui/issues/1382
---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-09-26 20:38:23 +03:00
dependabot[bot]
784f67a912 chore(deps): update octocrab requirement from 0.39.0 to 0.40.0 (#1386)
Updates the requirements on
[octocrab](https://github.com/XAMPPRocky/octocrab) to permit the latest
version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/releases">octocrab's
releases</a>.</em></p>
<blockquote>
<h2>v0.40.0</h2>
<h3>Added</h3>
<ul>
<li>Support <code>remove_assignees</code> on issue API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/686">#686</a>)</li>
<li>add missing fields in <code>CreateForkBuilder</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/682">#682</a>)</li>
<li>Add <code>Gist::public</code> field (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/678">#678</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><em>(refs)</em> [<strong>breaking</strong>] remove
<code>Reference::Commit</code> variant (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/697">#697</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Fix typo in cfg_attr statement (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/693">#693</a>)</li>
<li>Handle empty author object in pr_commits (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/656">#656</a>)</li>
<li>Add <code>DeviceCodes::poll_until_available</code> method (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/679">#679</a>)</li>
<li>Uncomment pr_commits function (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/680">#680</a>)</li>
<li>Only add base_path if req_pandq does not contain it (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/684">#684</a>)</li>
<li>Update code scanning alert (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/673">#673</a>)</li>
<li>Added <code>merged_by</code> and <code>closed_by</code> fields (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/674">#674</a>)</li>
<li>Update and Fixes to the Code Scanning Models &amp; Webhooks (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/675">#675</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/XAMPPRocky/octocrab/blob/main/CHANGELOG.md">octocrab's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.39.0...v0.40.0">0.40.0</a>
- 2024-09-22</h2>
<h3>Added</h3>
<ul>
<li>Support <code>remove_assignees</code> on issue API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/686">#686</a>)</li>
<li>add missing fields in <code>CreateForkBuilder</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/682">#682</a>)</li>
<li>Add <code>Gist::public</code> field (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/678">#678</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><em>(refs)</em> [<strong>breaking</strong>] remove
<code>Reference::Commit</code> variant (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/697">#697</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Fix typo in cfg_attr statement (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/693">#693</a>)</li>
<li>Handle empty author object in pr_commits (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/656">#656</a>)</li>
<li>Add <code>DeviceCodes::poll_until_available</code> method (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/679">#679</a>)</li>
<li>Uncomment pr_commits function (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/680">#680</a>)</li>
<li>Only add base_path if req_pandq does not contain it (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/684">#684</a>)</li>
<li>Update code scanning alert (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/673">#673</a>)</li>
<li>Added <code>merged_by</code> and <code>closed_by</code> fields (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/674">#674</a>)</li>
<li>Update and Fixes to the Code Scanning Models &amp; Webhooks (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/675">#675</a>)</li>
</ul>
<h2><a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.38.0...v0.39.0">0.39.0</a>
- 2024-07-30</h2>
<h3>Added</h3>
<ul>
<li>support permission on list_collaborators (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/630">#630</a>)</li>
<li>add check run pull requests and list parameters (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/494">#494</a>)</li>
<li>implement hook deliveries (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/668">#668</a>)</li>
<li>allow sending non String payload with execute (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/665">#665</a>)</li>
<li>added /user/blocks functionality (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/657">#657</a>)</li>
<li>add method to create repo webhook (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/640">#640</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>use put instead of get for set_thread_subscription (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/661">#661</a>)</li>
<li><em>(builder)</em> Change add_retry_config signature to match others
in OctocrabBuilder (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/643">#643</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>getting Code Scanning (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/669">#669</a>)</li>
<li>added missing /repos/{owner}/{repo}/pulls/... handlers (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/546">#546</a>)
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/605">#605</a>)</li>
<li>Properly mark feature-gated functionality in docs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/662">#662</a>)</li>
<li>repos/releases improvements (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/666">#666</a>)</li>
<li>Add AutoRebaseEnabled to models.rs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/660">#660</a>)</li>
<li>cargo fmt (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/658">#658</a>)</li>
<li>Fix issue <a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/635">#635</a>
(<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/637">#637</a>)</li>
<li>Update issues.rs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/634">#634</a>)</li>
<li>Add head repo to create pr (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/636">#636</a>)</li>
<li>Added support for make_latest in UpdateReleaseBuilder (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/646">#646</a>)</li>
<li>Changing the user name from required to optional parameter (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/650">#650</a>)</li>
<li>Update models.rs (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/pull/651">#651</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bd8b648282"><code>bd8b648</code></a>
chore: release (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/685">#685</a>)</li>
<li><a
href="a8bcee4c29"><code>a8bcee4</code></a>
fix(refs)!: remove <code>Reference::Commit</code> variant (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/697">#697</a>)</li>
<li><a
href="3167540eb0"><code>3167540</code></a>
Fix typo in cfg_attr statement (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/693">#693</a>)</li>
<li><a
href="01767f30eb"><code>01767f3</code></a>
Handle empty author object in pr_commits (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/656">#656</a>)</li>
<li><a
href="689ee43ab0"><code>689ee43</code></a>
feat: Support <code>remove_assignees</code> on issue API (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/686">#686</a>)</li>
<li><a
href="8aa113e079"><code>8aa113e</code></a>
Add <code>DeviceCodes::poll_until_available</code> method (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/679">#679</a>)</li>
<li><a
href="501ef7439d"><code>501ef74</code></a>
feat: add missing fields in <code>CreateForkBuilder</code> (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/682">#682</a>)</li>
<li><a
href="807cc7592d"><code>807cc75</code></a>
Uncomment pr_commits function (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/680">#680</a>)</li>
<li><a
href="0459e31986"><code>0459e31</code></a>
Only add base_path if req_pandq does not contain it (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/684">#684</a>)</li>
<li><a
href="70e9b9e49f"><code>70e9b9e</code></a>
feat: Add <code>Gist::public</code> field (<a
href="https://redirect.github.com/XAMPPRocky/octocrab/issues/678">#678</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/XAMPPRocky/octocrab/compare/v0.39.0...v0.40.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-23 21:21:17 +03:00
Josh McKinney
f4880b40cc chore: lock unicode-width version to 0.1.13 (#1384)
0.1.14 contains breaking changes which we'll need to investigate.
This commit puts a lock on the current version for now.

Changes
https://github.com/unicode-rs/unicode-width/compare/v0.1.13...v0.1.14
2024-09-21 02:58:29 -07:00
Josh McKinney
67c0ea243b chore(block): deprecate block::Title (#1372)
`ratatui::widgets::block::Title` is deprecated in favor of using `Line`
to represent titles.
This removes an unnecessary layer of wrapping (string -> Span -> Line ->
Title).

This struct will be removed in a future release of Ratatui (likely
0.31).
For more information see:
<https://github.com/ratatui/ratatui/issues/738>

To update your code:
```rust
Block::new().title(Title::from("foo"));
// becomes any of
Block::new().title("foo");
Block::new().title(Line::from("foo"));

Block::new().title(Title::from("foo").position(Position::TOP));
// becomes any of
Block::new().title_top("foo");
Block::new().title_top(Line::from("foo"));

Block::new().title(Title::from("foo").position(Position::BOTTOM));
// becomes any of
Block::new().title_bottom("foo");
Block::new().title_bottom(Line::from("foo"));
```
2024-09-20 10:21:26 +03:00
Anthony Rodgers
b9653ba05a fix: prevent calender render panic when terminal height is small (#1380)
Fixes: #1379
2024-09-19 06:02:26 -07:00
dependabot[bot]
9875d9facc chore(deps): bump DavidAnson/markdownlint-cli2-action from 16 to 17 (#1376)
Bumps
[DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action)
from 16 to 17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/davidanson/markdownlint-cli2-action/releases">DavidAnson/markdownlint-cli2-action's
releases</a>.</em></p>
<blockquote>
<h2>Update markdownlint version (markdownlint-cli2 v0.14.0, markdownlint
v0.35.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.13.0, markdownlint
v0.34.0).</h2>
<p>No release notes provided.</p>
<p>Update markdownlint version (markdownlint-cli2 v0.12.1, markdownlint
v0.33.0).</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.11.0, markdownlint
v0.32.1), remove deprecated &quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.10.0, markdownlint
v0.31.1).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.9.2, markdownlint
v0.30.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.8.1, markdownlint
v0.29.0), add &quot;config&quot; and &quot;fix&quot; inputs, deprecate
&quot;command&quot; input.</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.1, markdownlint
v0.28.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.7.0, markdownlint
v0.28.1), include link to rule information in title of annotations
(clickable in GitHub).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.6.0, markdownlint
v0.27.0).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.5.1, markdownlint
v0.26.2).</h2>
<p>No release notes provided.</p>
<h2>Update markdownlint version (markdownlint-cli2 v0.4.0, markdownlint
v0.25.1)</h2>
<p>No release notes provided.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="db43aef879"><code>db43aef</code></a>
Update to version 17.0.0.</li>
<li><a
href="c0decc52d0"><code>c0decc5</code></a>
Bump <code>@​stylistic/eslint-plugin</code> from 2.7.2 to 2.8.0</li>
<li><a
href="dd2171bb17"><code>dd2171b</code></a>
Bump eslint from 9.9.1 to 9.10.0</li>
<li><a
href="85b2286968"><code>85b2286</code></a>
Bump <code>@​eslint/js</code> from 9.9.1 to 9.10.0</li>
<li><a
href="95aa6ed6ed"><code>95aa6ed</code></a>
Freshen generated index.js file.</li>
<li><a
href="476aead54e"><code>476aead</code></a>
Bump markdownlint-cli2 from 0.13.0 to 0.14.0</li>
<li><a
href="da0291d977"><code>da0291d</code></a>
Freshen generated index.js file.</li>
<li><a
href="235535bdb7"><code>235535b</code></a>
Add <code>@​stylistic/eslint-plugin</code> to ESLint configuration.</li>
<li><a
href="20384985f1"><code>2038498</code></a>
Bump eslint from 9.9.0 to 9.9.1</li>
<li><a
href="ea9d2c1e2e"><code>ea9d2c1</code></a>
Bump <code>@​eslint/js</code> from 9.9.0 to 9.9.1</li>
<li>Additional commits viewable in <a
href="https://github.com/davidanson/markdownlint-cli2-action/compare/v16...v17">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=DavidAnson/markdownlint-cli2-action&package-manager=github_actions&previous-version=16&new-version=17)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-16 09:24:38 -07:00
Josh McKinney
b88717b65f docs(constraint): add note about percentages (#1368)
Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2024-09-13 14:42:52 +03:00
Vitalii Kryvenko
5635b930c7 ci: add cargo-machete and remove unused deps (#1362)
https://github.com/bnjbvr/cargo-machete
2024-09-08 18:54:33 -07:00
Hossein Nedaee
870bc6a64a docs: use Frame::area() instead of size() in examples (#1361)
`Frame::size()` is deprecated
2024-09-08 13:20:59 -07:00
FujiApple
da821b431e fix: clippy lints from rust 1.81.0 (#1356) 2024-09-06 22:54:36 -07:00
Patryk Wychowaniec
68886d1787 fix: add unstable-backend-writer feature (#1352)
https://github.com/ratatui/ratatui/pull/991 created a new unstable
feature, but forgot to add it to Cargo.toml, making it impossible to use
on newer versions of rustc - this commit fixes it.
2024-09-06 15:33:14 -07:00
Patryk Wychowaniec
0f48239778 fix(terminal): resize() now resizes fixed viewports (#1353)
`Terminal::resize()` on a fixed viewport used to do nothing due to
an accidentally shadowed variable. This now works as intended.
2024-09-04 12:28:30 -07:00
Valentin271
b13e2f9473 docs(backend): added link to stdio FAQ (#1349) 2024-09-01 15:30:13 -07:00
Orhun Parmaksız
c777beb658 chore(ci): bump git-cliff-action to v4 (#1350)
See: https://github.com/orhun/git-cliff-action/releases/tag/v4.0.0
2024-09-01 16:23:35 +02:00
dependabot[bot]
c45a4de47c build(deps): bump ratatui from 0.28.0 to 0.28.1 in the cargo-dependencies group (#70)
Bumps the cargo-dependencies group with 1 update:
[ratatui](https://github.com/ratatui/ratatui).

Updates `ratatui` from 0.28.0 to 0.28.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/ratatui/releases">ratatui's
releases</a>.</em></p>
<blockquote>
<h2>v0.28.1</h2>
<h2><a
href="https://github.com/ratatui/ratatui/releases/tag/v0.28.1">v0.28.1</a>
- 2024-08-25</h2>
<h3>Features</h3>
<ul>
<li>
<p><a
href="ed51c4b342">ed51c4b</a>
<em>(terminal)</em> Add ratatui::init() and restore() methods by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1289">#1289</a></p>
<blockquote>
<p>These are simple opinionated methods for creating a terminal that is
useful to use in most apps. The new init method creates a crossterm
backend writing to stdout, enables raw mode, enters the alternate
screen, and sets a panic handler that restores the terminal on
panic.</p>
<p>A minimal hello world now looks a bit like:</p>
<pre lang="rust"><code>use ratatui::{
    crossterm::event::{self, Event},
    text::Text,
    Frame,
};
<p>fn main() {<br />
let mut terminal = ratatui::init();<br />
loop {<br />
terminal<br />
.draw(|frame: &amp;mut Frame| frame.render_widget(Text::raw(&quot;Hello
World!&quot;), frame.area()))<br />
.expect(&quot;Failed to draw&quot;);<br />
if matches!(event::read().expect(&quot;failed to read event&quot;),
Event::Key(_)) {<br />
break;<br />
}<br />
}<br />
ratatui::restore();<br />
}<br />
</code></pre></p>
<p>A type alias <code>DefaultTerminal</code> is added to represent this
terminal
type and to simplify any cases where applications need to pass this
terminal around. It is equivalent to:
<code>Terminal&lt;CrosstermBackend&lt;Stdout&gt;&gt;</code></p>
<p>We also added <code>ratatui::try_init()</code> and
<code>try_restore()</code>, for situations
where you might want to handle initialization errors yourself instead
of letting the panic handler fire and cleanup. Simple Apps should
prefer the <code>init</code> and <code>restore</code> functions over
these functions.</p>
<p>Corresponding functions to allow passing a
<code>TerminalOptions</code> with
a <code>Viewport</code> (e.g. inline, fixed) are also available
(<code>init_with_options</code>,
and <code>try_init_with_options</code>).</p>
</blockquote>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui/ratatui/blob/main/CHANGELOG.md">ratatui's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui/ratatui/releases/tag/v0.28.1">v0.28.1</a>
- 2024-08-25</h2>
<h3>Features</h3>
<ul>
<li>
<p><a
href="ed51c4b342">ed51c4b</a>
<em>(terminal)</em> Add ratatui::init() and restore() methods by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui/ratatui/pull/1289">#1289</a></p>
<blockquote>
<p>These are simple opinionated methods for creating a terminal that is
useful to use in most apps. The new init method creates a crossterm
backend writing to stdout, enables raw mode, enters the alternate
screen, and sets a panic handler that restores the terminal on
panic.</p>
<p>A minimal hello world now looks a bit like:</p>
<pre lang="rust"><code>use ratatui::{
    crossterm::event::{self, Event},
    text::Text,
    Frame,
};
<p>fn main() {<br />
let mut terminal = ratatui::init();<br />
loop {<br />
terminal<br />
.draw(|frame: &amp;mut Frame| frame.render_widget(Text::raw(&quot;Hello
World!&quot;), frame.area()))<br />
.expect(&quot;Failed to draw&quot;);<br />
if matches!(event::read().expect(&quot;failed to read event&quot;),
Event::Key(_)) {<br />
break;<br />
}<br />
}<br />
ratatui::restore();<br />
}<br />
</code></pre></p>
<p>A type alias <code>DefaultTerminal</code> is added to represent this
terminal
type and to simplify any cases where applications need to pass this
terminal around. It is equivalent to:
<code>Terminal&lt;CrosstermBackend&lt;Stdout&gt;&gt;</code></p>
<p>We also added <code>ratatui::try_init()</code> and
<code>try_restore()</code>, for situations
where you might want to handle initialization errors yourself instead
of letting the panic handler fire and cleanup. Simple Apps should
prefer the <code>init</code> and <code>restore</code> functions over
these functions.</p>
<p>Corresponding functions to allow passing a
<code>TerminalOptions</code> with
a <code>Viewport</code> (e.g. inline, fixed) are also available
(<code>init_with_options</code>,
and <code>try_init_with_options</code>).</p>
<p>The existing code to create a backend and terminal will remain
and</p>
</blockquote>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3a90e2a761"><code>3a90e2a</code></a>
chore(release): prepare for 0.28.1 (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1343">#1343</a>)</li>
<li><a
href="65da535745"><code>65da535</code></a>
chore(ci): update release strategy (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1337">#1337</a>)</li>
<li><a
href="9ed85fd1dd"><code>9ed85fd</code></a>
docs(table): fix incorrect backticks in <code>TableState</code> docs (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1342">#1342</a>)</li>
<li><a
href="aed60b9839"><code>aed60b9</code></a>
fix(terminal): Terminal::insert_before would crash when called while the
view...</li>
<li><a
href="3631b34f53"><code>3631b34</code></a>
docs(examples): add widget implementation example (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1147">#1147</a>)</li>
<li><a
href="0d5f3c091f"><code>0d5f3c0</code></a>
test: Avoid unneeded allocations in assertions (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1335">#1335</a>)</li>
<li><a
href="ed51c4b342"><code>ed51c4b</code></a>
feat(terminal): Add ratatui::init() and restore() methods (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1289">#1289</a>)</li>
<li><a
href="23516bce76"><code>23516bc</code></a>
chore: rename ratatui-org to ratatui (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1334">#1334</a>)</li>
<li><a
href="6d1bd99544"><code>6d1bd99</code></a>
docs: minor grammar fixes (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1330">#1330</a>)</li>
<li><a
href="2fb0b8a741"><code>2fb0b8a</code></a>
fix: fix u16 overflow in Terminal::insert_before. (<a
href="https://redirect.github.com/ratatui/ratatui/issues/1323">#1323</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ratatui/ratatui/compare/v0.28.0...v0.28.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ratatui&package-manager=cargo&previous-version=0.28.0&new-version=0.28.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 23:53:44 -04:00
Mo
20c88aaa5b refactor: Avoid unneeded allocations (#1345) 2024-08-26 13:59:30 -07:00
Orhun Parmaksız
e02947be61 style(example): update panic message in minimal template (#1344) 2024-08-25 04:45:34 -07:00
Orhun Parmaksız
3a90e2a761 chore(release): prepare for 0.28.1 (#1343)
🧀 

The current release steps in reference to #1337

- Bump version in `Cargo.toml`
- `git cliff -u -p CHANGELOG.md -t v0.28.1`
- Merge the PR
- `git tag v0.28.1`
- `git push origin v0.28.1`

We can probably automate away most of these with `release-plz` when it
fully supports `git-cliff`'s GitHub integration.
2024-08-25 12:23:26 +03:00
Orhun Parmaksız
65da535745 chore(ci): update release strategy (#1337)
closes #1232 

Now we can trigger point releases by pushing a tag (follow the
instructions in `RELEASE.md`). This will create a release with generated
changelog.

There is still a lack of automation (e.g. updating `CHANGELOG.md`), but
this PR is a good start towards improving that.
2024-08-25 11:02:29 +03:00
Tayfun Bocek
9ed85fd1dd docs(table): fix incorrect backticks in TableState docs (#1342) 2024-08-24 14:26:37 -07:00
Neal Fachan
aed60b9839 fix(terminal): Terminal::insert_before would crash when called while the viewport filled the screen (#1329)
Reimplement Terminal::insert_before. The previous implementation would
insert the new lines in chunks into the area between the top of the
screen and the top of the (new) viewport. If the viewport filled the
screen, there would be no area in which to insert lines, and the
function would crash.

The new implementation uses as much of the screen as it needs to, all
the way up to using the whole screen.

This commit:
- adds a scrollback buffer to the `TestBackend` so that tests can
inspect and assert the state of the scrollback buffer in addition to the
screen
- adds functions to `TestBackend` to assert the state of the scrollback
- adds and updates `TestBackend` tests to test the behavior of the
scrollback and the new asserting functions
- reimplements `Terminal::insert_before`, including adding two new
helper functions `Terminal::draw_lines` and `Terminal::scroll_up`.
- updates the documentation for `Terminal::insert_before` to clarify
some of the edge cases
- updates terminal tests to assert the state of the scrollback buffer
- adds a new test for the condition that causes the bug
- adds a conversion constructor `Cell::from(char)`

Fixes: https://github.com/ratatui/ratatui/issues/999
2024-08-23 15:27:54 -07:00
Josh McKinney
3631b34f53 docs(examples): add widget implementation example (#1147)
This new example documents the various ways to implement widgets in
Ratatui. It demonstrates how to implement the `Widget` trait on a type,
a reference, and a mutable reference. It also shows how to use the
`WidgetRef` trait to render boxed widgets.
2024-08-23 14:30:23 -07:00
Mo
0d5f3c091f test: Avoid unneeded allocations in assertions (#1335)
A vector can be compared to an array.
2024-08-22 09:14:16 -07:00
Josh McKinney
ed51c4b342 feat(terminal): Add ratatui::init() and restore() methods (#1289)
These are simple opinionated methods for creating a terminal that is
useful to use in most apps. The new init method creates a crossterm
backend writing to stdout, enables raw mode, enters the alternate
screen, and sets a panic handler that restores the terminal on panic.

A minimal hello world now looks a bit like:

```rust
use ratatui::{
    crossterm::event::{self, Event},
    text::Text,
    Frame,
};

fn main() {
    let mut terminal = ratatui::init();
    loop {
        terminal
            .draw(|frame: &mut Frame| frame.render_widget(Text::raw("Hello World!"), frame.area()))
            .expect("Failed to draw");
        if matches!(event::read().expect("failed to read event"), Event::Key(_)) {
            break;
        }
    }
    ratatui::restore();
}
```

A type alias `DefaultTerminal` is added to represent this terminal
type and to simplify any cases where applications need to pass this
terminal around. It is equivalent to:
`Terminal<CrosstermBackend<Stdout>>`

We also added `ratatui::try_init()` and `try_restore()`, for situations
where you might want to handle initialization errors yourself instead
of letting the panic handler fire and cleanup. Simple Apps should
prefer the `init` and `restore` functions over these functions.

Corresponding functions to allow passing a `TerminalOptions` with
a `Viewport` (e.g. inline, fixed) are also available
(`init_with_options`,
and `try_init_with_options`).

The existing code to create a backend and terminal will remain and
is not deprecated by this approach. This just provides a simple one
line initialization using the common options.

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-08-22 15:16:35 +03:00
Josh McKinney
23516bce76 chore: rename ratatui-org to ratatui (#1334)
All urls updated to point at https://github.com/ratatui

To update your repository remotes, you can run the following commands:

```shell
git remote set-url origin https://github.com/ratatui/ratatui
```
2024-08-21 11:35:08 -07:00
Matt Armstrong
6d1bd99544 docs: minor grammar fixes (#1330) 2024-08-17 16:17:42 -07:00
Neal Fachan
2fb0b8a741 fix: fix u16 overflow in Terminal::insert_before. (#1323)
If the amount of characters in the screen above the viewport was greater
than u16::MAX, a multiplication would overflow. The multiply was used to
compute the maximum chunk size. The fix is to just do the multiplication
as a usize and also do the subsequent division as a usize.

There is currently another outstanding issue that limits the amount of
characters that can be inserted when calling Terminal::insert_before to
u16::MAX. However, this bug can still occur even if the viewport and the
amount of characters being inserted are both less than u16::MAX, since
it's dependant on how large the screen is above the viewport.

Fixes #1322
2024-08-13 21:06:49 -07:00
Josh McKinney
0256269a7f build: simplify Windows build (#1317)
Termion is not supported on Windows, so we need to avoid building it.

Adds a conditional dependency to the Cargo.toml file to only include
termion when the target is not Windows. This allows contributors to
build using the `--all-features` flag on Windows rather than needing
to specify the features individually.
2024-08-13 10:09:46 -07:00
Josh McKinney
345e6a1ebd fix: bump version to 0.5.0 (#69)
Updating Ratatui to 0.28 requires a major version bump
Fixes: https://github.com/ratatui-org/ratatui-macros/issues/68
2024-08-11 21:07:02 -07:00
Lucas Pickering
fdd5d8c092 fix(text): remove trailing newline from single-line Display trait impl (#1320) 2024-08-11 20:30:36 -07:00
EdJoPaTo
8b624f5952 chore(maintainers): remove EdJoPaTo (#1314) 2024-08-11 20:27:11 -07:00
Josh McKinney
57d8b742e5 chore(ci): use cargo-docs-rs to lint docs (#1318) 2024-08-11 20:09:57 -07:00
Josh McKinney
d5477b50d5 docs(examples): use ratatui::crossterm in examples (#1315) 2024-08-10 17:43:13 -07:00
github-actions[bot]
28f5a6dbd4 chore: release v0.4.4 (#63)
## 🤖 New release
* `ratatui-macros`: 0.4.3 -> 0.4.4

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.4.4](https://github.com/ratatui-org/ratatui-macros/compare/v0.4.3...v0.4.4)
- 2024-08-09

### Other
- *(deps)* bump ratatui to 0.28.0
([#66](https://github.com/ratatui-org/ratatui-macros/pull/66))
- *(deps)* bump trybuild from 1.0.98 to 1.0.99 in the cargo-dependencies
group ([#65](https://github.com/ratatui-org/ratatui-macros/pull/65))
- *(deps)* bump trybuild from 1.0.97 to 1.0.98 in the cargo-dependencies
group ([#62](https://github.com/ratatui-org/ratatui-macros/pull/62))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-08 21:58:05 -07:00
Josh McKinney
b75df78cdc chore(deps): bump ratatui to 0.28.0 (#66) 2024-08-08 21:56:13 -07:00
montmorillonite
730dfd4940 docs(examples): show line gauge in demo example (#1309) 2024-08-07 20:25:43 -07:00
EdJoPaTo
097ee86e39 docs: remove superfluous doc(inline) (#1310)
It's no longer needed since #1260
2024-08-07 20:25:07 -07:00
Jack Wills
3fdb5e8987 docs: fix typo in terminal.rs (#1313) 2024-08-07 19:34:21 -07:00
Orhun Parmaksız
ec88bb81e5 chore(release): prepare for 0.28.0 (#1295)
🧀
2024-08-07 14:56:01 +03:00
Josh McKinney
f04bf855cb perf: add buffer benchmarks (#1303) 2024-08-06 23:05:36 -07:00
Alex Saveau
4753b7241b perf(reflow): eliminate most WordWrapper allocations (#1239)
On large paragraphs (~1MB), this saves hundreds of thousands of
allocations.

TL;DR: reuse as much memory as possible across `next_line` calls.
Instead of allocating new buffers each time, allocate the buffers once
and clear them before reuse.

Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
2024-08-06 20:49:05 -07:00
Josh McKinney
36fa3c11c1 chore(deps): bump crossterm to 0.28.1 (#1304)
https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md\#version-0281
2024-08-07 00:09:38 +03:00
Josh McKinney
69e8ed7db8 chore(deps): remove anyhow from dev dependencies (#1305)
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-08-06 23:17:11 +03:00
Josh McKinney
5f7a7fbe19 docs(examples): update barcharts gifs (#1306) 2024-08-06 23:09:40 +03:00
Josh McKinney
e6d2e04bcf perf: move benchmarks into a single benchmark harness (#1302)
Consolidates the benchmarks into a single executable rather than having
to create a new cargo.toml setting per and makes it easier to rearrange
these when adding new benchmarks.
2024-08-06 05:31:13 -07:00
Josh McKinney
45fcab7497 chore: add rect::rows benchmark (#1301) 2024-08-06 05:30:07 -07:00
EdJoPaTo
1b9bdd425c docs(contributing): fix minor issues (#1300)
Co-authored-by: DeflateAwning <11021263+DeflateAwning@users.noreply.github.com>
2024-08-06 04:12:08 -07:00
EdJoPaTo
c68ee6c64a feat!: add get/set_cursor_position() methods to Terminal and Backend (#1284)
The new methods return/accept `Into<Position>` which can be either a Position or a (u16, u16) tuple.

```rust
backend.set_cursor_position(Position { x: 0, y: 20 })?;
let position = backend.get_cursor_position()?;
terminal.set_cursor_position((0, 20))?;
let position = terminal.set_cursor_position()?;
```
2024-08-06 04:10:28 -07:00
EdJoPaTo
afe15349c8 feat(chart)!: accept IntoIterator for axis labels (#1283)
BREAKING CHANGES: #1273 is already breaking and this only advances the
already breaking part
2024-08-06 11:39:44 +02:00
Josh McKinney
fe4eeab676 docs(examples): simplify the barchart example (#1079)
The `barchart` example has been split into two examples: `barchart` and
`barchart-grouped`. The `barchart` example now shows a simple barchart
with random data, while the `barchart-grouped` example shows a grouped
barchart with fake revenue data.

This simplifies the examples a bit so they don't cover too much at once.

- Simplify the rendering functions
- Fix several clippy lints that were marked as allowed

---------

Co-authored-by: EdJoPaTo <rfc-conform-git-commit-email@funny-long-domain-label-everyone-hates-as-it-is-too-long.edjopato.de>
2024-08-06 01:10:58 -07:00
Josh McKinney
a23ecd9b45 feat(buffer): add Buffer::cell, cell_mut and index implementations (#1084)
Code which previously called `buf.get(x, y)` or `buf.get_mut(x, y)`
should now use index operators, or be transitioned to `buff.cell()` or
`buf.cell_mut()` for safe access that avoids panics by returning
`Option<&Cell>` and `Option<&mut Cell>`.

The new methods accept `Into<Position>` instead of `x` and `y`
coordinates, which makes them more ergonomic to use.

```rust
let mut buffer = Buffer::empty(Rect::new(0, 0, 10, 10));

let cell = buf[(0, 0)];
let cell = buf[Position::new(0, 0)];

let symbol = buf.cell((0, 0)).map(|cell| cell.symbol());
let symbol = buf.cell(Position::new(0, 0)).map(|cell| cell.symbol());

buf[(0, 0)].set_symbol("🐀");
buf[Position::new(0, 0)].set_symbol("🐀");

buf.cell_mut((0, 0)).map(|cell| cell.set_symbol("🐀"));
buf.cell_mut(Position::new(0, 0)).map(|cell| cell.set_symbol("🐀"));
```

The existing `get()` and `get_mut()` methods are marked as deprecated.
These are fairly widely used and we will leave these methods around on
the buffer for a longer time than our normal deprecation approach (2
major release)

Addresses part of: https://github.com/ratatui-org/ratatui/issues/1011

---------

Co-authored-by: EdJoPaTo <rfc-conform-git-commit-email@funny-long-domain-label-everyone-hates-as-it-is-too-long.edjopato.de>
2024-08-06 00:40:47 -07:00
EdJoPaTo
bb71e5ffd4 docs(readme): remove MSRV (#1266)
This notice was useful when the `Cargo.toml` had no standardized field
for this. Now it's easier to look it up in the `Cargo.toml` and it's
also a single point of truth. Updating the README was overlooked for
quite some time so it's better to just omit it rather than having
something wrong that will be forgotten again in the future.
2024-08-05 22:04:48 -07:00
Orhun Parmaksız
f2fa1ae9aa docs(breaking-changes): add missing code block (#1291) 2024-08-05 20:25:01 -07:00
Orhun Parmaksız
f687af7c0d docs(breaking-changes): mention removed lifetime of ToText trait (#1292) 2024-08-05 20:18:58 -07:00
EdJoPaTo
f97e07c08a feat(frame): replace Frame::size() with Frame::area() (#1293)
Area is the more correct term for the result of this method.
The Frame::size() method is marked as deprecated and will be
removed around Ratatui version 0.30 or later.

Fixes: https://github.com/ratatui-org/ratatui/pull/1254#issuecomment-2268061409
2024-08-05 20:15:14 -07:00
dependabot[bot]
afc5cf2140 build(deps): bump trybuild from 1.0.98 to 1.0.99 in the cargo-dependencies group (#65)
Bumps the cargo-dependencies group with 1 update:
[trybuild](https://github.com/dtolnay/trybuild).

Updates `trybuild` from 1.0.98 to 1.0.99
<details>
<summary>Commits</summary>
<ul>
<li><a
href="831f5eff9d"><code>831f5ef</code></a>
Release 1.0.99</li>
<li><a
href="aeb7b06bb0"><code>aeb7b06</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/284">#284</a>
from dtolnay/default-features</li>
<li><a
href="fa107d668d"><code>fa107d6</code></a>
Keep track of whether manifest overrides workspace dependency's
default-features</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.98...1.0.99">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.98&new-version=1.0.99)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 22:01:40 -04:00
EdJoPaTo
bb68bc6968 refactor(backend)!: return Size from Backend::size instead of Rect (#1254)
The `Backend::size` method returns a `Size` instead of a `Rect`.
There is no need for the position here as it was always 0,0.
2024-08-05 17:36:50 -07:00
dependabot[bot]
ffeb8e46b9 chore(deps): update rstest requirement from 0.21.0 to 0.22.0 (#1297)
Updates the requirements on [rstest](https://github.com/la10736/rstest)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/releases">rstest's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.22.0</h2>
<p>Destructuring input data</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/blob/master/CHANGELOG.md">rstest's
changelog</a>.</em></p>
<blockquote>
<h2>[0.22.0] 2024/8/4</h2>
<h3>Changed</h3>
<ul>
<li>Now it's possible destructuring input values both for cases, values
and fixtures. See <a
href="https://redirect.github.com/la10736/rstest/issues/231">#231</a>
for details</li>
</ul>
<h3>Add</h3>
<ul>
<li>Implemented <code>#[ignore]</code> attribute to ignore test
parameters during fixtures resolution/injection. See <a
href="https://redirect.github.com/la10736/rstest/issues/228">#228</a>
for details</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Lot of typo in code</li>
</ul>
<h2>[0.21.0] 2024/6/1</h2>
<h3>Changed</h3>
<ul>
<li>Add feature <code>crate-name</code> enabled by default to opt-in
crate rename
support. See <a
href="https://redirect.github.com/la10736/rstest/issues/258">#258</a></li>
</ul>
<h2>[0.20.0] 2024/5/30</h2>
<h3>Add</h3>
<ul>
<li>Implemented <code>#[by_ref]</code> attribute to take get a local
lifetime for test arguments.
See <a
href="https://redirect.github.com/la10736/rstest/issues/241">#241</a>
for more details. Thanks to
<a href="https://github.com/narpfel"><code>@​narpfel</code></a> for
suggesting it and useful discussions.</li>
<li>Support for import <code>rstest</code> with another name. See <a
href="https://redirect.github.com/la10736/rstest/issues/221">#221</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Don't remove Lifetimes from test function if any. See <a
href="https://redirect.github.com/la10736/rstest/issues/230">#230</a>
<a href="https://redirect.github.com/la10736/rstest/issues/241">#241</a>
for more details.</li>
<li><a
href="https://doc.rust-lang.org/std/path/struct.PathBuf.html"><code>PathBuf</code></a>
does no longer need to be
in scope when using <code>#[files]</code> (see <a
href="https://redirect.github.com/la10736/rstest/pull/242">#242</a>)</li>
<li><code>#[from(now::accept::also::path::for::fixture)]</code> See <a
href="https://redirect.github.com/la10736/rstest/issues/246">#246</a>
for more details</li>
</ul>
<h2>[0.19.0] 2024/4/9</h2>
<h3>Changed</h3>
<ul>
<li>Defined <code>rust-version</code> for each crate (see <a
href="https://redirect.github.com/la10736/rstest/issues/227">#227</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>#[once]</code> fixtures now require the returned type to be
<a
href="https://doc.rust-lang.org/std/marker/trait.Sync.html"><code>Sync</code></a>
to prevent UB
when tests are executed in parallel. (see <a
href="https://redirect.github.com/la10736/rstest/issues/235">#235</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="62134281cf"><code>6213428</code></a>
Prepare 0.22.0</li>
<li><a
href="16591fdcef"><code>16591fd</code></a>
Make clippy happy</li>
<li><a
href="d40e785d74"><code>d40e785</code></a>
Merge pull request <a
href="https://redirect.github.com/la10736/rstest/issues/269">#269</a>
from la10736/fix_typos</li>
<li><a
href="9110f0cff7"><code>9110f0c</code></a>
Fix typo</li>
<li><a
href="696eaf63c1"><code>696eaf6</code></a>
Merge pull request <a
href="https://redirect.github.com/la10736/rstest/issues/268">#268</a>
from la10736/arg_destruct</li>
<li><a
href="39490761ca"><code>3949076</code></a>
Fixed warning in beta</li>
<li><a
href="d35ade2521"><code>d35ade2</code></a>
Docs and make clippy happy</li>
<li><a
href="40087a7aa3"><code>40087a7</code></a>
Implementation and integration tests</li>
<li><a
href="fcf732dc34"><code>fcf732d</code></a>
Merge pull request <a
href="https://redirect.github.com/la10736/rstest/issues/267">#267</a>
from marcobacis/ignore_parameter</li>
<li><a
href="cf9dd0bf51"><code>cf9dd0b</code></a>
update docs, simplified unit test</li>
<li>Additional commits viewable in <a
href="https://github.com/la10736/rstest/compare/v0.21.0...v0.22.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 17:31:01 -07:00
Josh McKinney
2fd5ae64bf docs(widgets): document stability of WidgetRef (#1288)
Addresses some confusion about when to implement `WidgetRef` vs `impl
Widget for &W`. Notes the stability rationale and links to an issue that
helps explain the context of where we're at in working this out.
2024-08-05 17:29:14 -07:00
Orhun Parmaksız
82b70fd329 chore(ci): integrate cargo-semver-checks (#1166)
>
[`cargo-semver-checks`](https://github.com/obi1kenobi/cargo-semver-checks):
Lint your crate API changes for semver violations.
2024-08-05 19:28:38 +03:00
dependabot[bot]
94328a2977 chore(deps): bump EmbarkStudios/cargo-deny-action from 1 to 2 (#1296)
Bumps
[EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action)
from 1 to 2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embarkstudios/cargo-deny-action/releases">EmbarkStudios/cargo-deny-action's
releases</a>.</em></p>
<blockquote>
<h2>Release 2.0.1 - cargo-deny 0.16.1</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/691">PR#691</a>
fixed an issue where workspace dependencies that used the current dir
'.' path component would incorrectly trigger the
<code>unused-workspace-dependency</code> lint.</li>
</ul>
<h2>Release 2.0.0 - cargo-deny 0.16.0</h2>
<h2><code>Action</code></h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny-action/pull/78">PR#78</a>
added SSH support, thanks <a
href="https://github.com/nagua"><code>@​nagua</code></a>!</li>
</ul>
<h3>Changed</h3>
<ul>
<li>This release includes breaking changes in cargo-deny, so this
release begins the <code>v2</code> tag, using <code>v1</code> will be
stable but not follow future <code>cargo-deny</code> releases.</li>
</ul>
<h2><code>cargo-deny</code></h2>
<h3>Removed</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/681">PR#681</a>
finished the deprecation introduced in <a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/611">PR#611</a>,
making the usage of the deprecated fields into errors.</li>
</ul>
<h4><code>[advisories]</code></h4>
<p>The following fields have all been removed in favor of denying all
advisories by default. To ignore an advisory the <a
href="https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html#the-ignore-field-optional"><code>ignore</code></a>
field can be used as before.</p>
<ul>
<li><code>vulnerability</code> - Vulnerability advisories are now
<code>deny</code> by default</li>
<li><code>unmaintained</code> - Unmaintained advisories are now
<code>deny</code> by default</li>
<li><code>unsound</code> - Unsound advisories are now <code>deny</code>
by default</li>
<li><code>notice</code> - Notice advisories are now <code>deny</code> by
default</li>
<li><code>severity-threshold</code> - The severity of vulnerabilities is
now irrelevant</li>
</ul>
<h4><code>[licenses]</code></h4>
<p>The following fields have all been removed in favor of denying all
licenses that are not explicitly allowed via either <a
href="https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html#the-allow-field-optional"><code>allow</code></a>
or <a
href="https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html#the-exceptions-field-optional"><code>exceptions</code></a>.</p>
<ul>
<li><code>unlicensed</code> - Crates whose license(s) cannot be
confidently determined are now always errors. The <a
href="https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html#the-clarify-field-optional"><code>clarify</code></a>
field can be used to help cargo-deny determine the license.</li>
<li><code>allow-osi-fsf-free</code> - The OSI/FSF Free attributes are
now irrelevant, only whether it is explicitly allowed.</li>
<li><code>copyleft</code> - The copyleft attribute is now irrelevant,
only whether it is explicitly allowed.</li>
<li><code>default</code> - The default is now <code>deny</code>.</li>
<li><code>deny</code> - All licenses are now denied by default, this
field added nothing.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/685">PR#685</a>
follows up on <a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/673">PR#673</a>,
moving the fields that were added to their own separate <a
href="https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html#the-workspace-dependencies-field-optional"><code>bans.workspace-dependencies</code></a>
section. This is an unannounced breaking change but is fairly minor and
0.15.0 was never released on github actions so the amount of people
affected by this will be (hopefully) small. This also makes the
workspace duplicate detection off by default since the field is
optional, <em>but</em> makes it so that if not specified workspace
duplicates are now <code>deny</code> instead of <code>warn</code>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/685">PR#685</a>
resolved <a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/issues/682">#682</a>
by adding the <code>include-path-dependencies</code> field, allowing
path dependencies to be ignored if it is <code>false</code>.</li>
</ul>
<h2>Release 1.6.3 - cargo-deny 0.14.21</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/643">PR#643</a>
resolved <a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/issues/629">#629</a>
by making the hosted git (github, gitlab, bitbucket) org/user name
comparison case-insensitive. Thanks <a
href="https://github.com/pmnlla"><code>@​pmnlla</code></a>!</li>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/649">PR#649</a>
fixed an issue where depending on the same crate multiple times by using
different <code>cfg()/triple</code> targets could cause features to be
resolved incorrectly and thus crates to be not pulled into the graph
used for checking.</li>
</ul>
<h2>[0.14.20] - 2024-03-23</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/pull/642">PR#642</a>
resolved <a
href="https://redirect.github.com/EmbarkStudios/cargo-deny/issues/641">#641</a>
by pinning <code>gix-transport</code> (and its unique dependencies) to
0.41.2 as a workaround for <code>cargo install</code> not using the
lockfile. See <a
href="https://redirect.github.com/Byron/gitoxide/issues/1328">this
issue</a> for more information.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8371184bd1"><code>8371184</code></a>
Bump to 0.16.1</li>
<li><a
href="08954043da"><code>0895404</code></a>
Move to v2 tag</li>
<li><a
href="10d8902cf9"><code>10d8902</code></a>
Bump to 0.16.0</li>
<li><a
href="d425dbf412"><code>d425dbf</code></a>
Update .gitignore</li>
<li><a
href="53bface5b1"><code>53bface</code></a>
Update image base</li>
<li><a
href="3f8dc3eed7"><code>3f8dc3e</code></a>
Add ability to fetch git dependecies in cargo via ssh (<a
href="https://redirect.github.com/embarkstudios/cargo-deny-action/issues/78">#78</a>)</li>
<li>See full diff in <a
href="https://github.com/embarkstudios/cargo-deny-action/compare/v1...v2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=EmbarkStudios/cargo-deny-action&package-manager=github_actions&previous-version=1&new-version=2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 19:18:21 +03:00
Orhun Parmaksız
d468463fc6 docs(breaking-changes): fix the PR link (#1294) 2024-08-05 15:02:26 +03:00
Josh McKinney
6e7b4e4d55 docs(examples): add async example (#1248)
This example demonstrates how to use Ratatui with widgets that fetch
data asynchronously. It uses the `octocrab` crate to fetch a list of
pull requests from the GitHub API. You will need an environment
variable named `GITHUB_TOKEN` with a valid GitHub personal access
token. The token does not need any special permissions.

Co-authored-by: Dheepak Krishnamurthy <me@kdheepak.com>
2024-08-04 22:26:56 -07:00
EdJoPaTo
864cd9ffef fix(TestBackend): prevent area mismatch (#1252)
Removes the height and width fields from TestBackend, which can get
out of sync with the Buffer, which currently clamps to 255,255.

This changes the `TestBackend` serde representation. It should be
possible to read older data, but data generated after this change
can't be read by older versions.
2024-08-04 18:34:08 -07:00
EdJoPaTo
c08b522d34 fix(chart): allow removing all the axis labels (#1282)
`axis.labels(vec![])` removes all the labels correctly.

This makes calling axis.labels with an empty Vec the equivalent
of not calling axis.labels. It's likely that this is never used, but it
prevents weird cases by removing the mix-up of `Option::None`
and `Vec::is_empty`, and simplifies the implementation code.
2024-08-04 16:41:20 -07:00
Josh McKinney
716c93136e docs: document crossterm breaking change (#1281) 2024-08-04 15:15:18 -07:00
Josh McKinney
5eeb1ccbc4 docs(github): Create CODE_OF_CONDUCT.md (#1279) 2024-08-04 17:26:02 +03:00
Josh McKinney
f77503050f docs: update main lib.rs / README examples (#1280) 2024-08-04 05:09:28 -07:00
dependabot[bot]
cd0d31c2dc chore(deps): update crossterm requirement from 0.27 to 0.28 (#1278)
Updates the requirements on
[crossterm](https://github.com/crossterm-rs/crossterm) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md">crossterm's
changelog</a>.</em></p>
<blockquote>
<h1>Version 0.28.1</h1>
<h2>Fixed 🐛</h2>
<ul>
<li>Fix broken build on linux when using <code>use-dev-tty</code> with
(<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/906">#906</a>)</li>
</ul>
<h2>Breaking ⚠️</h2>
<ul>
<li>Fix desync with mio and signalhook between repo and published crate.
(upgrade to mio 1.0)</li>
</ul>
<h1>Version 0.28</h1>
<h2>Added </h2>
<ul>
<li>Capture double click mouse events on windows (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/826">#826</a>)</li>
<li>(De)serialize Reset color (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/824">#824</a>)</li>
<li>Add functions to allow constructing <code>Attributes</code> in a
const context (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/817">#817</a>)</li>
<li>Implement <code>Display</code> for <code>KeyCode</code> and
<code>KeyModifiers</code> (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/862">#862</a>)</li>
</ul>
<h2>Changed ⚙️</h2>
<ul>
<li>Use Rustix by default instead of libc. Libc can be re-enabled if
necessary with the <code>libc</code> feature flag (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/892">#892</a>)</li>
<li><code>FileDesc</code> now requires a lifetime annotation.</li>
<li>Improve available color detection (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/885">#885</a>)</li>
<li>Speed up <code>SetColors</code> by ~15-25% (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/879">#879</a>)</li>
<li>Remove unsafe and unnecessary size argument from
<code>FileDesc::read()</code> (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/821">#821</a>)</li>
</ul>
<h2>Breaking ⚠️</h2>
<ul>
<li>Fix duplicate bit masks for caps lock and num lock (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/863">#863</a>).
This breaks serialization of <code>KeyEventState</code></li>
</ul>
<h1>Version 0.27.1</h1>
<h2>Added </h2>
<ul>
<li>Add support for (de)serializing <code>Reset</code>
<code>Color</code></li>
</ul>
<h1>Version 0.27</h1>
<h2>Added </h2>
<ul>
<li>Add <code>NO_COLOR</code> support (<a
href="https://no-color.org/">https://no-color.org/</a>)</li>
<li>Add option to force overwrite <code>NO_COLOR</code> (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/802">#802</a>)</li>
<li>Add support for scroll left/right events on windows and unix systems
(<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/788">#788</a>).</li>
<li>Add <code>window_size</code> function to fetch pixel width/height of
screen for more sophisticated rendering in terminals.</li>
<li>Add support for deserializing hex color strings to
<code>Color</code> e.g #fffff.</li>
</ul>
<h2>Changed ⚙️</h2>
<ul>
<li>Make the events module an optional feature <code>events</code> (to
make crossterm more lightweight) (<a
href="https://redirect.github.com/crossterm-rs/crossterm/issues/776">#776</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/crossterm-rs/crossterm/commits">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-04 03:34:38 -07:00
EdJoPaTo
41a910004d chore(github): use the GitHub organization team as codeowners (#1081)
Use GitHub organization team in CODEOWNERS and create MAINTAINERS.md
2024-08-04 11:28:54 +03:00
Josh McKinney
8433d0958b docs: update demo image (#1276)
Follow up to https://github.com/ratatui-org/ratatui/pull/1203
2024-08-04 11:06:37 +03:00
dependabot[bot]
f28b973006 build(deps): bump trybuild from 1.0.97 to 1.0.98 in the cargo-dependencies group (#62)
Bumps the cargo-dependencies group with 1 update:
[trybuild](https://github.com/dtolnay/trybuild).

Updates `trybuild` from 1.0.97 to 1.0.98
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.98</h2>
<ul>
<li>Fix enabling of default features for workspace dependencies (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/282">#282</a>,
thanks <a
href="https://github.com/gui1117"><code>@​gui1117</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a4f4171e55"><code>a4f4171</code></a>
Release 1.0.98</li>
<li><a
href="aa567ec542"><code>aa567ec</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/282">#282</a>
from gui1117/gui-fix-default-features</li>
<li><a
href="c08e3f76e6"><code>c08e3f7</code></a>
remove unused</li>
<li><a
href="cd88ca2bb4"><code>cd88ca2</code></a>
Fix default features</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.97...1.0.98">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.97&new-version=1.0.98)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-03 23:15:55 -04:00
Josh McKinney
8d4a1026ab feat(barchart)!: allow axes to accept Lines (#1273)
Fixes: https://github.com/ratatui-org/ratatui/issues/1272
2024-08-03 16:16:57 -07:00
Josh McKinney
edc2af9822 chore: replace big_text with hardcoded logo (#1203)
big_text.rs was a copy of the code from tui-big-text and was getting
gradually out of sync with the original crate. It was also rendering
something a bit different than the Ratatui logo. This commit replaces
the big_text.rs file with a much smaller string representation of the
Ratatui logo.

![demo2](https://raw.githubusercontent.com/ratatui-org/ratatui/images/examples/demo2-destroy.gif)
2024-08-03 16:08:59 -07:00
Josh McKinney
a80a8a6a47 style(format): lint markdown (#1131)
- **chore: Fix line endings for changelog**
- **chore: cleanup markdown lints**
- **ci: add Markdown linter**
- **build: add markdown lint to the makefile**

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-08-03 20:26:04 +03:00
Alex Saveau
29c8c84fd0 fix: ignore newlines in Span's Display impl (#1270) 2024-08-02 22:54:48 -07:00
Josh McKinney
c2d38509b4 chore: use LF line endings for CHANGELOG.md instead of CRLF (#1269) 2024-08-02 21:03:04 -07:00
josueBarretogit
b70cd03c02 feat: add ListState / TableState scroll_down_by() / scroll_up_by() methods (#1267)
Implement new methods `scroll_down_by(u16)` and `scroll_up_by(u16)` for
both `Liststate` and `Tablestate`.

Closes: #1207
2024-08-02 19:09:26 -07:00
EdJoPaTo
476ac87c99 ci: split up lint job (#1264)
This helps with identifying what failed right from the title. Also steps
after a failing one are now always executed.

Also shortens the steps a bit by removing obvious names.
2024-08-02 17:31:18 -07:00
EdJoPaTo
8857037bff docs(terminal): fix imports (#1263) 2024-08-02 21:37:05 +03:00
EdJoPaTo
e707ff11d1 refactor: internally use Position struct (#1256) 2024-08-02 20:55:41 +03:00
EdJoPaTo
a9fe4284ac chore: update cargo-deny config (#1265)
Update `cargo-deny` config (noticed in
https://github.com/ratatui-org/ratatui/pull/1263#pullrequestreview-2215488414)

See https://github.com/EmbarkStudios/cargo-deny/pull/611
2024-08-02 20:53:57 +03:00
EdJoPaTo
ffc4300558 chore: remove executable flag for rs files (#1262) 2024-08-02 05:11:23 -07:00
Josh McKinney
84cb16483a fix(terminal)!: make terminal module private (#1260)
This is a simplification of the public API that is helpful for new users
that are not familiar with how rust re-exports work, and helps avoid
clashes with other modules in the backends that are named terminal.

BREAKING CHANGE: The `terminal` module is now private and can not be
used directly. The types under this module are exported from the root of
the crate.

```diff
- use ratatui::terminal::{CompletedFrame, Frame, Terminal, TerminalOptions, ViewPort};
+ use ratatui::{CompletedFrame, Frame, Terminal, TerminalOptions, ViewPort};
```

Fixes: https://github.com/ratatui-org/ratatui/issues/1210
2024-08-02 04:18:00 -07:00
EdJoPaTo
5b89bd04a8 feat(layout): add Size::ZERO and Position::ORIGIN constants (#1253) 2024-08-02 03:56:39 -07:00
EdJoPaTo
32d0695cc2 test(buffer): ensure emojis are rendered (#1258) 2024-08-02 11:06:53 +02:00
Alex Saveau
cd93547db8 fix: remove unnecessary synchronization in layout cache (#1245)
Layout::init_cache no longer returns bool and takes a NonZeroUsize instead of usize

The cache is a thread-local, so doesn't make much sense to require
synchronized initialization.
2024-08-01 23:06:49 -07:00
Orhun Parmaksız
c245c13cc1 chore(ci): onboard bencher for tracking benchmarks (#1174)
https://bencher.dev/console/projects/ratatui-org

Closes: #1092
2024-08-01 22:35:51 -07:00
EdJoPaTo
b2aa843b31 feat(layout): enable serde for Margin, Position, Rect, Size (#1255) 2024-08-01 20:51:14 -07:00
EdJoPaTo
3ca920e881 fix(span): prevent panic on rendering out of y bounds (#1257) 2024-08-01 20:17:42 -07:00
Josh McKinney
b344f95b7c fix: only apply style to first line when rendering a Line (#1247)
A `Line` widget should only apply its style to the first line when
rendering and not the entire area. This is because the `Line` widget
should only render a single line of text. This commit fixes the issue by
clamping the area to a single line before rendering the text.
2024-07-27 17:23:21 -07:00
Josh McKinney
b304bb99bd chore(changelog): fixup git-cliff formatting (#1214)
- Replaced backticks surrounding body with blockquotes. This formats
  significantly better.
- Added a few postprocessors to remove junk like the PR template,
  horizontal lines and some trailing whitespace

---

Note: there is extra non-automatically generated stuff in the changelog
that this would remove - the changes to CHANGELOG.md should not be
merged as-is, and this is worth waiting for @orhun to check out.

Compare:
5e7fbe8c32/CHANGELOG.md
To: https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-07-27 11:39:00 +03:00
Tayfun Bocek
be3eb75ea5 perf(table): avoid extra allocations when rendering Table (#1242)
When rendering a `Table` the `Text` stored inside of a `Cell` gets
cloned before rendering. This removes the clone and uses `WidgetRef`
instead, saving us from allocating a `Vec<Line<'_>>` inside `Text`. Also
avoids an allocation when rendering the highlight symbol if it contains
an owned value.
2024-07-26 21:48:29 +03:00
Dheepak Krishnamurthy
efef0d0dc0 chore(ci): change label from breaking change to Type: Breaking Change (#1243)
This PR changes the label that is auto attached to a PR with a breaking
change per the conventional commits specification.
2024-07-26 21:48:05 +03:00
Tayfun Bocek
663486f1e8 perf(list): avoid extra allocations when rendering List (#1244)
When rendering a `List`, each `ListItem` would be cloned. Removing the
clone, and replacing `Widget::render` with `WidgetRef::render_ref` saves
us allocations caused by the clone of the `Text<'_>` stored inside of
`ListItem`.

Based on the results of running the "list" benchmark locally;
Performance is improved by %1-3 for all `render` benchmarks for `List`.
2024-07-26 21:47:30 +03:00
Alex Saveau
7ddfbc0010 fix: unnecessary allocations when creating Lines (#1237)
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
2024-07-26 01:55:04 -07:00
Josh McKinney
3725262ca3 feat(text): Add Add and AddAssign implementations for Line, Span, and Text (#1236)
This enables:

```rust
let line = Span::raw("Red").red() + Span::raw("blue").blue();
let line = Line::raw("Red").red() + Span::raw("blue").blue();
let line = Line::raw("Red").red() + Line::raw("Blue").blue();
let text = Line::raw("Red").red() + Line::raw("Blue").blue();
let text = Text::raw("Red").red() + Line::raw("Blue").blue();

let mut line = Line::raw("Red").red();
line += Span::raw("Blue").blue();

let mut text = Text::raw("Red").red();
text += Line::raw("Blue").blue();

line.extend(vec![Span::raw("1"), Span::raw("2"), Span::raw("3")]);
```
2024-07-26 01:37:49 -07:00
Josh McKinney
84f334163b fix: clippy lints from rust 1.80.0 (#1238) 2024-07-26 00:55:07 -07:00
airblast
03f3124c1d fix(paragraph): line_width, and line_count include block borders (#1235)
The `line_width`, and `line_count` methods for `Paragraph` would not
take into account the `Block` if one was set. This will now correctly
calculate the values including the `Block`'s width/height.

Fixes: #1233
2024-07-23 13:13:50 -07:00
Josh McKinney
c34fb77818 feat(text)!: remove unnecessary lifetime from ToText trait (#1234)
BREAKING CHANGE: The ToText trait no longer has a lifetime parameter.
This change simplifies the trait and makes it easier implement.
2024-07-22 04:24:30 -07:00
github-actions[bot]
f8a70ea9da chore: release v0.4.3 (#60)
## 🤖 New release
* `ratatui-macros`: 0.4.2 -> 0.4.3

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.4.3](https://github.com/ratatui-org/ratatui-macros/compare/v0.4.2...v0.4.3)
- 2024-07-22

### Added
- allow span macro to accept a bare expression
([#61](https://github.com/ratatui-org/ratatui-macros/pull/61))

### Other
- *(deps)* bump trybuild from 1.0.96 to 1.0.97 in the cargo-dependencies
group ([#59](https://github.com/ratatui-org/ratatui-macros/pull/59))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-22 03:53:13 -07:00
Josh McKinney
d0f75eb371 feat: allow span macro to accept a bare expression (#61)
This makes it possible to pass an expression directly to the `span!`
macro, which will be formatted into the display representation of the
expression using the `format!` macro.

```rust
let number = 123;
let test = "test";
span!(number);
span!(test);
```
2024-07-22 05:36:35 -04:00
Josh McKinney
6ce447c4f3 docs(block): add docs about style inheritance (#1190)
Fixes: https://github.com/ratatui-org/ratatui/issues/1129
2024-07-19 20:02:08 -07:00
Josh McKinney
272d0591a7 docs(paragraph): update main docs (#1202) 2024-07-18 15:59:48 -07:00
Josh McKinney
e81663bec0 refactor(list): split up list.rs into smaller modules (#1204) 2024-07-18 15:59:35 -07:00
EdJoPaTo
7e1bab049b fix(buffer): dont render control characters (#1226) 2024-07-17 13:22:00 +02:00
EdJoPaTo
379dab9cdb build: cleanup dev dependencies (#1231) 2024-07-16 04:35:54 -07:00
Josh McKinney
5b51018501 feat(chart): add GraphType::Bar (#1205)
![Demo](https://vhs.charm.sh/vhs-50v7I5n7lQF7tHCb1VCmFc.gif)
2024-07-15 20:47:50 -07:00
Josh McKinney
7bab9f0d80 chore: add more CompactString::const_new instead of new (#1230) 2024-07-15 20:29:32 -07:00
dependabot[bot]
6d210b3b6b chore(deps): update compact_str requirement from 0.7.1 to 0.8.0 (#1229)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-07-15 14:02:44 -07:00
Liv Haze
935a7187c2 docs(examples): add missing examples to README (#1225)
Resolves: #1014
2024-07-09 21:13:26 -07:00
Josh McKinney
3bb374df88 feat(terminal): add Terminal::try_draw() method (#1209)
This makes it easier to write fallible rendering methods that can use
the `?` operator

```rust
terminal.try_draw(|frame| {
    some_method_that_can_fail()?;
    another_faillible_method()?;
    Ok(())
})?;
```
2024-07-09 00:46:55 -07:00
Liv Haze
50e5674a20 docs(examples): fix typos in tape files (#1224) 2024-07-08 21:57:04 -07:00
dependabot[bot]
7eeb6afb3d build(deps): bump trybuild from 1.0.96 to 1.0.97 in the cargo-dependencies group (#59)
Bumps the cargo-dependencies group with 1 update:
[trybuild](https://github.com/dtolnay/trybuild).

Updates `trybuild` from 1.0.96 to 1.0.97
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.97</h2>
<ul>
<li>Normalize number of types listed in <em>&quot;the following other
types implement trait&quot;</em> diagnostics (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/277">#277</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="daeef9c9b0"><code>daeef9c</code></a>
Release 1.0.97</li>
<li><a
href="207b0a51a7"><code>207b0a5</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/278">#278</a>
from dtolnay/rustflags</li>
<li><a
href="1b8d4bdf07"><code>1b8d4bd</code></a>
Combine all rustflags into cargo --config arg</li>
<li><a
href="ef6893bf61"><code>ef6893b</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/277">#277</a>
from dtolnay/nothers</li>
<li><a
href="883a38daa0"><code>883a38d</code></a>
Ignore comparison_chain clippy lint</li>
<li><a
href="f3b1dab327"><code>f3b1dab</code></a>
Normalize the effect of --verbose on '$N others' diagnostic</li>
<li><a
href="6184f60b31"><code>6184f60</code></a>
Add test of 'following other types' diagnostic</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.96...1.0.97">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.96&new-version=1.0.97)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 18:56:23 -04:00
Liv Haze
810da72f26 docs(examples): fix hyperlink example tape (#1222) 2024-07-07 20:50:46 -07:00
Emi
7c0665cb0e docs(layout): fix typo in example (#1217) 2024-07-05 04:56:29 -07:00
Josh McKinney
ccf83e6d76 chore: update labels in issue templates (#1212) 2024-06-29 08:38:01 -07:00
Dheepak Krishnamurthy
8cecfdf2f6 chore: Update categories in Cargo.toml (#57) 2024-06-29 03:19:24 -04:00
github-actions[bot]
ca4fa0b9bf chore: release v0.4.2 (#53)
## 🤖 New release
* `ratatui-macros`: 0.4.1 -> 0.4.2

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.4.2](https://github.com/ratatui-org/ratatui-macros/compare/v0.4.1...v0.4.2)
- 2024-06-29

### Added
- Use `::ratatui` instead of `ratatui`
([#54](https://github.com/ratatui-org/ratatui-macros/pull/54))
- Add row! macro
([#52](https://github.com/ratatui-org/ratatui-macros/pull/52))

### Other
- Update README with row! documentation
([#56](https://github.com/ratatui-org/ratatui-macros/pull/56))
- Make doc examples shorter by removing duplicate imports
([#55](https://github.com/ratatui-org/ratatui-macros/pull/55))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-29 02:55:19 -04:00
Dheepak Krishnamurthy
89d7dd4603 docs: Update README with row! documentation (#56) 2024-06-29 00:59:10 -04:00
Dheepak Krishnamurthy
1b9e310300 docs: Make doc examples shorter by removing duplicate imports (#55)
Resolves comment from
https://github.com/ratatui-org/ratatui-macros/pull/52#discussion_r1656690843
2024-06-28 12:33:33 -04:00
Dheepak Krishnamurthy
8913e2ce1f feat: Use ::ratatui instead of ratatui (#54)
This PR uses `::ratatui` to ensure it doesn't clash with a module named
`ratatui` in an app, per comment
https://github.com/ratatui-org/ratatui-macros/pull/52#discussion_r1656670148

This PR also refactors some tests.
2024-06-28 09:16:42 -04:00
Dheepak Krishnamurthy
c7649575e7 feat: Add row! macro (#52)
This PR adds a `row!` macro similar to the existing `text!` and `line!`
macro.

This will allow code like this:

```rust
let rows = [
    Row::new([
        Cell::from("\u{f002}"),
        Cell::from("Find File"),
        Cell::from(Text::raw("ctrl+f").alignment(ratatui::layout::Alignment::Right)),
    ]),
    Row::new([
        Cell::from("\u{f021a}"),
        Cell::from("Open recent"),
        Cell::from(Text::raw("ctrl+r").alignment(ratatui::layout::Alignment::Right)),
    ]),
    Row::new([
        Cell::from("\u{f0493}"),
        Cell::from("Open config"),
        Cell::from(Text::raw("ctrl+k").alignment(ratatui::layout::Alignment::Right)),
    ]),
];
```

to be written like 

```rust
let rows = [
    row!["\u{f002}", "Find File", text!["ctrl+f"].right_aligned()],
    row!["\u{f021a}", "Open recent", text!["ctrl+r"].right_aligned()],
    row!["\u{f0493}", "Open config", text!["ctrl+k"].right_aligned()],
];
```
2024-06-28 00:15:01 -04:00
Josh McKinney
60bd7f4814 chore(deps): use instabilty instead of stabilty (#1208)
https://github.com/ratatui-org/instability
2024-06-27 08:44:52 -07:00
leohscl
55e0880d2f docs(block): update block documentation (#1206)
Update block documentation with constructor methods and setter methods
in the main doc comment Added an example for using it to surround
widgets

Fixes: https://github.com/ratatui-org/ratatui/issues/914
2024-06-27 04:13:47 -07:00
Josh McKinney
3e7458fdb8 chore(github): add forums and faqs to the issue template (#1201) 2024-06-25 23:13:43 +03:00
tranzystorekk
32a0b26525 refactor: simplify WordWrapper implementation (#1193) 2024-06-25 12:14:32 -07:00
Robert Soane
36d49e549b feat(table): select first, last, etc to table state (#1198)
Add select_previous, select_next, select_first & select_last to
TableState

Used equivalent API as in ListState
2024-06-25 10:45:59 -07:00
github-actions[bot]
ad54cf29ad chore: release v0.4.1 (#49)
## 🤖 New release
* `ratatui-macros`: 0.4.0 -> 0.4.1

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.4.1](https://github.com/ratatui-org/ratatui-macros/compare/v0.4.0...v0.4.1)
- 2024-06-24

### Other
- *(deps)* bump ratatui from 0.26.3 to 0.27.0 in the cargo-dependencies
group ([#51](https://github.com/ratatui-org/ratatui-macros/pull/51))
- Update dependabot.yml to group dependencies
([#50](https://github.com/ratatui-org/ratatui-macros/pull/50))
- *(deps)* bump ratatui from 0.26.2 to 0.26.3
([#48](https://github.com/ratatui-org/ratatui-macros/pull/48))
- *(deps)* bump trybuild from 1.0.95 to 1.0.96
([#47](https://github.com/ratatui-org/ratatui-macros/pull/47))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-24 17:52:29 -04:00
dependabot[bot]
a1acdcdc4c build(deps): bump ratatui from 0.26.3 to 0.27.0 in the cargo-dependencies group (#51)
Bumps the cargo-dependencies group with 1 update:
[ratatui](https://github.com/ratatui-org/ratatui).

Updates `ratatui` from 0.26.3 to 0.27.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/ratatui/releases">ratatui's
releases</a>.</em></p>
<blockquote>
<h2>v0.27.0</h2>
<!-- raw HTML omitted -->
<h2><a
href="https://github.com/ratatui-org/ratatui/releases/tag/v0.27.0">0.27.0</a>
- 2024-06-24</h2>
<p><em>“I can’t believe it! A real gourmet kitchen, and I get to watch!”
– Remy</em></p>
<p>We are excited to announce the new version of <code>ratatui</code> -
a Rust library that's all about cooking up TUIs 🐭</p>
<p>In this version, we have focused on enhancing usability and
functionality with new features like background styles for LineGauge,
palette colors, and various other improvements including improved
performance. Also, we added brand new examples for tracing and creating
hyperlinks!</p>
<p> <strong>Release highlights</strong>: <a
href="https://ratatui.rs/highlights/v027/">https://ratatui.rs/highlights/v027/</a></p>
<p>⚠️ List of breaking changes can be found <a
href="https://github.com/ratatui-org/ratatui/blob/main/BREAKING-CHANGES.md">here</a>.</p>
<h3>Features</h3>
<ul>
<li>
<p><a
href="eef1afe915">eef1afe</a>
<em>(linegauge)</em> Allow LineGauge background styles by <a
href="https://github.com/nowNick"><code>@​nowNick</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/565">#565</a></p>
<pre lang="text"><code>This PR deprecates `gauge_style` in favor of
`filled_style` and
`unfilled_style` which can have it's foreground and background styled.
<p><code>cargo run --example=line_gauge --features=crossterm</code>
</code></pre></p>
<p><a
href="https://github.com/ratatui-org/ratatui/assets/5149215/5fb2ce65-8607-478f-8be4-092e08612f5b">https://github.com/ratatui-org/ratatui/assets/5149215/5fb2ce65-8607-478f-8be4-092e08612f5b</a></p>
<p>Implements:<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/424">ratatui-org/ratatui#424</a></p>
</li>
<li>
<p><a
href="1365620606">1365620</a>
<em>(borders)</em> Add FULL and EMPTY border sets by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1182">#1182</a></p>
<p><code>border::FULL</code> uses a full block symbol, while
<code>border::EMPTY</code> uses an
empty space. This is useful for when you need to allocate space for the
border and apply the border style to a block without actually drawing a
border. This makes it possible to style the entire title area or a block
rather than just the title content.</p>
</li>
</ul>
<pre lang="rust"><code>use ratatui::{symbols::border, widgets::Block};
let block =
Block::bordered().title(&quot;Title&quot;).border_set(border::FULL);
let block =
Block::bordered().title(&quot;Title&quot;).border_set(border::EMPTY);
</code></pre>
<ul>
<li>
<p><a
href="7a48c5b11b">7a48c5b</a>
<em>(cell)</em> Add EMPTY and (const) new method by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1143">#1143</a></p>
<pre lang="text"><code>This simplifies calls to `Buffer::filled` in
tests.
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md">ratatui's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui-org/ratatui/releases/tag/v0.27.0">0.27.0</a>
- 2024-06-24</h2>
<p>In this version, we have focused on enhancing usability and
functionality with new features like
background styles for LineGauge, palette colors, and various other
improvements including
improved performance. Also, we added brand new examples for tracing and
creating hyperlinks!</p>
<p> <strong>Release highlights</strong>: <a
href="https://ratatui.rs/highlights/v027/">https://ratatui.rs/highlights/v027/</a></p>
<p>⚠️ List of breaking changes can be found <a
href="https://github.com/ratatui-org/ratatui/blob/main/BREAKING-CHANGES.md">here</a>.</p>
<h3>Features</h3>
<ul>
<li>
<p><a
href="eef1afe915">eef1afe</a>
<em>(linegauge)</em> Allow LineGauge background styles by <a
href="https://github.com/nowNick"><code>@​nowNick</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/565">#565</a></p>
<pre lang="text"><code>This PR deprecates `gauge_style` in favor of
`filled_style` and
`unfilled_style` which can have it's foreground and background styled.
<p><code>cargo run --example=line_gauge --features=crossterm</code>
</code></pre></p>
<p><a
href="https://github.com/ratatui-org/ratatui/assets/5149215/5fb2ce65-8607-478f-8be4-092e08612f5b">https://github.com/ratatui-org/ratatui/assets/5149215/5fb2ce65-8607-478f-8be4-092e08612f5b</a></p>
<p>Implements:<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/424">ratatui-org/ratatui#424</a></p>
</li>
<li>
<p><a
href="1365620606">1365620</a>
<em>(borders)</em> Add FULL and EMPTY border sets by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1182">#1182</a></p>
<p><code>border::FULL</code> uses a full block symbol, while
<code>border::EMPTY</code> uses an
empty space. This is useful for when you need to allocate space for the
border and apply the border style to a block without actually drawing a
border. This makes it possible to style the entire title area or a block
rather than just the title content.</p>
</li>
</ul>
<pre lang="rust"><code>use ratatui::{symbols::border, widgets::Block};
let block =
Block::bordered().title(&quot;Title&quot;).border_set(border::FULL);
let block =
Block::bordered().title(&quot;Title&quot;).border_set(border::EMPTY);
</code></pre>
<ul>
<li>
<p><a
href="7a48c5b11b">7a48c5b</a>
<em>(cell)</em> Add EMPTY and (const) new method by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1143">#1143</a></p>
<pre lang="text"><code>This simplifies calls to `Buffer::filled` in
tests.
</code></pre>
</li>
<li>
<p><a
href="3f2f2cd6ab">3f2f2cd</a>
<em>(docs)</em> Add tracing example by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1192">#1192</a></p>
<pre lang="text"><code>Add an example that demonstrates logging to a
file for:
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0a18dcb329"><code>0a18dcb</code></a>
chore(release): prepare for 0.27.0 (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1196">#1196</a>)</li>
<li><a
href="7ef2daee06"><code>7ef2dae</code></a>
feat(text): support constructing <code>Line</code> and <code>Text</code>
from <code>usize</code> (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1167">#1167</a>)</li>
<li><a
href="46977d8851"><code>46977d8</code></a>
feat(list)!: add list navigation methods (first, last, previous, next)
(<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1159">#1159</a>)</li>
<li><a
href="38bb196404"><code>38bb196</code></a>
docs(breaking-changes): mention <code>LineGauge::gauge_style</code> (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1194">#1194</a>)</li>
<li><a
href="1908b06b4a"><code>1908b06</code></a>
docs(borders): add missing closing code blocks (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1195">#1195</a>)</li>
<li><a
href="3f2f2cd6ab"><code>3f2f2cd</code></a>
feat(docs): add tracing example (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1192">#1192</a>)</li>
<li><a
href="efa965e1e8"><code>efa965e</code></a>
fix(line): remove newlines when converting strings to Lines (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1191">#1191</a>)</li>
<li><a
href="127d706ee4"><code>127d706</code></a>
fix(table): ensure render offset without selection properly (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1187">#1187</a>)</li>
<li><a
href="1365620606"><code>1365620</code></a>
feat(borders): Add FULL and EMPTY border sets (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1182">#1182</a>)</li>
<li><a
href="cd64367e24"><code>cd64367</code></a>
chore(symbols): add tests for line symbols (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1186">#1186</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ratatui-org/ratatui/compare/v0.26.3...v0.27.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ratatui&package-manager=cargo&previous-version=0.26.3&new-version=0.27.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 17:50:22 -04:00
Orhun Parmaksız
0a18dcb329 chore(release): prepare for 0.27.0 (#1196)
🧀

Highlights: https://github.com/ratatui-org/ratatui-website/pull/644
2024-06-24 13:59:16 +03:00
Orhun Parmaksız
7ef2daee06 feat(text): support constructing Line and Text from usize (#1167)
Now you can create `Line` and `Text` from numbers like so:

```rust
let line = Line::from(42);
let text = Text::from(666);
```

(I was doing little testing for my TUI app and saw that this isn't
supported - then I was like WHA and decided to make it happen ™️)
2024-06-24 13:23:33 +03:00
Josh McKinney
46977d8851 feat(list)!: add list navigation methods (first, last, previous, next) (#1159)
Also cleans up the list example significantly (see also
<https://github.com/ratatui-org/ratatui/issues/1157>)
    
Fixes: <https://github.com/ratatui-org/ratatui/pull/1159>
    
BREAKING CHANGE: The `List` widget now clamps the selected index to the
bounds of the list when navigating with `first`, `last`, `previous`, and
`next`, as well as when setting the index directly with `select`.
2024-06-24 11:37:22 +03:00
Orhun Parmaksız
38bb196404 docs(breaking-changes): mention LineGauge::gauge_style (#1194)
see #565
2024-06-24 11:27:22 +03:00
Orhun Parmaksız
1908b06b4a docs(borders): add missing closing code blocks (#1195) 2024-06-24 11:27:14 +03:00
Josh McKinney
3f2f2cd6ab feat(docs): add tracing example (#1192)
Add an example that demonstrates logging to a file for:

<https://forum.ratatui.rs/t/how-do-you-println-debug-your-tui-programs/66>

```shell
cargo run --example tracing
RUST_LOG=trace cargo run --example=tracing
cat tracing.log
```

![Made with VHS](https://vhs.charm.sh/vhs-21jgJCedh2YnFDONw0JW7l.gif)
2024-06-19 17:29:19 -07:00
Josh McKinney
efa965e1e8 fix(line): remove newlines when converting strings to Lines (#1191)
`Line::from("a\nb")` now returns a line with two `Span`s instead of 1
Fixes: https://github.com/ratatui-org/ratatui/issues/1111
2024-06-18 21:35:03 -07:00
Josh McKinney
127d706ee4 fix(table): ensure render offset without selection properly (#1187)
Fixes: <https://github.com/ratatui-org/ratatui/issues/1179>
2024-06-18 03:55:24 -07:00
Josh McKinney
1365620606 feat(borders): Add FULL and EMPTY border sets (#1182)
`border::FULL` uses a full block symbol, while `border::EMPTY` uses an
empty space. This is useful for when you need to allocate space for the
border and apply the border style to a block without actually drawing a
border. This makes it possible to style the entire title area or a block
rather than just the title content.

```rust
use ratatui::{symbols::border, widgets::Block};
let block = Block::bordered().title("Title").border_set(border::FULL);
let block = Block::bordered().title("Title").border_set(border::EMPTY);
```
2024-06-17 17:59:24 -07:00
Josh McKinney
cd64367e24 chore(symbols): add tests for line symbols (#1186) 2024-06-17 15:11:42 -07:00
Josh McKinney
07efde5233 docs(examples): add hyperlink example (#1063) 2024-06-17 15:11:02 -07:00
Josh McKinney
308c1df649 docs(readme): add links to forum (#1188) 2024-06-17 17:53:32 +03:00
thscharler
4bfdc15b80 fix: render of &str and String doesn't respect area.width (#1177) 2024-06-16 00:50:24 +02:00
EdJoPaTo
7d175f85c1 refactor(lint): fix new lint warnings (#1178) 2024-06-14 11:26:57 +02:00
Josh McKinney
d370aa75af fix(span): ensure that zero-width characters are rendered correctly (#1165) 2024-06-10 11:51:54 -07:00
Josh McKinney
7fdccafd52 docs(examples): add vhs tapes for constraint-explorer and minimal examples (#1164) 2024-06-08 19:28:07 +03:00
Josh McKinney
10d778866e feat(style): add conversions from the palette crate colors (#1172)
This is behind the "palette" feature flag.

```rust
use palette::{LinSrgb, Srgb};
use ratatui::style::Color;

let color = Color::from(Srgb::new(1.0f32, 0.0, 0.0));
let color = Color::from(LinSrgb::new(1.0f32, 0.0, 0.0));
```
2024-06-07 22:31:46 -07:00
Josh McKinney
e6871b9e21 fix: avoid unicode-width breaking change in tests (#1171)
unicode-width 0.1.13 changed the width of \u{1} from 0 to 1.
Our tests assumed that \u{1} had a width of 0, so this change replaces
the \u{1} character with \u{200B} (zero width space) in the tests.

Upstream issue (closed as won't fix):
https://github.com/unicode-rs/unicode-width/issues/55
2024-06-06 23:06:14 -07:00
Josh McKinney
4f307e69db docs(examples): simplify paragraph example (#1169)
Related: https://github.com/ratatui-org/ratatui/issues/1157
2024-06-05 17:41:46 -07:00
Josh McKinney
7f3efb02e6 fix: pin unicode-width crate to 0.1.13 (#1170)
semver breaking change in 0.1.13
<https://github.com/unicode-rs/unicode-width/issues/55>

<!-- Please read CONTRIBUTING.md before submitting any pull request. -->
2024-06-05 17:26:45 -07:00
Josh McKinney
7b45f74b71 chore(prelude)!: add / remove items (#1149)
his PR removes the items from the prelude that don't form a coherent
common vocabulary and adds the missing items that do.

Based on a comment at
<https://www.reddit.com/r/rust/comments/1cle18j/comment/l2uuuh7/>

BREAKING CHANGE:
The following items have been removed from the prelude:
- `style::Styled` - this trait is useful for widgets that want to
  support the Stylize trait, but it adds complexity as widgets have two
  `style` methods and a `set_style` method.
- `symbols::Marker` - this item is used by code that needs to draw to
  the `Canvas` widget, but it's not a common item that would be used by
  most users of the library.
- `terminal::{CompletedFrame, TerminalOptions, Viewport}` - these items
  are rarely used by code that needs to interact with the terminal, and
  they're generally only ever used once in any app.

The following items have been added to the prelude:
- `layout::{Position, Size}` - these items are used by code that needs
  to interact with the layout system. These are newer items that were
  added in the last few releases, which should be used more liberally.
2024-06-04 20:59:51 -07:00
Josh McKinney
1520ed9d10 feat(layout): impl Display for Position and Size (#1162) 2024-06-03 18:54:50 -07:00
dependabot[bot]
2a74f9d8c1 chore(deps): update rstest requirement from 0.19.0 to 0.21.0 (#1163)
Updates the requirements on [rstest](https://github.com/la10736/rstest)
to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/releases">rstest's
releases</a>.</em></p>
<blockquote>
<h2>0.21.0</h2>
<p>Use <code>crate-name</code> feature to enable the crate rename
support (enabled by default)</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/la10736/rstest/blob/master/CHANGELOG.md">rstest's
changelog</a>.</em></p>
<blockquote>
<h2>[0.21.0] 2024/6/1</h2>
<h3>Changed</h3>
<ul>
<li>Add feature <code>crate-name</code> enabled by default to opt-in
crate rename
support. See <a
href="https://redirect.github.com/la10736/rstest/issues/258">#258</a></li>
</ul>
<h2>[0.20.0] 2024/5/30</h2>
<h3>Add</h3>
<ul>
<li>Implemented <code>#[by_ref]</code> attribute to take get a local
lifetime for test arguments.
See <a
href="https://redirect.github.com/la10736/rstest/issues/241">#241</a>
for more details. Thanks to
<a href="https://github.com/narpfel"><code>@​narpfel</code></a> for
suggesting it and useful discussions.</li>
<li>Support for import <code>rstest</code> with another name. See <a
href="https://redirect.github.com/la10736/rstest/issues/221">#221</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Don't remove Lifetimes from test function if any. See <a
href="https://redirect.github.com/la10736/rstest/issues/230">#230</a>
<a href="https://redirect.github.com/la10736/rstest/issues/241">#241</a>
for more details.</li>
<li><a
href="https://doc.rust-lang.org/std/path/struct.PathBuf.html"><code>PathBuf</code></a>
does no longer need to be
in scope when using <code>#[files]</code> (see <a
href="https://redirect.github.com/la10736/rstest/pull/242">#242</a>)</li>
<li><code>#[from(now::accept::also::path::for::fixture)]</code> See <a
href="https://redirect.github.com/la10736/rstest/issues/246">#246</a>
for more details</li>
</ul>
<h2>[0.19.0] 2024/4/9</h2>
<h3>Changed</h3>
<ul>
<li>Defined <code>rust-version</code> for each crate (see <a
href="https://redirect.github.com/la10736/rstest/issues/227">#227</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>
<p><code>#[once]</code> fixtures now require the returned type to be
<a
href="https://doc.rust-lang.org/std/marker/trait.Sync.html"><code>Sync</code></a>
to prevent UB
when tests are executed in parallel. (see <a
href="https://redirect.github.com/la10736/rstest/issues/235">#235</a>
for more details)</p>
</li>
<li>
<p><code>#[future(awt)]</code> and <code>#[awt]</code> now properly
handle mutable (<code>mut</code>) parameters by treating futures as
immutable and
treating the awaited rebinding as mutable.</p>
</li>
</ul>
<h2>[0.18.2] 2023/8/13</h2>
<h3>Changed</h3>
<ul>
<li>Now <code>#[files]</code> accept also parent folders (see <a
href="https://redirect.github.com/la10736/rstest/issues/205">#205</a>
for more details).</li>
</ul>
<h2>[0.18.1] 2023/7/5</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="38da6bfb96"><code>38da6bf</code></a>
Prepare 0.21.0 Release</li>
<li><a
href="ca69788392"><code>ca69788</code></a>
bump version rstest_test to 0.13.0</li>
<li><a
href="b6b43c6740"><code>b6b43c6</code></a>
Clean chackoutlist</li>
<li><a
href="fef4f7b4f4"><code>fef4f7b</code></a>
Implemented Opt-in crate-name support Fix <a
href="https://redirect.github.com/la10736/rstest/issues/258">#258</a></li>
<li><a
href="236be92a8a"><code>236be92</code></a>
Build should use build tests target</li>
<li><a
href="8fde5be94f"><code>8fde5be</code></a>
Prepare next changelog</li>
<li><a
href="f29e6346fe"><code>f29e634</code></a>
Dependency should have a n explicit version to be published</li>
<li><a
href="e27ad2a4db"><code>e27ad2a</code></a>
Removed empty section</li>
<li><a
href="3867794483"><code>3867794</code></a>
Fixed docs</li>
<li><a
href="b90fb8e092"><code>b90fb8e</code></a>
Fix checkout list</li>
<li>Additional commits viewable in <a
href="https://github.com/la10736/rstest/compare/v0.19.0...v0.21.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 19:38:06 +03:00
dependabot[bot]
d7ed6c8bad chore(deps)!: update termion requirement from 3.0 to 4.0 (#1106)
Updates the requirements on termion to permit the latest version.

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>

BREAKING CHANGE: Changelog:
<https://gitlab.redox-os.org/redox-os/termion/-/blob/master/CHANGELOG.md>
A change is only necessary if you were matching on all variants of the
`MouseEvent` enum without a
wildcard. In this case, you need to either handle the two new variants,
`MouseLeft` and
`MouseRight`, or add a wildcard.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-06-02 18:30:46 -07:00
dependabot[bot]
313135c68e chore(deps): update itertools requirement from 0.12 to 0.13 (#1120)
Updates the requirements on
[itertools](https://github.com/rust-itertools/itertools) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md">itertools's
changelog</a>.</em></p>
<blockquote>
<h2>0.13.0</h2>
<h3>Breaking</h3>
<ul>
<li>Removed implementation of <code>DoubleEndedIterator</code> for
<code>ConsTuples</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/853">#853</a>)</li>
<li>Made <code>MultiProduct</code> fused and fixed on an empty iterator
(<a
href="https://redirect.github.com/rust-itertools/itertools/issues/835">#835</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/834">#834</a>)</li>
<li>Changed <code>iproduct!</code> to return tuples for maxi one
iterator too (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/870">#870</a>)</li>
<li>Changed <code>PutBack::put_back</code> to return the old value (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/880">#880</a>)</li>
<li>Removed deprecated <code>repeat_call, Itertools::{foreach, step,
map_results, fold_results}</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/878">#878</a>)</li>
<li>Removed <code>TakeWhileInclusive::new</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/912">#912</a>)</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added <code>Itertools::{smallest_by, smallest_by_key, largest,
largest_by, largest_by_key}</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/654">#654</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/885">#885</a>)</li>
<li>Added <code>Itertools::tail</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/899">#899</a>)</li>
<li>Implemented <code>DoubleEndedIterator</code> for
<code>ProcessResults</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/910">#910</a>)</li>
<li>Implemented <code>Debug</code> for <code>FormatWith</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/931">#931</a>)</li>
<li>Added <code>Itertools::get</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/891">#891</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Deprecated <code>Itertools::group_by</code> (renamed
<code>chunk_by</code>) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/866">#866</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/879">#879</a>)</li>
<li>Deprecated <code>unfold</code> (use <code>std::iter::from_fn</code>
instead) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/871">#871</a>)</li>
<li>Optimized <code>GroupingMapBy</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/873">#873</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/876">#876</a>)</li>
<li>Relaxed <code>Fn</code> bounds to <code>FnMut</code> in
<code>diff_with, Itertools::into_group_map_by</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/886">#886</a>)</li>
<li>Relaxed <code>Debug/Clone</code> bounds for <code>MapInto</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/889">#889</a>)</li>
<li>Documented the <code>use_alloc</code> feature (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/887">#887</a>)</li>
<li>Optimized <code>Itertools::set_from</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/888">#888</a>)</li>
<li>Removed badges in <code>README.md</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/890">#890</a>)</li>
<li>Added &quot;no-std&quot; categories in <code>Cargo.toml</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/894">#894</a>)</li>
<li>Fixed <code>Itertools::k_smallest</code> on short unfused iterators
(<a
href="https://redirect.github.com/rust-itertools/itertools/issues/900">#900</a>)</li>
<li>Deprecated <code>Itertools::tree_fold1</code> (renamed
<code>tree_reduce</code>) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/895">#895</a>)</li>
<li>Deprecated <code>GroupingMap::fold_first</code> (renamed
<code>reduce</code>) (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/902">#902</a>)</li>
<li>Fixed <code>Itertools::k_smallest(0)</code> to consume the iterator,
optimized <code>Itertools::k_smallest(1)</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/909">#909</a>)</li>
<li>Specialized <code>Combinations::nth</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/914">#914</a>)</li>
<li>Specialized <code>MergeBy::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/920">#920</a>)</li>
<li>Specialized <code>CombinationsWithReplacement::nth</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/923">#923</a>)</li>
<li>Specialized <code>FlattenOk::{fold, rfold}</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/927">#927</a>)</li>
<li>Specialized <code>Powerset::nth</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/924">#924</a>)</li>
<li>Documentation fixes (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/882">#882</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/936">#936</a>)</li>
<li>Fixed <code>assert_equal</code> for iterators longer than
<code>i32::MAX</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/932">#932</a>)</li>
<li>Updated the <code>must_use</code> message of non-lazy
<code>KMergeBy</code> and <code>TupleCombinations</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/939">#939</a>)</li>
</ul>
<h3>Notable Internal Changes</h3>
<ul>
<li>Tested iterator laziness (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/792">#792</a>)</li>
<li>Created <code>CONTRIBUTING.md</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/767">#767</a>)</li>
</ul>
<h2>0.12.1</h2>
<h3>Added</h3>
<ul>
<li>Documented iteration order guarantee for
<code>Itertools::[tuple_]combinations</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/822">#822</a>)</li>
<li>Documented possible panic in <code>iterate</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/842">#842</a>)</li>
<li>Implemented <code>Clone</code> and <code>Debug</code> for
<code>Diff</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/845">#845</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d5084d15e9"><code>d5084d1</code></a>
Prepare v0.13.0 release (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/937">#937</a>)</li>
<li><a
href="d7c99d55da"><code>d7c99d5</code></a>
<code>TupleCombinations</code> is not lazy but must be used
nonetheless</li>
<li><a
href="074c7fcc07"><code>074c7fc</code></a>
<code>KMergeBy</code> is not lazy but must be used nonetheless</li>
<li><a
href="2ad9e07ae8"><code>2ad9e07</code></a>
<code>assert_equal</code>: fix
<code>clippy::default_numeric_fallback</code></li>
<li><a
href="0d4efc8432"><code>0d4efc8</code></a>
Remove free function <code>get</code></li>
<li><a
href="05cc0ee256"><code>05cc0ee</code></a>
<code>get(s..=usize::MAX)</code> should be fine when <code>s !=
0</code></li>
<li><a
href="3c16f14baa"><code>3c16f14</code></a>
<code>get</code>: when is it ESI and/or DEI</li>
<li><a
href="4dd6ba0e7c"><code>4dd6ba0</code></a>
<code>get</code>: panics if the range includes
<code>usize::MAX</code></li>
<li><a
href="7a9ce56fc5"><code>7a9ce56</code></a>
<code>get(r: Range)</code> as <code>Skip\&lt;Take&gt;</code></li>
<li><a
href="f676f2f964"><code>f676f2f</code></a>
Remove the unspecified check about
<code>.get(exhausted_range_inclusive)</code></li>
<li>Additional commits viewable in <a
href="https://github.com/rust-itertools/itertools/compare/v0.12.0...v0.13.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
Dependabot will merge this PR once CI passes on it, as requested by
@joshka.

[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-06-02 18:18:36 -07:00
Josh McKinney
8061813f32 refactor: expand glob imports (#1152)
Consensus is that explicit imports make it easier to understand the
example code. This commit removes the prelude import from all examples
and replaces it with the necessary imports, and expands other glob
imports (widget::*, Constraint::*, KeyCode::*, etc.) everywhere else.
Prelude glob imports not in examples are not covered by this PR.

See https://github.com/ratatui-org/ratatui/issues/1150 for more details.
2024-05-29 04:42:29 -07:00
Josh McKinney
74a32afbae feat: re-export backends from the ratatui crate (#1151)
`crossterm`, `termion`, and `termwiz` can now be accessed as
`ratatui::{crossterm, termion, termwiz}` respectively. This makes it
possible to just add the Ratatui crate as a dependency and use the
backend of choice without having to add the backend crates as
dependencies.

To update existing code, replace all instances of `crossterm::` with
`ratatui::crossterm::`, `termion::` with `ratatui::termion::`, and
`termwiz::` with `ratatui::termwiz::`.
2024-05-28 13:23:39 -07:00
EdJoPaTo
4ce67fc84e perf(buffer)!: filled moves the cell to be filled (#1148) 2024-05-27 11:07:27 -07:00
EdJoPaTo
df4b706674 style: enable more rustfmt settings (#1125) 2024-05-26 19:50:10 +02:00
EdJoPaTo
8b447ec4d6 perf(rect)!: Rect::inner takes Margin directly instead of reference (#1008)
BREAKING CHANGE: Margin needs to be passed without reference now.

```diff
-let area = area.inner(&Margin {
+let area = area.inner(Margin {
     vertical: 0,
     horizontal: 2,
 });
```
2024-05-26 19:44:46 +02:00
EdJoPaTo
7a48c5b11b feat(cell): add EMPTY and (const) new method (#1143)
This simplifies calls to `Buffer::filled` in tests.
2024-05-25 14:08:56 -07:00
Josh McKinney
8cfc316bcc chore: alphabetize examples in Cargo.toml (#1145) 2024-05-25 14:03:37 -07:00
EdJoPaTo
2f8a9363fc docs: fix links on docs.rs (#1144)
This also results in a more readable Cargo.toml as the locations of the
things are more obvious now.

Includes rewording of the underline-color feature.

Logs of the errors: https://docs.rs/crate/ratatui/0.26.3/builds/1224962
Also see #989
2024-05-25 10:38:33 -07:00
EdJoPaTo
d92997105b refactor: dont manually impl Default for defaults (#1142)
Replace `impl Default` by `#[derive(Default)]` when its implementation
equals.
2024-05-25 10:34:48 -07:00
EdJoPaTo
42cda6d287 fix: prevent panic from string_slice (#1140)
<https://rust-lang.github.io/rust-clippy/master/index.html#string_slice>
2024-05-25 15:15:08 +02:00
EdJoPaTo
4f7791079e refactor(padding): Add Padding::ZERO as a constant (#1133)
Deprecate Padding::zero()
2024-05-24 23:48:05 -07:00
EdJoPaTo
cf67ed9b88 refactor(lint): use clippy::or_fun_call (#1138)
<https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call>
2024-05-24 18:33:19 -07:00
EdJoPaTo
8a60a561c9 refactor: needless_pass_by_ref_mut (#1137)
<https://rust-lang.github.io/rust-clippy/master/index.html#needless_pass_by_ref_mut>
2024-05-24 18:32:22 -07:00
Dheepak Krishnamurthy
35941809e1 feat!: Make Stylize's .bg(color) generic (#1103) 2024-05-24 18:05:45 -07:00
EdJoPaTo
73fd367a74 refactor(block): group builder pattern methods (#1134) 2024-05-24 18:04:35 -07:00
EdJoPaTo
1de9a82b7a refactor: simplify if let (#1135)
While looking through lints
[`clippy::option_if_let_else`](https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else)
found these. Other findings are more complex so I skipped them.
2024-05-24 18:03:51 -07:00
EdJoPaTo
d6587bc6b0 test(style): use rstest (#1136)
<!-- Please read CONTRIBUTING.md before submitting any pull request. -->
2024-05-24 18:02:59 -07:00
Matt Armstrong
f429f688da docs(examples): Remove lifetimes from the List example (#1132)
Simplify the List example by removing lifetimes not strictly necessary
to demonstrate how Ratatui lists work. Instead, the sample strings are
copied into each `TodoItem`. To further simplify, I changed the code to
use a new TodoItem::new function, rather than an implementation of the
`From` trait.
2024-05-24 15:09:24 -07:00
Valentin271
4770e71581 refactor(list)!: remove deprecated start_corner and Corner (#759)
`List::start_corner` was deprecated in v0.25. Use `List::direction` and
`ListDirection` instead.

```diff
- list.start_corner(Corner::TopLeft);
- list.start_corner(Corner::TopRight);
// This is not an error, BottomRight rendered top to bottom previously
- list.start_corner(Corner::BottomRight);
// all becomes
+ list.direction(ListDirection::TopToBottom);
```

```diff
- list.start_corner(Corner::BottomLeft);
// becomes
+ list.direction(ListDirection::BottomToTop);
```

`layout::Corner` is removed entirely.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-05-24 11:52:01 -07:00
Mikołaj Nowak
eef1afe915 feat(LineGauge): allow LineGauge background styles (#565)
This PR deprecates `gauge_style` in favor of `filled_style` and
`unfilled_style` which can have it's foreground and background styled.

`cargo run --example=line_gauge --features=crossterm`

https://github.com/ratatui-org/ratatui/assets/5149215/5fb2ce65-8607-478f-8be4-092e08612f5b

Implements: <https://github.com/ratatui-org/ratatui/issues/424>

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-05-24 11:42:52 -07:00
EdJoPaTo
257db6257f refactor(cell): must_use and simplify style() (#1124)
<!-- Please read CONTRIBUTING.md before submitting any pull request. -->
2024-05-21 23:26:32 -07:00
EdJoPaTo
70df102de0 build(bench): improve benchmark consistency (#1126)
Codegen units are optimized on their own. Per default bench / release
have 16 codegen units. What ends up in a codeget unit is rather random
and can influence a benchmark result as a code change can move stuff
into a different codegen unit → prevent / allow LLVM optimizations
unrelated to the actual change.

More details: https://doc.rust-lang.org/cargo/reference/profiles.html
2024-05-21 23:12:31 -07:00
EdJoPaTo
bf2036987f refactor(cell): reset instead of applying default (#1127)
Using reset is clearer to me what actually happens. On the other case a
struct is created to override the old one completely which basically
does the same in a less clear way.
2024-05-21 22:11:45 -07:00
Enrico Borba
0b5fd6bf8e feat: add writer() and writer_mut() to termion and crossterm backends (#991)
It is sometimes useful to obtain access to the writer if we want to see
what has been written so far. For example, when using &mut [u8] as a
writer.

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-05-21 10:34:07 -07:00
Dheepak Krishnamurthy
39d5a745ac chore: Update dependabot.yml to group dependencies (#50) 2024-05-20 21:18:41 -07:00
dependabot[bot]
2f97d35bd8 build(deps): bump ratatui from 0.26.2 to 0.26.3 (#48)
Bumps [ratatui](https://github.com/ratatui-org/ratatui) from 0.26.2 to
0.26.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/ratatui/releases">ratatui's
releases</a>.</em></p>
<blockquote>
<h2>v0.26.3</h2>
<!-- raw HTML omitted -->
<h2><a
href="https://github.com/ratatui-org/ratatui/releases/tag/v0.26.3">0.26.3</a>
- 2024-05-19</h2>
<p>We are happy to announce a brand new <a
href="https://forum.ratatui.rs"><strong>Ratatui Forum</strong></a> 🐭 for
Rust &amp; TUI enthusiasts.</p>
<p>This is a patch release that fixes the unicode truncation bug, adds
performance and quality of life improvements.</p>
<p> <strong>Release highlights</strong>: <a
href="https://ratatui.rs/highlights/v0263/">https://ratatui.rs/highlights/v0263/</a></p>
<h3>Features</h3>
<ul>
<li>
<p><a
href="97ee102f17">97ee102</a>
<em>(buffer)</em> Track_caller for index_of by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1046">#1046</a>
**</p>
<pre lang="text"><code>The caller put in the wrong x/y -&gt; the caller
is the cause.
</code></pre>
</li>
<li>
<p><a
href="bf0923473c">bf09234</a>
<em>(table)</em> Make TableState::new const by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1040">#1040</a></p>
</li>
<li>
<p><a
href="eb281df974">eb281df</a>
<em>(uncategorized)</em> Use inner Display implementation by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1097">#1097</a></p>
</li>
<li>
<p><a
href="ec763af851">ec763af</a>
<em>(uncategorized)</em> Make Stylize's <code>.bg(color)</code> generic
by <a href="https://github.com/kdheepak"><code>@​kdheepak</code></a> in
<a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1099">#1099</a></p>
<pre lang="text"><code>This PR makes `.bg(color)` generic accepting
anything that can be
converted into `Color`; similar to the `.fg(color)` method on the same
trait
</code></pre>
</li>
<li>
<p><a
href="4d1784f2de">4d1784f</a>
<em>(uncategorized)</em> Re-export ParseColorError as
style::ParseColorError by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1086">#1086</a></p>
<p>Fixes:<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1085">ratatui-org/ratatui#1085</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p><a
href="366cbae09f">366cbae</a>
<em>(buffer)</em> Fix Debug panic and fix formatting of overridden parts
by <a href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in
<a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1098">#1098</a></p>
<pre lang="text"><code>Fix panic in `Debug for Buffer` when `width ==
0`.
Also corrects the output when symbols are overridden.
</code></pre>
</li>
<li>
<p><a
href="4392759501">4392759</a>
<em>(examples)</em> Changed user_input example to work with multi-byte
unicode chars by <a
href="https://github.com/OkieOth"><code>@​OkieOth</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1069">#1069</a></p>
<pre lang="text"><code>This is the proposed solution for issue
[#1068](https://github.com/ratatui-org/ratatui/issues/1068). It solves
the bug in the
user_input example with multi-byte UTF-8 characters as input.
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md">ratatui's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ratatui-org/ratatui/releases/tag/v0.26.3">0.26.3</a>
- 2024-05-19</h2>
<p>We are happy to announce a brand new <a
href="https://forum.ratatui.rs"><strong>Ratatui Forum</strong></a> 🐭 for
Rust &amp; TUI enthusiasts.</p>
<p>This is a patch release that fixes the unicode truncation bug, adds
performance and quality of life improvements.</p>
<p> <strong>Release highlights</strong>: <a
href="https://ratatui.rs/highlights/v0263/">https://ratatui.rs/highlights/v0263/</a></p>
<h3>Features</h3>
<ul>
<li>
<p><a
href="97ee102f17">97ee102</a>
<em>(buffer)</em> Track_caller for index_of by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1046">#1046</a>
**</p>
<pre lang="text"><code>The caller put in the wrong x/y -&gt; the caller
is the cause.
</code></pre>
</li>
<li>
<p><a
href="bf0923473c">bf09234</a>
<em>(table)</em> Make TableState::new const by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1040">#1040</a></p>
</li>
<li>
<p><a
href="eb281df974">eb281df</a>
<em>(uncategorized)</em> Use inner Display implementation by <a
href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1097">#1097</a></p>
</li>
<li>
<p><a
href="ec763af851">ec763af</a>
<em>(uncategorized)</em> Make Stylize's <code>.bg(color)</code> generic
by <a href="https://github.com/kdheepak"><code>@​kdheepak</code></a> in
<a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1099">#1099</a></p>
<pre lang="text"><code>This PR makes `.bg(color)` generic accepting
anything that can be
converted into `Color`; similar to the `.fg(color)` method on the same
trait
</code></pre>
</li>
<li>
<p><a
href="4d1784f2de">4d1784f</a>
<em>(uncategorized)</em> Re-export ParseColorError as
style::ParseColorError by <a
href="https://github.com/joshka"><code>@​joshka</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1086">#1086</a></p>
<p>Fixes:<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1085">ratatui-org/ratatui#1085</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p><a
href="366cbae09f">366cbae</a>
<em>(buffer)</em> Fix Debug panic and fix formatting of overridden parts
by <a href="https://github.com/EdJoPaTo"><code>@​EdJoPaTo</code></a> in
<a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1098">#1098</a></p>
<pre lang="text"><code>Fix panic in `Debug for Buffer` when `width ==
0`.
Also corrects the output when symbols are overridden.
</code></pre>
</li>
<li>
<p><a
href="4392759501">4392759</a>
<em>(examples)</em> Changed user_input example to work with multi-byte
unicode chars by <a
href="https://github.com/OkieOth"><code>@​OkieOth</code></a> in <a
href="https://redirect.github.com/ratatui-org/ratatui/pull/1069">#1069</a></p>
<pre lang="text"><code>This is the proposed solution for issue
[#1068](https://github.com/ratatui-org/ratatui/issues/1068). It solves
the bug in the
user_input example with multi-byte UTF-8 characters as input.
</code></pre>
<p>Fixes:<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1068">#1068</a></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fadc73d62e"><code>fadc73d</code></a>
chore(release): prepare for 0.26.3 (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1118">#1118</a>)</li>
<li><a
href="fcb5d589bb"><code>fcb5d58</code></a>
fix: make cargo test --doc work with unstable-widget-ref examples (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1117">#1117</a>)</li>
<li><a
href="4955380932"><code>4955380</code></a>
build: remove pre-push hooks (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1115">#1115</a>)</li>
<li><a
href="828d17a3f5"><code>828d17a</code></a>
docs: add minimal example (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1114">#1114</a>)</li>
<li><a
href="9bd89c218a"><code>9bd89c2</code></a>
refactor(clippy): enable breaking lint checks (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/988">#988</a>)</li>
<li><a
href="2cfe82a47e"><code>2cfe82a</code></a>
refactor(buffer): deprecate assert_buffer_eq! in favor of assert_eq! (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1007">#1007</a>)</li>
<li><a
href="1a4bb1cbb8"><code>1a4bb1c</code></a>
perf(layout): avoid allocating memory when using split ergonomic utils
(<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1105">#1105</a>)</li>
<li><a
href="839cca20bf"><code>839cca2</code></a>
docs(table): Fix typo in docs for highlight_symbol (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1108">#1108</a>)</li>
<li><a
href="f945a0bcff"><code>f945a0b</code></a>
docs(test): fix typo in TestBackend documentation (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1107">#1107</a>)</li>
<li><a
href="eb281df974"><code>eb281df</code></a>
feat: use inner Display implementation (<a
href="https://redirect.github.com/ratatui-org/ratatui/issues/1097">#1097</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ratatui-org/ratatui/compare/v0.26.2...v0.26.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ratatui&package-manager=cargo&previous-version=0.26.2&new-version=0.26.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-20 18:00:08 -04:00
dependabot[bot]
fafabb8dab build(deps): bump trybuild from 1.0.95 to 1.0.96 (#47)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.95 to
1.0.96.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/trybuild/releases">trybuild's
releases</a>.</em></p>
<blockquote>
<h2>1.0.96</h2>
<ul>
<li>Support Windows builds that have OUT_DIR prefixed with
<code>\\?\</code> (<a
href="https://redirect.github.com/dtolnay/trybuild/issues/271">#271</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b1b7064b7a"><code>b1b7064</code></a>
Release 1.0.96</li>
<li><a
href="742c6b3583"><code>742c6b3</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/trybuild/issues/271">#271</a>
from dtolnay/windows</li>
<li><a
href="7c8c3640f6"><code>7c8c364</code></a>
Support OUT_DIR located in \?\ path on Windows</li>
<li>See full diff in <a
href="https://github.com/dtolnay/trybuild/compare/1.0.95...1.0.96">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trybuild&package-manager=cargo&previous-version=1.0.95&new-version=1.0.96)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-20 17:59:51 -04:00
Orhun Parmaksız
fadc73d62e chore(release): prepare for 0.26.3 (#1118)
🧀

---------

Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-05-20 15:20:29 +03:00
Josh McKinney
fcb5d589bb fix: make cargo test --doc work with unstable-widget-ref examples (#1117) 2024-05-19 16:18:45 -07:00
Josh McKinney
4955380932 build: remove pre-push hooks (#1115) 2024-05-18 22:09:15 -07:00
Josh McKinney
828d17a3f5 docs: add minimal example (#1114) 2024-05-18 21:18:59 -07:00
github-actions[bot]
4ac4d9d3ab chore: release v0.4.0 (#46)
## 🤖 New release
* `ratatui-macros`: 0.3.1 -> 0.4.0 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.4.0](https://github.com/ratatui-org/ratatui-macros/compare/v0.3.1...v0.4.0)
- 2024-05-15

### Added
- *(layout)* [**breaking**] Use `*=` instead of `=*`
([#45](https://github.com/ratatui-org/ratatui-macros/pull/45))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Dheepak Krishnamurthy <me@kdheepak.com>
2024-05-15 02:17:57 -04:00
Dheepak Krishnamurthy
be8def9639 feat(layout)!: Use *= instead of =* (#45)
This is a follow up to
https://github.com/ratatui-org/ratatui-macros/pull/34

`*=` is more consistent with the other symbols, e.g. `<=`, `>=`.

It is also more in line with what other programming languages do.

```
$ python
Python 3.10.13 | packaged by conda-forge | (main, Oct 26 2023, 18:09:17) [Clang 16.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 1
>>> x *= 2
>>> x
2
```

`=*` throws an error. 

```
>>> x =* 2
  File "<stdin>", line 1
SyntaxError: can't use starred expression here
>>>
```
2024-05-15 02:09:54 -04:00
EdJoPaTo
9bd89c218a refactor(clippy): enable breaking lint checks (#988)
We need to make sure to not change existing methods without a notice.
But at the same time this also finds public additions with mistakes
before they are even released which is what I would like to have.

This renames a method and deprecated the old name hinting to a new name.
Should this be mentioned somewhere, so it's added to the release notes?
It's not breaking because the old method is still there.
2024-05-13 18:16:09 -07:00
EdJoPaTo
2cfe82a47e refactor(buffer): deprecate assert_buffer_eq! in favor of assert_eq! (#1007)
- Simplify `assert_buffer_eq!` logic.
- Deprecate `assert_buffer_eq!`.
- Introduce `TestBackend::assert_buffer_lines`.

Also simplify many tests involving buffer comparisons.

For the deprecation, just use `assert_eq` instead of `assert_buffer_eq`:

```diff
-assert_buffer_eq!(actual, expected);
+assert_eq!(actual, expected);
```

---

I noticed `assert_buffer_eq!` creating no test coverage reports and
looked into this macro. First I simplified it. Then I noticed a bunch of
`assert_eq!(buffer, …)` and other indirect usages of this macro (like
`TestBackend::assert_buffer`).

The good thing here is that it's mainly used in tests so not many
changes to the library code.
2024-05-13 18:13:46 -07:00
tranzystorekk
1a4bb1cbb8 perf(layout): avoid allocating memory when using split ergonomic utils (#1105)
Don't create intermediate vec in `Layout::areas` and
`Layout::spacers` when there's no need for one.
2024-05-13 16:54:34 -07:00
Dheepak Krishnamurthy
839cca20bf docs(table): Fix typo in docs for highlight_symbol (#1108) 2024-05-13 16:38:34 -04:00
Orhun Parmaksız
f945a0bcff docs(test): fix typo in TestBackend documentation (#1107) 2024-05-13 23:15:09 +03:00
EdJoPaTo
eb281df974 feat: use inner Display implementation (#1097) 2024-05-13 01:36:39 -07:00
Josh McKinney
28e81c0714 build: add underline-color to all features flag in makefile (#1100) 2024-05-13 01:34:52 -07:00
github-actions[bot]
ae2868c0e0 chore: release v0.3.1 (#42)
## 🤖 New release
* `ratatui-macros`: 0.3.0 -> 0.3.1 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.3.1](https://github.com/ratatui-org/ratatui-macros/compare/v0.3.0...v0.3.1)
- 2024-05-13

### Added
- Better error messages for `span!` macro
([#43](https://github.com/ratatui-org/ratatui-macros/pull/43))

### Fixed
- downgrade ratatui to 0.26.2
([#41](https://github.com/ratatui-org/ratatui-macros/pull/41))

### Other
- Update authors to ratatui developers
([#44](https://github.com/ratatui-org/ratatui-macros/pull/44))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-12 23:20:06 -04:00
Dheepak Krishnamurthy
f71d1ac73e chore: Update authors to ratatui developers (#44) 2024-05-12 23:16:54 -04:00
Dheepak Krishnamurthy
c50b01d098 feat: Better error messages for span! macro (#43)
With this PR, if a user accidentally uses `,` as a separator when the
first argument is a style, they'll will get a better compiler error
message:

<img width="748" alt="image"
src="https://github.com/ratatui-org/ratatui-macros/assets/1813121/58ec025c-56c8-4a4a-998f-7a48a6b327fd">

This also updates the docstrings to reiterate that `,` must be used for
format specifier and `;` must be used for style.
2024-05-12 23:13:15 -04:00
Josh McKinney
204307fa50 fix: downgrade ratatui to 0.26.2 (#41)
0.27.0 alpha release is not necessary as the changes were actually made in 0.26.2
2024-05-12 19:15:59 -04:00
Dheepak Krishnamurthy
76e5fe5a9a chore: Revert "Make Stylize's .bg(color) generic" (#1102)
This reverts commit ec763af851 from #1099
2024-05-12 19:05:00 -04:00
github-actions[bot]
f78d3bfec3 chore: release v0.3.0 (#40)
chore: release

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-12 15:20:49 -07:00
EdJoPaTo
366cbae09f fix(buffer): fix Debug panic and fix formatting of overridden parts (#1098)
Fix panic in `Debug for Buffer` when `width == 0`.
Also corrects the output when symbols are overridden.
2024-05-12 14:57:40 -07:00
Dheepak Krishnamurthy
ec763af851 feat: Make Stylize's .bg(color) generic (#1099)
This PR makes `.bg(color)` generic accepting anything that can be
converted into `Color`; similar to the `.fg(color)` method on the same
trait
2024-05-12 13:23:08 -04:00
Josh McKinney
699c2d7c8d fix: unicode truncation bug (#1089)
- Rewrote the line / span rendering code to take into account how
multi-byte / wide emoji characters are truncated when rendering into
areas that cannot accommodate them in the available space
- Added comprehensive coverage over the edge cases
- Adds a benchmark to ensure perf

Fixes: https://github.com/ratatui-org/ratatui/issues/1032
Co-authored-by: EdJoPaTo <rfc-conform-git-commit-email@funny-long-domain-label-everyone-hates-as-it-is-too-long.edjopato.de>
Co-authored-by: EdJoPaTo <github@edjopato.de>
2024-05-11 19:28:38 -07:00
EdJoPaTo
3cc29bdada test(block): use rstest to simplify test cases (#1095) 2024-05-11 11:03:02 -07:00
Josh McKinney
8de3d52469 chore(changelog): put commit id on the same line as the message (#1093) 2024-05-11 15:30:08 +03:00
Josh McKinney
b30411d1c7 fix: termwiz underline color test (#1094)
Fixes code that doesn't compile in the termwiz tests when
underline-color feature is enabled.
2024-05-10 20:04:58 -07:00
Dheepak Krishnamurthy
6cf08d4a2f fix: Update repo url in Cargo.toml (#39) 2024-05-09 00:50:30 -04:00
Dheepak Krishnamurthy
93372f35c1 feat: Use release-plz (#38) 2024-05-09 00:44:46 -04:00
Dheepak Krishnamurthy
3855c3a84a feat: Add text! macro (#36)
Co-authored-by: EdJoPaTo <github@edjopato.de>
2024-05-08 20:24:05 -04:00
Dheepak Krishnamurthy
570c358681 docs: Use .areas(area) instead of .split(area).to_vec().try_into().unwrap() (#37) 2024-05-08 08:46:43 -04:00
Dheepak Krishnamurthy
8ecdd892f5 feat: Add fill constraint (#34)
Co-authored-by: EdJoPaTo <github@edjopato.de>
2024-05-08 04:49:23 -04:00
Dheepak Krishnamurthy
0dc5b2d2e0 feat!: Remove color palette! macro (#32)
feat: Remove color palette macro
2024-05-08 04:44:46 -04:00
Dheepak Krishnamurthy
8060f7bc57 docs: Update README.md with short description of span and line macros (#33) 2024-05-07 22:30:53 -04:00
Dheepak Krishnamurthy
d24747d469 chore: format using cargo +nightly fmt (#31) 2024-05-07 22:21:00 -04:00
Dheepak Krishnamurthy
a0c35f1d7b feat: Replace raw! and styled! with span! macro (#30) 2024-05-07 21:45:52 -04:00
Dheepak Krishnamurthy
9a7467b305 feat: Add line! attribute macro (#29)
* feat: Add line attribute macro

Co-authored-by: EdJoPaTo <github@edjopato.de>
Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
2024-05-07 21:34:01 -04:00
dependabot[bot]
f6d49dde14 build(deps): bump ratatui from 0.27.0-alpha.3 to 0.27.0-alpha.5 (#27)
Bumps [ratatui](https://github.com/ratatui-org/ratatui) from 0.27.0-alpha.3 to 0.27.0-alpha.5.
- [Release notes](https://github.com/ratatui-org/ratatui/releases)
- [Changelog](https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ratatui-org/ratatui/compare/v0.27.0-alpha.3...v0.27.0-alpha.5)

---
updated-dependencies:
- dependency-name: ratatui
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 21:53:06 -04:00
dependabot[bot]
07aff91b01 build(deps): bump trybuild from 1.0.91 to 1.0.93 (#28)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.91 to 1.0.93.
- [Release notes](https://github.com/dtolnay/trybuild/releases)
- [Commits](https://github.com/dtolnay/trybuild/compare/1.0.91...1.0.93)

---
updated-dependencies:
- dependency-name: trybuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 20:32:48 -04:00
dependabot[bot]
bf02106029 build(deps): bump ratatui from 0.27.0-alpha.2 to 0.27.0-alpha.3 (#24)
Bumps [ratatui](https://github.com/ratatui-org/ratatui) from 0.27.0-alpha.2 to 0.27.0-alpha.3.
- [Release notes](https://github.com/ratatui-org/ratatui/releases)
- [Changelog](https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ratatui-org/ratatui/compare/v0.27.0-alpha.2...v0.27.0-alpha.3)

---
updated-dependencies:
- dependency-name: ratatui
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 18:46:07 -07:00
dependabot[bot]
2c6f324b9a build(deps): bump trybuild from 1.0.90 to 1.0.91 (#23)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.90 to 1.0.91.
- [Release notes](https://github.com/dtolnay/trybuild/releases)
- [Commits](https://github.com/dtolnay/trybuild/compare/1.0.90...1.0.91)

---
updated-dependencies:
- dependency-name: trybuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 18:45:41 -07:00
dependabot[bot]
6f52350ecf build(deps): bump trybuild from 1.0.88 to 1.0.90 (#20)
Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.88 to 1.0.90.
- [Release notes](https://github.com/dtolnay/trybuild/releases)
- [Commits](https://github.com/dtolnay/trybuild/compare/1.0.88...1.0.90)

---
updated-dependencies:
- dependency-name: trybuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:04:07 -07:00
dependabot[bot]
dcba0bcd5d build(deps): bump ratatui from 0.27.0-alpha.0 to 0.27.0-alpha.2 (#22)
Bumps [ratatui](https://github.com/ratatui-org/ratatui) from 0.27.0-alpha.0 to 0.27.0-alpha.2.
- [Release notes](https://github.com/ratatui-org/ratatui/releases)
- [Changelog](https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ratatui-org/ratatui/compare/v0.27.0-alpha.0...v0.27.0-alpha.2)

---
updated-dependencies:
- dependency-name: ratatui
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:03:56 -07:00
dependabot[bot]
b4aacb045e build(deps): bump mio from 0.8.10 to 0.8.11 (#18)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:03:41 -07:00
dependabot[bot]
dce1e4b138 build(deps): bump ratatui from 0.26.0-alpha.1 to 0.27.0-alpha.0 (#19)
Bumps [ratatui](https://github.com/ratatui-org/ratatui) from 0.26.0-alpha.1 to 0.27.0-alpha.0.
- [Release notes](https://github.com/ratatui-org/ratatui/releases)
- [Changelog](https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ratatui-org/ratatui/compare/v0.26.0-alpha.1...v0.27.0-alpha.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-12 10:35:53 -04:00
Josh McKinney
6b9417db5f build: add cargo husky pre-commit hook (#8) 2024-01-15 13:50:52 -08:00
Josh McKinney
5d5a1ccb0b ci: Create dependabot.yml (#7) 2024-01-13 01:23:59 -08:00
Josh McKinney
91cd81aaa0 ci: use rust cache to cache deps (#6)
https://github.com/marketplace/actions/rust-cache
2024-01-13 01:20:50 -08:00
Josh McKinney
f33d51e7d9 feat(text): add raw! and styled! macros (#4)
These macros are similar to the format! macro, but return a raw or
styled Span instead of a String.

```rust
use ratatui_macros::{raw, styled};

let name = "world";
raw!("Hello, {name}!");
styled!(Style::new().green(), "Hello, {name}!");
styled!(Color::Green, "Hello, {name}!");
styled!(Modifier::BOLD, "Hello, {name}!");
```
2024-01-13 00:45:38 -08:00
Josh McKinney
2c02a56bce docs: readme tweaks (#5) 2024-01-13 00:33:14 -08:00
Dheepak Krishnamurthy
7d23bd2cea docs: Update README.md 2024-01-13 02:02:35 -05:00
Dheepak Krishnamurthy
778f2f5ec5 docs: Update README.md 2024-01-13 02:02:14 -05:00
Dheepak Krishnamurthy
0a0997702d docs: Update README.md 2024-01-10 10:57:41 -05:00
Dheepak Krishnamurthy
5cee13ab6d docs: Update README.md 2024-01-10 10:51:55 -05:00
Dheepak Krishnamurthy
903bb0ae32 docs: Add link to ratatui 2024-01-09 15:17:17 -05:00
Dheepak Krishnamurthy
21aa3232d7 feat: Remove keywords 2024-01-09 15:01:08 -05:00
Dheepak Krishnamurthy
38b2f27efe docs: Update README.md 📚 2024-01-09 13:54:31 -05:00
Dheepak Krishnamurthy
7419475975 docs: Update README.md 📚 2024-01-09 13:54:09 -05:00
Dheepak Krishnamurthy
b820c0c7e4 docs: Update README.md 📚 2024-01-09 13:53:33 -05:00
Dheepak Krishnamurthy
bd90e3d928 build(release): Bump to v0.2.4 🛠 2024-01-09 13:53:08 -05:00
Dheepak Krishnamurthy
c6d2cee3e9 Merge pull request #3 from kdheepak/color
feat: Add pub visibility to color 
2024-01-09 13:52:16 -05:00
Dheepak Krishnamurthy
39bd72b1f7 feat: Add pub visibility to color 2024-01-09 13:48:05 -05:00
Dheepak Krishnamurthy
8f35437d5a feat: Add colors into keywords 2024-01-09 13:33:55 -05:00
Dheepak Krishnamurthy
4756526829 build(release): Bump to v0.2.3 🛠 2024-01-09 13:22:12 -05:00
Dheepak Krishnamurthy
819499d6ff Merge pull request #2 from kdheepak/color
feat: Add color palette based on tailwindcss 
2024-01-09 13:12:17 -05:00
Dheepak Krishnamurthy
29edc3a7a3 feat: Add color palette based on tailwindcss 2024-01-09 13:09:36 -05:00
Dheepak Krishnamurthy
92540b2f6a docs: Improved documentation 📚 2024-01-09 02:26:53 -05:00
Dheepak Krishnamurthy
30d9daa59b build(release): Bump to v0.2.2 🛠 2024-01-09 02:21:45 -05:00
Dheepak Krishnamurthy
fa88152c80 docs: Update docstrings 📚 2024-01-09 02:21:32 -05:00
Dheepak Krishnamurthy
63441e259b build(release): Bump to v0.2.1 🛠 2024-01-09 02:16:30 -05:00
Dheepak Krishnamurthy
693003314a docs: Add examples 📚 2024-01-09 02:15:50 -05:00
Dheepak Krishnamurthy
68b55a12a2 docs: Remove syntax 📚 2024-01-09 02:13:27 -05:00
Dheepak Krishnamurthy
20e41f1d1d docs: Update README 📚 2024-01-09 02:04:30 -05:00
Dheepak Krishnamurthy
2dc81833c6 docs: Improve README examples 📚 2024-01-09 01:56:59 -05:00
Dheepak Krishnamurthy
12aa58601d docs: Improve README examples 📚 2024-01-09 01:55:46 -05:00
Dheepak Krishnamurthy
57a0a34f92 docs: Improve README examples 📚 2024-01-09 01:52:57 -05:00
Dheepak Krishnamurthy
76d1e5b173 docs: Improve README examples 📚 2024-01-09 01:50:32 -05:00
Dheepak Krishnamurthy
8b32f82b4d docs: Update README with better tests 📚 2024-01-09 01:44:34 -05:00
Dheepak Krishnamurthy
131b9ec417 docs: Update README with better tests 📚 2024-01-09 01:44:10 -05:00
Dheepak Krishnamurthy
57b681b053 docs: Update README with better tests 📚 2024-01-09 01:38:26 -05:00
Dheepak Krishnamurthy
31a2c4548c docs: Update README with better examples 📚 2024-01-09 01:36:03 -05:00
Dheepak Krishnamurthy
b7f8ec0ff9 build(release): Bump to v0.2.0 🛠 2024-01-09 01:29:30 -05:00
Dheepak Krishnamurthy
2e684c6500 Merge pull request #1 from deifactor/simpler
Simplify implementation of `constraints!` macro
2024-01-09 01:28:24 -05:00
Dheepak Krishnamurthy
9acdab32df docs: Add comments explaining rules 📚 2024-01-09 01:22:44 -05:00
Dheepak Krishnamurthy
06af14107e fix: Remove compile_error rule that never triggers 🐛 2024-01-09 01:11:38 -05:00
Dheepak Krishnamurthy
77dea441e5 feat: Update tests that fail 2024-01-09 01:11:05 -05:00
Dheepak Krishnamurthy
bc73f2dcbe feat: Add test for not supporting trailing comma 2024-01-09 01:06:51 -05:00
Dheepak Krishnamurthy
a4bb143e47 feat: Better trybuild test suite 2024-01-09 00:49:42 -05:00
Dheepak Krishnamurthy
38490ff8da feat: Add trybuild for testing fails 2024-01-09 00:37:51 -05:00
Dheepak Krishnamurthy
e1a31db559 docs: fix docstrings 📚 2024-01-09 00:08:55 -05:00
Dheepak Krishnamurthy
71480242a9 docs: Better README.md 📚 2024-01-09 00:08:44 -05:00
Dheepak Krishnamurthy
4335a90a00 feat: Remove inner [] for constraints!, vertical! and horizontal! 2024-01-09 00:07:26 -05:00
Ash
0fb1036800 docs: improve documentation for macros 2024-01-09 00:07:26 -05:00
Ash
ac342231c3 refactor: clean up implementation of constraints! macro 2024-01-09 00:07:26 -05:00
Dheepak Krishnamurthy
8339cce10a docs: Update README.md 📚 2024-01-06 06:49:04 -05:00
Dheepak Krishnamurthy
6443f7408a build(release): Bump to v0.1.2 🛠 2024-01-06 06:46:24 -05:00
Dheepak Krishnamurthy
590a392ab1 feat: Add doc attribute to include README 2024-01-06 06:45:49 -05:00
Dheepak Krishnamurthy
250c222cc4 docs: README.md update 📚 2024-01-06 06:42:00 -05:00
Dheepak Krishnamurthy
487edc8399 build(release): Bump to v0.1.1 🛠 2024-01-05 15:46:39 -05:00
Dheepak Krishnamurthy
3870583ea8 feat: Add more tests 2024-01-05 15:46:11 -05:00
Dheepak Krishnamurthy
6440eb9d76 feat: Ratio array syntax 2024-01-05 15:42:25 -05:00
Dheepak Krishnamurthy
885558b6f8 feat: Update Cargo.toml with metadata 2024-01-05 15:26:53 -05:00
Dheepak Krishnamurthy
b6356aa7a5 feat: Add cd.yml 2024-01-05 15:12:12 -05:00
Dheepak Krishnamurthy
31711dbf82 feat: Add ci.yml 2024-01-05 15:08:32 -05:00
Dheepak Krishnamurthy
adc8fdc35a docs: Add README.md 📚 2024-01-05 15:02:02 -05:00
Dheepak Krishnamurthy
272e9709c6 feat: Add array style constraints 2024-01-05 14:51:01 -05:00
Dheepak Krishnamurthy
50af9a5d80 new: Initial commit 🎉 2024-01-05 14:34:40 -05:00
471 changed files with 64961 additions and 30418 deletions

View File

@@ -1,16 +0,0 @@
#!/usr/bin/env bash
if !(command cargo-make >/dev/null 2>&1); then # Check if cargo-make is installed
echo Attempting to run cargo-make as part of the pre-push hook but it\'s not installed.
echo Please install it by running the following command:
echo
echo " cargo install --force cargo-make"
echo
echo If you don\'t want to run cargo-make as part of the pre-push hook, you can run
echo the following command instead of git push:
echo
echo " git push --no-verify"
exit 1
fi
cargo make ci

2
.cargo/config.toml Normal file
View File

@@ -0,0 +1,2 @@
[alias]
xtask = "run --package xtask --"

115
.cliffignore Normal file
View File

@@ -0,0 +1,115 @@
# skip entries from <https://github.com/ratatui/ratatui/pull/1652>
50af9a5d80ed5446f3e6cc554911f606580edde9
272e9709c6eed45cd7e0c183624b7898f4e0ae69
adc8fdc35aa57d6dad2ae8dd30ec2e9256576c09
31711dbf82a4c7bb3b78692da34d9f469725dd6e
b6356aa7a529a491d63dd6628b8985adae337f16
885558b6f89df642317d39c5b44c94c742d1e0c8
6440eb9d76379340953420629ab0a3d9039d6c48
3870583ea868452191857f9bda97a3d5c35d0a4f
487edc8399683fb8a9a66359729c015780d248f2
250c222cc4aaab09184a28efc68f75ca03133794
590a392ab11c1a215767614931036781f4cf6a29
6443f7408af4a8834bc68cd35d2ba9be47e45f38
8339cce10a51c9c951b3c9750d527d80168626eb
ac342231c344e893f2f630ee38167aab28c736a6
0fb103680028a6e26a1923f87b60bde51acaec4f
4335a90a00aeeedb69a92442c7f2711727944017
71480242a926f98e9081ed6e2dc8c381757b3a42
e1a31db55913bd690bcaef380e9dbc3b6a5dc175
38490ff8da6f11e309ba1bcb3e88a562f7c953c5
a4bb143e4767137d6a9e9927d3da66562611f86f
bc73f2dcbe5ea48fc4d1555a8e931f40d7b0e03f
77dea441e5637b1c428c2aa71ea67fb3aac20c12
06af14107e70e49a4cba3babb8ab0a0c57b4bdf8
9acdab32df69517b93dd2b861b85586d47c71540
2e684c6500be61fbe69744d183c8086564ac0051
b7f8ec0ff9659473d936eae53a57cd9de38cec1f
31a2c4548c304270a8c852f19baa7a4eaac5e75c
57b681b053c019b66e0ed92959638997fea731b1
131b9ec41751163d43d94564363247b60f031486
8b32f82b4dd526580d00fa13f053bf507e8ea933
76d1e5b1733d47a7f05acf563db26cb1a66b540d
57a0a34f924e0d488c9e9f917900e677c3488dc4
12aa58601ddd0704256c56019bd2c7139d41f7a2
2dc81833c60951d16f9bd60f3da003edfc9a11f5
20e41f1d1da6db8abbc2504814531d4d97bdf94b
68b55a12a29e70ebfcc063c2d5d5845de3b5a27e
693003314a25e792ffc5d53146b28bfb6a4582e3
63441e259bc38b56e0369197bed14788b2cb3d54
fa88152c808eeb6c9d9b3662361aab1e57e1b1bf
30d9daa59b1843786cde00e25c3e69cfe818b80b
92540b2f6ab25f3a5400aebb28af3c498ac793a4
29edc3a7a38c512611a80cf5d8d42027558419b2
819499d6ffc0e8453ed3220067645933a4882a74
4756526829a4e849d9e256b6cf821eb66afe3ade
8f35437d5ad78d31cd45c4af888f20f0b5ab4196
39bd72b1f702dadb1ebbaf4e77ad2fada166ac49
c6d2cee3e967c9234176c5229858512b0c79d6a9
bd90e3d928e0f9f0b915933ebbc32c2256fe8cfa
b820c0c7e4c576c1e39b5e482a8aac08076a039c
74194759756bb111b4da3e9a5cdb968275a2fab0
38b2f27efe0e1829bc503df7fd64b94b7bb80d97
21aa3232d762d6e3f81f15fc5b66ba462385ac05
903bb0ae32d22393783edfda96db900739864f0a
5cee13ab6d9c49751cf9283d9099e37f0cc3632c
0a0997702dd4cf2217160f5652f5c39cbd4a1010
778f2f5ec511bef431b54157242b91d083ea9840
7d23bd2ceaf96e81972b5f746fdcba0d17f6391f
2c02a56bce31519386303571e0b66b7d4beb378e
f33d51e7d9ccf9fe52ec3289d04d97c722d9ee17
91cd81aaa032887bb2327bc3fe3cad6b3c9fbacf
5d5a1ccb0b4e2f293f215ce026fba33f1c069689
6b9417db5f2adbdc60e9dd8dc5acbbe2a1f77ba9
dce1e4b138eb1333c9e773bacd579a8cdddd73fb
b4aacb045e2200896b0d0136a2b8688b47828d73
dcba0bcd5d5d6e33ddc1fa94ebb94819fdda600e
6f52350ecfb62e3a5bac16f0824e74b757cc6cd2
2c6f324b9aa5034771e00758b143fd8df94d859d
bf0210602948f8d26ae323996fe7b22fb218a446
07aff91b015b5e7e0504680c12edbce70d7dba1e
f6d49dde14af73ed467d75d8f6ec0f502db2908f
9a7467b30576d5cb7491ea6e09efcae97eadf9bb
a0c35f1d7bcce10e092582b95f5b0a3f20ad7bf3
d24747d46982192b575a40b8cc18d1c948fac3d7
8060f7bc578b29dde6ca0c4c64569f9c73218f46
0dc5b2d2e0aa6438ffc1b3965b1ab31c721adbcc
8ecdd892f53d7db95bbb53a61700d36e3fcefdd4
570c35868147a2400a13331e85d562d1ef96a011
3855c3a84a77037aeee40dbe9e52454fb1f9afee
93372f35c1669da0138ca776890f3ff3d38a6539
6cf08d4a2f0398856fd593f50bf077fd59b08230
f78d3bfec32d07c1124eee8d0249477ce3fb0884
204307fa50aaaa373946342084f7fd3af39f3cd3
c50b01d098e5ab405a50c3e14e858da27d606e8f
f71d1ac73e8290f37d55a67d6a6507a3653ec174
ae2868c0e0b1ac8b5126fd43269383fa533d87b5
be8def963956c605bca28bcd8df673bd7ec3740b
4ac4d9d3ab97176d71e287bcdd6d41e66f2f7ccb
fafabb8dab84e9460a076199ea646262e51c855b
2f97d35bd8618e8c0cc006cb1d4a9b151c1b9b4a
39d5a745acbbd3510de707d4e7c471c17e02ae59
a1acdcdc4c002390a76f01699cfa006a36cf3f56
ad54cf29ad1a4335ba208fb94a8fc5dfbba260e3
c7649575e7b199794be4252f79da80aaecdcee28
8913e2ce1f40d451ddb4527f08ec75f198d5063c
1b9e310300f22bfc72364f027a9caeddadf61a99
89d7dd46031511f0556b2d29ab34035f42e3a24c
ca4fa0b9bf5ba707aa0447ba7c38fbacdadb7eec
8cecfdf2f6dd5b0de507f79b469517cc0fb42add
7eeb6afb3dbc56e52f9387a74f826b186cd19137
d0f75eb371a96f8d5f174e23de074efd840e9e44
f8a70ea9da8e6df2bf7a5f74cce45615fc292afe
f28b9730061bffadb9d87ad63edf7d10b245d2c1
afc5cf2140f22fea6bd6933dd0f9c302229a1980
b75df78cdca58d5dca0c51fb8e106067aa6cb752
28f5a6dbd4091aa3efa86eed6767eeb44a655f0f
345e6a1ebd853858463a33953585ce407a60378c
c45a4de47c601554f6b981d211181468b4798e41
bbaa9a5432ff6ad5518344123c3b56f349347e99
f804c90f96221f334371ccd01b0e6df7b1cfc1e8
16ba867c5877d8c97968987ecb5f8bff966d0a82
38a1474ca12aa6a796afc1e277882d997a999e14
92c4078413fc79fcc83f5d3d8708abb58696ff1a
d4415204e1eb3aed2a74a722aeaaa274975dd2d7
e48bcf5f21f14acb27996fdc02231c140f5b817c

View File

@@ -32,17 +32,17 @@ schema_pattern = "(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)
type = "list"
name = "change_type"
choices = [
{ value = "build", name = "build: Changes that affect the build system or external dependencies (example scopes: pip, docker, npm)", key = "b" },
{ value = "chore", name = "chore: A modification that generally does not fall into any other category", key = "c" },
{ value = "ci", name = "ci: Changes to our CI configuration files and scripts (example scopes: GitLabCI)", key = "i" },
{ value = "docs", name = "docs: Documentation only changes", key = "d" },
{ value = "feat", name = "feat: A new feature.", key = "f" },
{ value = "fix", name = "fix: A bug fix.", key = "x" },
{ value = "perf", name = "perf: A code change that improves performance", key = "p" },
{ value = "refactor", name = "refactor: A code change that neither fixes a bug nor adds a feature", key = "r" },
{ value = "revert", name = "revert: Revert previous commits", key = "v" },
{ value = "style", name = "style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)", key = "s" },
{ value = "test", name = "test: Adding missing or correcting existing tests", key = "t" },
{ value = "build", name = "build: Changes that affect the build system or external dependencies (example scopes: pip, docker, npm)", key = "b" },
{ value = "chore", name = "chore: A modification that generally does not fall into any other category", key = "c" },
{ value = "ci", name = "ci: Changes to our CI configuration files and scripts (example scopes: GitLabCI)", key = "i" },
{ value = "docs", name = "docs: Documentation only changes", key = "d" },
{ value = "feat", name = "feat: A new feature.", key = "f" },
{ value = "fix", name = "fix: A bug fix.", key = "x" },
{ value = "perf", name = "perf: A code change that improves performance", key = "p" },
{ value = "refactor", name = "refactor: A code change that neither fixes a bug nor adds a feature", key = "r" },
{ value = "revert", name = "revert: Revert previous commits", key = "v" },
{ value = "style", name = "style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)", key = "s" },
{ value = "test", name = "test: Adding missing or correcting existing tests", key = "t" },
]
message = "Select the type of change you are committing"

10
.github/CODEOWNERS vendored
View File

@@ -1,11 +1,11 @@
# See https://help.github.com/articles/about-codeowners/
# See <https://help.github.com/articles/about-codeowners/>
# for more info about CODEOWNERS file
# It uses the same pattern rule for gitignore file
# https://git-scm.com/docs/gitignore#_pattern_format
# <https://git-scm.com/docs/gitignore#_pattern_format>
# Maintainers
* @orhun @joshka @kdheepak @Valentin271 @EdJoPaTo
# Past maintainers
# @mindoodoo @sayanarijit
* @ratatui/maintainers

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: ratatui
open_collective: ratatui

View File

@@ -2,7 +2,7 @@
name: Bug report
about: Create an issue about a bug you encountered
title: ''
labels: bug
labels: 'Type: Bug'
assignees: ''
---
@@ -17,26 +17,22 @@ A detailed and complete issue is more likely to be processed quickly.
A clear and concise description of what the bug is.
-->
## To Reproduce
<!--
Try to reduce the issue to a simple code sample exhibiting the problem.
Ideally, fork the project and add a test or an example.
-->
## Expected behavior
<!--
A clear and concise description of what you expected to happen.
-->
## Screenshots
<!--
If applicable, add screenshots, gifs or videos to help explain your problem.
-->
## Environment
<!--
Add a description of the systems where you are observing the issue. For example:

View File

@@ -1,5 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Frequently Asked Questions
url: https://ratatui.rs/faq/
about: Check the website FAQ section to see if your question has already been answered
- name: Ratatui Forum
url: https://forum.ratatui.rs
about: Ask questions about ratatui on our Forum
- name: Discord Chat
url: https://discord.gg/pMCEU9hNEj
about: Ask questions about ratatui on Discord

View File

@@ -2,7 +2,7 @@
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
labels: 'Type: Enhancement'
assignees: ''
---

81
.github/copilot-instructions.md vendored Normal file
View File

@@ -0,0 +1,81 @@
# GitHub Copilot Code Review Instructions
## General Review Principles
### Pull Request Size and Scope
- **Flag large PRs**: Comment if a PR changes more than 500 lines or touches many unrelated areas
- **Suggest splitting**: Recommend breaking large changes into smaller, focused PRs
- **Question scope creep**: Ask about unrelated changes that seem outside the PR's stated purpose
### Code Quality and Style
- **Check adherence to style guidelines**: Verify changes follow the project's Rust conventions in [CONTRIBUTING.md](https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#code-formatting)
- **Verify xtask compliance**: Ensure `cargo xtask format` and `cargo xtask lint` would pass
- **Look for AI-generated patterns**: Be suspicious of verbose, overly-commented, or non-idiomatic code
### Architectural Considerations
- **Reference ARCHITECTURE.md**: Point to [ARCHITECTURE.md](https://github.com/ratatui/ratatui/blob/main/ARCHITECTURE.md) for changes affecting crate boundaries
- **Question fundamental changes**: Flag modifications to core configuration, linting rules, or build setup without clear justification
- **Verify appropriate crate placement**: Ensure changes are in the correct crate per the modular structure
### Breaking Changes and Deprecation
- **Require deprecation**: Insist on deprecation warnings rather than immediate removal of public APIs
- **Ask for migration path**: Request clear upgrade instructions for breaking changes
- **Suggest feature flags**: Recommend feature flags for experimental or potentially disruptive changes
- **Reference versioning policy**: Point to the requirement of at least one version notice before removal
### Testing and Documentation
- **Verify test coverage**: Ensure new functionality includes appropriate tests
- **Check for test removal**: Question any removal of existing tests without clear justification
- **Require documentation**: Ensure public APIs are documented with examples
- **Validate examples**: Check that code examples are minimal and follow project style
### Specific Areas of Concern
#### Configuration Changes
- **Lint configuration**: Question changes to `.clippy.toml`, `rustfmt.toml`, or CI configuration
- **Cargo.toml modifications**: Scrutinize dependency changes or workspace modifications
- **Build system changes**: Require justification for xtask or build process modifications
#### Large Code Additions
- **Question necessity**: Ask if large code additions could be implemented more simply
- **Check for duplication**: Look for code that duplicates existing functionality
- **Verify integration**: Ensure new code integrates well with existing patterns
#### File Organization
- **Validate module structure**: Ensure new modules follow the project's organization
- **Check import organization**: Verify imports follow the std/external/local grouping pattern
- **Review file placement**: Confirm files are in appropriate locations per ARCHITECTURE.md
## Comment Templates
### For Large PRs
```
This PR seems quite large with changes across multiple areas. Consider splitting it into smaller, focused PRs:
- Core functionality changes
- Documentation updates
- Test additions
- Configuration changes
See our [contribution guidelines](https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#keep-prs-small-intentional-and-focused) for more details.
```
### For Breaking Changes
```
This appears to introduce breaking changes. Please consider:
- Adding deprecation warnings instead of immediate removal
- Providing a clear migration path in the PR description
- Following our [deprecation policy](https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#deprecation-notice)
```
### For Configuration Changes
```
Changes to project configuration (linting, formatting, build) should be discussed first. Please explain:
- Why this change is necessary
- What problem it solves
- Whether it affects contributor workflow
```
### For Style Issues
```
Please run `cargo xtask format` and `cargo xtask lint` to ensure code follows our style guidelines. See [CONTRIBUTING.md](https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#code-formatting) for details.
```

View File

@@ -1,52 +0,0 @@
#!/bin/bash
# Exit on error. Append "|| true" if you expect an error.
set -o errexit
# Exit on error inside any functions or subshells.
set -o errtrace
# Do not allow use of undefined vars. Use ${VAR:-} to use an undefined VAR
set -o nounset
# Catch the error in case mysqldump fails (but gzip succeeds) in `mysqldump |gzip`
set -o pipefail
# Turn on traces, useful while debugging but commented out by default
# set -o xtrace
last_release="$(git tag --sort=committerdate | grep -P "v0+\.\d+\.\d+$" | tail -1)"
echo "🐭 Last release: ${last_release}"
# detect breaking changes
if [ -n "$(git log --oneline ${last_release}..HEAD | grep '!:')" ]; then
echo "🐭 Breaking changes detected since ${last_release}"
git log --oneline ${last_release}..HEAD | grep '!:'
# increment the minor version
minor="${last_release##v0.}"
minor="${minor%.*}"
next_minor="$((minor + 1))"
next_release="v0.${next_minor}.0"
else
# increment the patch version
patch="${last_release##*.}"
next_patch="$((patch + 1))"
next_release="${last_release/%${patch}/${next_patch}}"
fi
echo "🐭 Next release: ${next_release}"
suffix="alpha"
last_tag="$(git tag --sort=committerdate | tail -1)"
if [[ "${last_tag}" = "${next_release}-${suffix}"* ]]; then
echo "🐭 Last alpha release: ${last_tag}"
# increment the alpha version
# e.g. v0.22.1-alpha.12 -> v0.22.1-alpha.13
alpha="${last_tag##*-${suffix}.}"
next_alpha="$((alpha + 1))"
next_tag="${last_tag/%${alpha}/${next_alpha}}"
else
# increment the patch and start the alpha version from 0
# e.g. v0.22.0 -> v0.22.1-alpha.0
next_tag="${next_release}-${suffix}.0"
fi
# update the crate version
msg="# crate version"
sed -E -i "s/^version = .* ${msg}$/version = \"${next_tag#v}\" ${msg}/" Cargo.toml
echo "NEXT_TAG=${next_tag}" >> $GITHUB_ENV
echo "🐭 Next alpha release: ${next_tag}"

View File

@@ -1,66 +0,0 @@
name: Continuous Deployment
on:
workflow_dispatch:
schedule:
# At 00:00 on Saturday
# https://crontab.guru/#0_0_*_*_6
- cron: "0 0 * * 6"
push:
tags:
- "v*.*.*"
defaults:
run:
shell: bash
jobs:
publish-alpha:
name: Create an alpha release
runs-on: ubuntu-latest
permissions:
contents: write
if: ${{ !startsWith(github.event.ref, 'refs/tags/v') }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Calculate the next release
run: .github/workflows/calculate-alpha-release.bash
- name: Publish on crates.io
uses: actions-rs/cargo@v1
with:
command: publish
args: --allow-dirty --token ${{ secrets.CARGO_TOKEN }}
- name: Generate a changelog
uses: orhun/git-cliff-action@v3
with:
config: cliff.toml
args: --unreleased --tag ${{ env.NEXT_TAG }} --strip header
env:
OUTPUT: BODY.md
- name: Publish on GitHub
uses: ncipollo/release-action@v1
with:
tag: ${{ env.NEXT_TAG }}
prerelease: true
bodyFile: BODY.md
publish-stable:
name: Create a stable release
runs-on: ubuntu-latest
if: ${{ startsWith(github.event.ref, 'refs/tags/v') }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- name: Publish on crates.io
uses: actions-rs/cargo@v1
with:
command: publish
args: --token ${{ secrets.CARGO_TOKEN }}

View File

@@ -1,6 +1,13 @@
name: Check Pull Requests
# Set the permissions of the github token to the minimum and only enable what is needed
# See https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions
permissions: {}
on:
# this workflow is required to be run on pull_request_target as it modifies the PR comments
# care should be taken that the jobs do not run any untrusted input
# zizmor: ignore[dangerous-triggers]
pull_request_target:
types:
- opened
@@ -8,23 +15,21 @@ on:
- synchronize
- labeled
- unlabeled
merge_group:
permissions:
pull-requests: write
jobs:
check-title:
permissions:
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Check PR title
if: github.event_name == 'pull_request_target'
uses: amannn/action-semantic-pull-request@v5
uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v5
id: check_pr_title
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Add comment indicating we require pull request titles to follow conventional commits specification
- uses: marocchino/sticky-pull-request-comment@v2
- uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2
if: always() && (steps.check_pr_title.outputs.error_message != null)
with:
header: pr-title-lint-error
@@ -39,40 +44,42 @@ jobs:
# Delete a previous comment when the issue has been resolved
- if: ${{ steps.check_pr_title.outputs.error_message == null }}
uses: marocchino/sticky-pull-request-comment@v2
uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2
with:
header: pr-title-lint-error
delete: true
check-breaking-change-label:
permissions:
pull-requests: write
runs-on: ubuntu-latest
env:
# use an environment variable to pass untrusted input to the script
# see https://securitylab.github.com/research/github-actions-untrusted-input/
PR_TITLE: ${{ github.event.pull_request.title }}
steps:
- name: Check breaking change label
id: check_breaking_change
run: |
pattern='^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(\w+\))?!:'
# Check if pattern matches
if echo "${PR_TITLE}" | grep -qE "$pattern"; then
echo "breaking_change=true" >> $GITHUB_OUTPUT
else
echo "breaking_change=false" >> $GITHUB_OUTPUT
fi
- name: Add label
if: steps.check_breaking_change.outputs.breaking_change == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['breaking change']
})
- name: Check breaking change label
id: check_breaking_change
run: |
pattern='^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(\w+\))?!:'
# Check if pattern matches
if echo "${PR_TITLE}" | grep -qE "$pattern"; then
echo "breaking_change=true" >> $GITHUB_OUTPUT
else
echo "breaking_change=false" >> $GITHUB_OUTPUT
fi
- name: Add label
if: steps.check_breaking_change.outputs.breaking_change == 'true'
uses: actions/github-script@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['Type: Breaking Change']
})
do-not-merge:
if: ${{ contains(github.event.*.labels.*.name, 'do not merge') }}

22
.github/workflows/check-semver.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Check Semver
# Set the permissions of the github token to the minimum and only enable what is needed
# See https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions
permissions: {}
on:
pull_request:
branches:
- main
jobs:
check-semver:
name: Check semver
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@5b298c9520f7096a4683c0bd981a7ac5a7e249ae # v2

View File

@@ -1,5 +1,9 @@
name: Continuous Integration
# Set the permissions of the github token to the minimum and only enable what is needed
# See https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions
permissions: {}
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
@@ -9,7 +13,6 @@ on:
pull_request:
branches:
- main
merge_group:
# ensure that the workflow is only triggered once per PR, subsequent pushes to the PR will cancel
# and restart the workflow. See https://docs.github.com/en/actions/using-jobs/using-concurrency
@@ -17,144 +20,276 @@ concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
# don't install husky hooks during CI as they are only needed for for pre-push
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
# lint, clippy and coveraget jobs are intentionally early in the workflow to catch simple
# formatting, typos, and missing tests as early as possible. This allows us to fix these and
# resubmit the PR without having to wait for the comprehensive matrix of tests to complete.
# lint, clippy and coverage jobs are intentionally early in the workflow to catch simple formatting,
# typos, and missing tests as early as possible. This allows us to fix these and resubmit the PR
# without having to wait for the comprehensive matrix of tests to complete.
jobs:
lint:
# Lint the formatting of the codebase.
lint-formatting:
name: Check Formatting
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: nightly
components: rustfmt
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
- name: Check formatting
run: cargo make lint-format
- name: Check documentation
run: cargo make lint-docs
- name: Check typos
uses: crate-ci/typos@master
- name: Lint dependencies
uses: EmbarkStudios/cargo-deny-action@v1
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- uses: taiki-e/install-action@4c6723ec9c638cccae824b8957c5085b695c8085 # v2
with:
tool: taplo-cli
- run: cargo xtask format --check
clippy:
# Check for typos in the codebase.
# See <https://github.com/crate-ci/typos/>
lint-typos:
name: Check Typos
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: crate-ci/typos@2d0ce569feab1f8752f1dde43cc2f2aa53236e06 # master
# Check for any disallowed dependencies in the codebase due to license / security issues.
# See <https://github.com/EmbarkStudios/cargo-deny>
cargo-deny:
runs-on: ubuntu-latest
strategy:
matrix:
checks:
- advisories
- bans licenses sources
# Prevent sudden announcement of a new advisory from failing ci:
continue-on-error: ${{ matrix.checks == 'advisories' }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: EmbarkStudios/cargo-deny-action@76cd80eb775d7bbbd2d80292136d74d39e1b4918 # v2
with:
rust-toolchain: stable
log-level: info
arguments: --all-features --exclude-unpublished
command: check ${{ matrix.checks }}
# Check for any unused dependencies in the codebase.
# See <https://github.com/bnjbvr/cargo-machete/>
cargo-machete:
name: Check Unused Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: bnjbvr/cargo-machete@7959c845782fed02ee69303126d4a12d64f1db18 # v0.9.1
# Run cargo clippy.
#
# We check for clippy warnings on beta, but these are not hard failures. They should often be
# fixed to prevent clippy failing on the next stable release, but don't block PRs on them unless
# they are introduced by the PR.
lint-clippy:
name: Check Clippy
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain: ["stable", "beta"]
continue-on-error: ${{ matrix.toolchain == 'beta' }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: ${{ matrix.toolchain }}
components: clippy
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
- name: Run cargo make clippy-all
run: cargo make clippy
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- run: cargo xtask clippy
env:
RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}
coverage:
# Run markdownlint on all markdown files in the repository.
lint-markdown:
name: Check Markdown
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: DavidAnson/markdownlint-cli2-action@07035fd053f7be764496c0f8d8f9f41f98305101 # v21
with:
globs: |
'**/*.md'
'!target'
# Run cargo coverage. This will generate a coverage report and upload it to codecov.
# <https://app.codecov.io/gh/ratatui/ratatui>
coverage:
name: Coverage Report
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: stable
components: llvm-tools
- name: Install cargo-llvm-cov and cargo-make
uses: taiki-e/install-action@v2
- uses: taiki-e/install-action@4c6723ec9c638cccae824b8957c5085b695c8085 # v2
with:
tool: cargo-llvm-cov,cargo-make
- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
- name: Generate coverage
run: cargo make coverage
- name: Upload to codecov.io
uses: codecov/codecov-action@v4
tool: cargo-llvm-cov
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- run: cargo xtask coverage
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
# Run cargo check. This is a fast way to catch any obvious errors in the code.
check:
name: Check ${{ matrix.os }} ${{ matrix.toolchain }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
toolchain: ["1.74.0", "stable"]
toolchain: ["1.86.0", "stable"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust {{ matrix.toolchain }}
uses: dtolnay/rust-toolchain@master
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: ${{ matrix.toolchain }}
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
- name: Run cargo make check
run: cargo make check
- uses: taiki-e/install-action@4c6723ec9c638cccae824b8957c5085b695c8085 # v2
with:
tool: cargo-hack
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- run: cargo xtask check --all-features
env:
RUST_BACKTRACE: full
RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}
test-doc:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
build-no-std:
name: Build No-Std
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
- name: Test docs
run: cargo make test-doc
env:
RUST_BACKTRACE: full
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: stable
targets: x86_64-unknown-none
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
# This makes it easier to debug the exact versions of the dependencies
- run: cargo tree --target x86_64-unknown-none -p ratatui-core
- run: cargo tree --target x86_64-unknown-none -p ratatui-widgets
- run: cargo tree --target x86_64-unknown-none -p ratatui-macros
- run: cargo tree --target x86_64-unknown-none -p ratatui --no-default-features
- run: cargo build --target x86_64-unknown-none -p ratatui-core
- run: cargo build --target x86_64-unknown-none -p ratatui-widgets
- run: cargo build --target x86_64-unknown-none -p ratatui-macros
- run: cargo build --target x86_64-unknown-none -p ratatui --no-default-features
test:
# Check if README.md is up-to-date with the crate's documentation.
check-readme:
name: Check README
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- uses: taiki-e/install-action@4c6723ec9c638cccae824b8957c5085b695c8085 # v2
with:
tool: cargo-rdme
- run: cargo xtask readme --check
# Run cargo rustdoc with the same options that would be used by docs.rs, taking into account the
# package.metadata.docs.rs configured in Cargo.toml. https://github.com/dtolnay/cargo-docs-rs
lint-docs:
name: Check Docs
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -Dwarnings
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: nightly
- uses: dtolnay/install@74f735cdf643820234e37ae1c4089a08fd266d8a # master
with:
crate: cargo-docs-rs
- uses: taiki-e/install-action@4c6723ec9c638cccae824b8957c5085b695c8085 # v2
with:
tool: cargo-hack
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- run: cargo xtask docs
# Run cargo test on the documentation of the crate. This will catch any code examples that don't
# compile, or any other issues in the documentation.
test-docs:
name: Test Docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: stable
- uses: taiki-e/install-action@4c6723ec9c638cccae824b8957c5085b695c8085 # v2
with:
tool: cargo-hack
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- run: cargo xtask test-docs
# Run cargo test on the libraries of the crate.
test-libs:
name: Test Libs ${{ matrix.toolchain }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain: ["1.86.0", "stable"]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: stable
- uses: taiki-e/install-action@4c6723ec9c638cccae824b8957c5085b695c8085 # v2
with:
tool: cargo-hack
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- run: cargo xtask test-libs
# Run cargo test on all the backends.
test-backends:
name: Test ${{matrix.backend}} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
toolchain: ["1.74.0", "stable"]
backend: [crossterm, termion, termwiz]
exclude:
# termion is not supported on windows
- os: windows-latest
backend: termion
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust ${{ matrix.toolchain }}}
uses: dtolnay/rust-toolchain@master
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
toolchain: ${{ matrix.toolchain }}
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Install cargo-nextest
uses: taiki-e/install-action@nextest
- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
- name: Test ${{ matrix.backend }}
run: cargo make test-backend ${{ matrix.backend }}
env:
RUST_BACKTRACE: full
persist-credentials: false
- uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: stable
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2
- run: cargo xtask test-backend ${{ matrix.backend }}

71
.github/workflows/release-plz.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
name: Release-plz
# Set the permissions of the github token to the minimum and only enable what is needed
# See https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions
permissions: {}
on:
push:
branches:
- main
workflow_dispatch:
jobs:
# Release unpublished packages.
release-plz-release:
name: Release-plz release
environment: release
permissions:
pull-requests: write
contents: write
id-token: write
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'ratatui' }}
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: stable
- uses: rust-lang/crates-io-auth-action@b7e9a28eded4986ec6b1fa40eeee8f8f165559ec # v1
id: auth
- name: Run release-plz
uses: release-plz/action@487eb7b5c085a664d5c5ca05f4159bd9b591182a # v0.5
with:
command: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
# Create a PR with the new versions and changelog, preparing the next release.
release-plz-pr:
name: Release-plz PR
permissions:
pull-requests: write
contents: write
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'ratatui' }}
concurrency:
group: release-plz-${{ github.ref }}
cancel-in-progress: false
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
persist-credentials: false
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # master
with:
toolchain: stable
- name: Run release-plz
uses: release-plz/action@487eb7b5c085a664d5c5ca05f4159bd9b591182a # v0.5
with:
command: release-pr
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }}

26
.github/workflows/zizmor.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: GitHub Actions Security Analysis with zizmor 🌈
# docs https://docs.zizmor.sh/integrations/#github-actions
on:
push:
branches: ["main"]
pull_request:
branches: ["**"]
permissions: {}
jobs:
zizmor:
name: Run zizmor 🌈
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- name: Run zizmor 🌈
uses: zizmorcore/zizmor-action@e639db99335bc9038abc0e066dfcd72e23d26fb4 # v0.3.0

2
.gitignore vendored
View File

@@ -1,6 +1,6 @@
target
Cargo.lock
*.log
*.rs.rustfmt
.gdb_history
.idea/
.env

12
.taplo.toml Normal file
View File

@@ -0,0 +1,12 @@
include = ["**/*.toml"]
[formatting]
column_width = 100
reorder_keys = false
[[rule]]
include = ["**/Cargo.toml"]
keys = ["dependencies", "dev-dependencies", "build-dependencies", "workspace.dependencies"]
[rule.formatting]
reorder_keys = true

203
ARCHITECTURE.md Normal file
View File

@@ -0,0 +1,203 @@
# Ratatui Architecture
This document provides a comprehensive overview of Ratatui's architecture and crate
organization, introduced in version 0.30.0.
## Overview
Starting with Ratatui 0.30.0, the project was reorganized from a single monolithic crate into
a modular workspace consisting of multiple specialized crates. This architectural decision was
made to improve modularity, reduce compilation times, enable more flexible dependency
management, and provide better API stability for third-party widget libraries.
## Crate Organization
The Ratatui project is now organized as a Cargo workspace containing the following crates:
### Core Crates
#### `ratatui` (Main Crate)
- **Purpose**: The main entry point that most applications should use
- **Contents**: Re-exports everything from other crates for convenience, plus experimental features
- **Target Users**: Application developers building terminal UIs
- **Key Features**:
- Complete widget ecosystem
- Backend implementations
- Layout system
- Terminal management
- Experimental `WidgetRef` and `StatefulWidgetRef` traits
#### `ratatui-core`
- **Purpose**: Foundational types and traits for the Ratatui ecosystem
- **Contents**: Core widget traits, text types, buffer, layout, style, and symbols
- **Target Users**: Widget library authors, minimalist projects
- **Key Features**:
- `Widget` and `StatefulWidget` traits
- Text rendering (`Text`, `Line`, `Span`)
- Buffer management
- Layout system
- Style and color definitions
- Symbol collections
#### `ratatui-widgets`
- **Purpose**: Built-in widget implementations
- **Contents**: All standard widgets like `Block`, `Paragraph`, `List`, `Chart`, etc.
- **Target Users**: Applications needing standard widgets, widget library authors
- **Key Features**:
- Complete set of built-in widgets
- Optimized implementations
- Comprehensive documentation and examples
### Backend Crates
#### `ratatui-crossterm`
- **Purpose**: Crossterm backend implementation
- **Contents**: Cross-platform terminal backend using the `crossterm` crate
- **Target Users**: Applications targeting multiple platforms
#### `ratatui-termion`
- **Purpose**: Termion backend implementation
- **Contents**: Unix-specific terminal backend using the `termion` crate
- **Target Users**: Unix-specific applications requiring low-level control
#### `ratatui-termwiz`
- **Purpose**: Termwiz backend implementation
- **Contents**: Terminal backend using the `termwiz` crate
- **Target Users**: Applications needing advanced terminal features
### Utility Crates
#### `ratatui-macros`
- **Purpose**: Declarative macros for common patterns and boilerplate reduction
- **Contents**: Macros for common patterns and boilerplate reduction
- **Target Users**: Applications and libraries wanting macro support
## Dependency Relationships
```text
ratatui
├── ratatui-core
├── ratatui-widgets → ratatui-core
├── ratatui-crossterm → ratatui-core
├── ratatui-termion → ratatui-core
├── ratatui-termwiz → ratatui-core
└── ratatui-macros
```
### Key Dependencies
- **ratatui-core**: Foundation for all other crates
- **ratatui-widgets**: Depends on `ratatui-core` for widget traits and types
- **Backend crates**: Each depends on `ratatui-core` for backend traits and types
- **ratatui**: Depends on all other crates and re-exports their public APIs
## Design Principles
### Stability and Compatibility
The modular architecture provides different levels of API stability:
- **ratatui-core**: Designed for maximum stability to minimize breaking changes for widget
libraries
- **ratatui-widgets**: Focused on widget implementations with moderate stability requirements
- **Backend crates**: Isolated from core changes, allowing backend-specific updates
- **ratatui**: Main crate that can evolve more freely while maintaining backward compatibility
through re-exports
### Compilation Performance
The split architecture enables:
- **Reduced compilation times**: Widget libraries only need to compile core types
- **Parallel compilation**: Different crates can be compiled in parallel
- **Selective compilation**: Applications can exclude unused backends or widgets
### Ecosystem Benefits
- **Widget Library Authors**: Can depend on stable `ratatui-core` without frequent updates
- **Application Developers**: Can use the convenient `ratatui` crate with everything included
- **Minimalist Projects**: Can use only `ratatui-core` for lightweight applications
## Migration Guide
### For Application Developers
Most applications should continue using the main `ratatui` crate with minimal changes:
```rust
// No changes needed - everything is re-exported
use ratatui::{
widgets::{Block, Paragraph},
layout::{Layout, Constraint},
Terminal,
};
```
### For Widget Library Authors
Consider migrating to `ratatui-core` for better stability:
```rust
// Before (0.29.x and earlier)
use ratatui::{
widgets::{Widget, StatefulWidget},
buffer::Buffer,
layout::Rect,
};
// After (0.30.0+)
use ratatui_core::{
widgets::{Widget, StatefulWidget},
buffer::Buffer,
layout::Rect,
};
```
### Backwards Compatibility
All existing code using the `ratatui` crate will continue to work unchanged, as the main crate
re-exports all public APIs from the specialized crates.
## Future Considerations
### Potential Enhancements
- **Widget-specific crates**: Further split widgets into individual crates for even more
granular dependencies
- **Plugin system**: Enable dynamic widget loading and third-party widget ecosystems
- **Feature flags**: More granular feature flags for compile-time customization
### Version Synchronization
Currently, all crates are versioned together for simplicity. Future versions may adopt
independent versioning once the API stabilizes further.
## Related Issues and PRs
This architecture was developed through extensive discussion and implementation across multiple
PRs:
- [Issue #1388](https://github.com/ratatui/ratatui/issues/1388): Original RFC for modularization
- [PR #1459](https://github.com/ratatui/ratatui/pull/1459): Move ratatui crate into workspace
folder
- [PR #1460](https://github.com/ratatui/ratatui/pull/1460): Move core types to ratatui-core
- [PR #1474](https://github.com/ratatui/ratatui/pull/1474): Move widgets into ratatui-widgets
crate
## Contributing
When contributing to the Ratatui project, please consider:
- **Core changes**: Submit PRs against `ratatui-core` for fundamental improvements
- **Widget changes**: Submit PRs against `ratatui-widgets` for widget-specific improvements
- **Backend changes**: Submit PRs against the appropriate backend crate
- **Integration changes**: Submit PRs against the main `ratatui` crate
See the [CONTRIBUTING.md](CONTRIBUTING.md) guide for more details on the contribution process.

View File

@@ -4,12 +4,60 @@ This document contains a list of breaking changes in each version and some notes
between versions. It is compiled manually from the commit history and changelog. We also tag PRs on
GitHub with a [breaking change] label.
[breaking change]: (https://github.com/ratatui-org/ratatui/issues?q=label%3A%22breaking+change%22)
[breaking change]: (https://github.com/ratatui/ratatui/issues?q=label%3A%22breaking+change%22)
## Summary
This is a quick summary of the sections below:
- [v0.30.1](#v0301)
- Adding `AsRef` impls for widgets may affect type inference in rare cases
- [v0.30.0](#v0300)
- `Flex::SpaceAround` now mirrors flexbox: space between items is twice the size of the outer gaps
are twice the size of first and last elements
- `block::Title` no longer exists
- The `From` impls for backend types are now replaced with more specific traits
- `FrameExt` trait for `unstable-widget-ref` feature
- `List::highlight_symbol` now accepts `Into<Line>` instead of `&str`
- 'layout::Alignment' is renamed to 'layout::HorizontalAlignment'
- MSRV is now 1.86.0
- `Backend` now requires an associated `Error` type and `clear_region` method
- `TestBackend` now uses `core::convert::Infallible` for error handling instead of `std::io::Error`
- Disabling `default-features` will now disable layout cache, which can have a negative impact on performance
- `Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` are now only available if `layout-cache`
feature is enabled
- Disabling `default-features` suppresses the error message if `show_cursor()` fails when dropping
`Terminal`
- Support a broader range for `unicode-width` version
- `Marker` is now non-exhaustive
- `symbols::braille::BLANK` and `symbols::braille::DOTS` have been removed in favor of an ordered
array of all Braille characters
- [v0.29.0](#v0290)
- `Sparkline::data` takes `IntoIterator<Item = SparklineBar>` instead of `&[u64]` and is no longer
const
- Removed public fields from `Rect` iterators
- `Line` now implements `From<Cow<str>`
- `Table::highlight_style` is now `Table::row_highlight_style`
- `Tabs::select` now accepts `Into<Option<usize>>`
- `Color::from_hsl` is now behind the `palette` feature
- [v0.28.0](#v0280)
- `Backend::size` returns `Size` instead of `Rect`
- `Backend` trait migrates to `get/set_cursor_position`
- Ratatui now requires Crossterm 0.28.0
- `Axis::labels` now accepts `IntoIterator<Into<Line>>`
- `Layout::init_cache` no longer returns bool and takes a `NonZeroUsize` instead of `usize`
- `ratatui::terminal` module is now private
- `ToText` no longer has a lifetime
- `Frame::size` is deprecated and renamed to `Frame::area`
- [v0.27.0](#v0270)
- List no clamps the selected index to list
- Prelude items added / removed
- 'termion' updated to 4.0
- `Rect::inner` takes `Margin` directly instead of reference
- `Buffer::filled` takes `Cell` directly instead of reference
- `Stylize::bg()` now accepts `Into<Color>`
- Removed deprecated `List::start_corner`
- `LineGauge::gauge_style` is deprecated
- [v0.26.0](#v0260)
- `Flex::Start` is the new default flex mode for `Layout`
- `patch_style` & `reset_style` now consume and return `Self`
@@ -47,11 +95,650 @@ This is a quick summary of the sections below:
- MSRV is now 1.63.0
- `List` no longer ignores empty strings
## [v0.26.0](https://github.com/ratatui-org/ratatui/releases/tag/v0.26.0)
## [v0.30.1](https://github.com/ratatui/ratatui/releases/tag/ratatui-v0.30.1)
### Adding `AsRef` impls for widgets may affect type inference ([#2297])
[#2297]: https://github.com/ratatui/ratatui/pull/2297
Adding `AsRef<Self>` for built-in widgets can change type inference outcomes in rare cases where
`AsRef` is part of a trait bound, and can also conflict with downstream blanket or manual `AsRef`
impls for widget types. If you hit new ambiguity errors, add explicit type annotations or specify
the concrete widget type to guide inference, and remove any redundant `AsRef` impls.
## [v0.30.0](https://github.com/ratatui/ratatui/releases/tag/ratatui-v0.30.0)
### `Marker` is now non-exhaustive ([#2236])
[#2236]: https://github.com/ratatui/ratatui/pull/2236
The `Marker` enum is now marked as `#[non_exhaustive]`, if you were matching on `Marker` exhaustively,
you will need to add a wildcard arm:
```diff
match marker {
Marker::Dot => { /* ... */ }
Marker::Block => { /* ... */ }
Marker::Bar => { /* ... */ }
Marker::Braille => { /* ... */ }
Marker::HalfBlock => { /* ... */ }
+ _ => { /* ... */ }
}
```
### `Flex::SpaceAround` now mirrors flexbox: space between items is twice the size of the outer gaps ([#1952])
[#1952]: https://github.com/ratatui/ratatui/pull/1952
The old `Flex::SpaceAround` behavior has been changed to distribute space evenly around each
element, with the middle spacers being twice the size of the first and last one. The old
behavior can be achieved by using `Flex::SpaceEvenly` instead.
```diff
- let rects = Layout::horizontal([Length(1), Length(2)]).flex(Flex::SpaceAround).split(area);
+ let rects = Layout::horizontal([Length(1), Length(2)]).flex(Flex::SpaceEvenly).split(area);
```
### `block::Title` no longer exists ([#1926])
[#1926]: https://github.com/ratatui/ratatui/pull/1926
The title alignment is better expressed in the `Line` as this fits more coherently with the rest of
the library.
- `widgets::block` is no longer exported
- `widgets::block::Title` no longer exists
- `widgets::block::Position` is now `widgets::TitlePosition`
- `Block::title()` now accepts `Into::<Line>` instead of `Into<Title>`
- `BlockExt` is now exported at widgets::`BlockExt` instead of `widgets::block::BlockExt`
```diff
- use ratatui::widgets::{Block, block::{Title, Position}};
+ use ratatui::widgets::{Block, TitlePosition};
let block = Block::default()
- .title(Title::from("Hello"))
- .title(Title::from("Hello").position(Position::Bottom).alignment(Alignment::Center))
- .title_position(Position::Bottom);
+ .title(Line::from("Hello"))
+ .title_bottom(Line::from("Hello").centered());
+ .title_position(TitlePosition::Bottom);
- use ratatui::widgets::block::BlockExt;
+ use ratatui::widgets::BlockExt;
struct MyWidget {
block: Option<Block>,
}
impl Widget for &MyWidget {
fn render(self, area: Rect, buf: &mut Buffer) {
self.block.as_ref().render(area, buf);
let area = self.block.inner_if_some();
// ...
}
}
```
### `Style` no longer implements `Styled` ([#1572])
[#1572]: https://github.com/ratatui/ratatui/pull/1572
Any calls to methods implemented by the blanket implementation of `Stylize` are now defined directly
on `Style`. Remove the `Stylize` import if it is no longer used by your code.
```diff
- use ratatui::style::Stylize;
let style = Style::new().red();
```
The `reset()` method does not have a direct replacement, as it clashes with the existing `reset()`
method. Use the `Style::reset()` method instead.
```diff
- some_style.reset();
+ Style::reset();
```
### Disabling `default-features` suppresses the error message if `show_cursor()` fails when dropping `Terminal` ([#1794])
[#1794]: https://github.com/ratatui/ratatui/pull/1794
Since disabling `default-features` disables `std`, printing to stderr is not possible. It is
recommended to re-enable `std` when not using Ratatui in `no_std` environment.
### `Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` are now only available if `layout-cache` feature is enabled ([#1795])
[#1795]: https://github.com/ratatui/ratatui/pull/1795
Previously, `Layout::init_cache` and `Layout::DEFAULT_CACHE_SIZE` were available independently of
enabled feature flags.
### Disabling `default-features` will now disable layout cache, which can have a negative impact on performance ([#1795])
Layout cache is now opt-in in `ratatui-core` and enabled by default in `ratatui`. If app doesn't
make use of `no_std`-compatibility, and disables `default-feature`, it is recommended to explicitly
re-enable layout cache. Not doing so may impact performance.
```diff
- ratatui = { version = "0.29.0", default-features = false }
+ ratatui = { version = "0.30.0", default-features = false, features = ["layout-cache"] }
```
### `TestBackend` now uses `core::convert::Infallible` for error handling instead of `std::io::Error` ([#1823])
[#1823]: https://github.com/ratatui/ratatui/pull/1823
Since `TestBackend` never fails, it now uses `Infallible` as associated `Error`. This may require
changes in test cases that use `TestBackend`.
### `Backend` now requires an associated `Error` type and `clear_region` method ([#1778])
[#1778]: https://github.com/ratatui/ratatui/pull/1778
Custom `Backend` implementations must now define an associated `Error` type for method `Result`s
and implement the `clear_region` method, which no longer has a default implementation.
This change was made to provide greater flexibility for custom backends, particularly to remove the
explicit dependency on `std::io` for backends that want to support `no_std` targets.
If your app or library uses the `Backend` trait directly - for example, by providing a generic
implementation for many backends - you may need to update the referenced error type.
```diff
- fn run<B: Backend>(mut terminal: Terminal<B>) -> io::Result<()> {
+ fn run<B: Backend>(mut terminal: Terminal<B>) -> Result<(), B::Error> {
```
Alternatively, you can explicitly require the associated error to be `std::io::Error`. This approach
may require fewer changes in user code but is generally not recommended, as it limits compatibility
with third-party backends. Additionally, the error type used by built-in backends may or may not
change in the future, making this approach less future-proof compared to the previous one.
```diff
- fn run<B: Backend>(mut terminal: Terminal<B>) -> io::Result<()> {
+ fn run<B: Backend<Error = io::Error>>(mut terminal: Terminal<B>) -> io::Result<()> {
```
If your application uses a concrete backend implementation, prefer specifying it explicitly
instead.
```diff
- fn run<B: Backend>(mut terminal: Terminal<B>) -> io::Result<()> {
+ fn run(mut terminal: DefaultTerminal) -> io::Result<()> {
```
### MSRV is now 1.86.0 ([#2230])
[#2230]: https://github.com/ratatui/ratatui/pull/2230
The minimum supported Rust version (MSRV) is now 1.86.0.
### `layout::Alignment` is renamed to `layout::HorizontalAlignment` ([#1735])
[#1735]: https://github.com/ratatui/ratatui/pull/1691
The `Alignment` enum has been renamed to `HorizontalAlignment` to better reflect its purpose. A type
alias has been added to maintain backwards compatibility, however there are some cases where type
aliases are not enough to maintain backwards compatibility. E.g. when using glob imports to import
all the enum variants.
We don't expect to remove or deprecate the type alias in the near future, but it is recommended to
update your imports to use the new name.
```diff
- use ratatui::layout::Alignment;
+ use ratatui::layout::HorizontalAlignment;
- use Alignment::*;
+ use HorizontalAlignment::*;
```
### `List::highlight_symbol` accepts `Into<Line>` ([#1595])
[#1595]: https://github.com/ratatui/ratatui/pull/1595
Previously `List::highlight_symbol` accepted `&str`. Any code that uses conversion methods will need
to be rewritten. Since `Into::into` is not const, this function cannot be called in const context.
### `FrameExt` trait for `unstable-widget-ref` feature ([#1530])
[#1530]: https://github.com/ratatui/ratatui/pull/1530
To call `Frame::render_widget_ref()` or `Frame::render_stateful_widget_ref()` you now need to:
1. Import the `FrameExt` trait from `ratatui::widgets`.
2. Enable the `unstable-widget-ref` feature.
For example:
```rust
use ratatui::{
layout::Rect,
widgets::{Block, FrameExt},
};
let block = Block::new();
let area = Rect::new(0, 0, 5, 5);
frame.render_widget_ref(&block, area);
```
### `WidgetRef` no longer has a blanket implementation of Widget
Previously there was a blanket implementation of Widget for WidgetRef. This has been reversed to
instead be a blanket implementation of WidgetRef for all &W where W: Widget. Any widgets that
previously implemented WidgetRef directly should now instead implement Widget for a reference to the
type.
```diff
-impl WidgetRef for Foo {
- fn render_ref(&self, area: Rect, buf: &mut Buffer)
+impl Widget for &Foo {
+ fn render(self, area: Rect, buf: &mut Buffer)
}
```
### The `From` impls for backend types are now replaced with more specific traits [#1464]
[#1464]: https://github.com/ratatui/ratatui/pull/1464
Crossterm gains `ratatui::backend::crossterm::{FromCrossterm, IntoCrossterm}`
Termwiz gains `ratatui::backend::termwiz::{FromTermwiz, IntoTermwiz}`
This is necessary in order to avoid the orphan rule when implementing `From` for crossterm types
once the crossterm types are moved to a separate crate.
```diff
+ use ratatui::backend::crossterm::{FromCrossterm, IntoCrossterm};
let crossterm_color = crossterm::style::Color::Black;
- let ratatui_color = crossterm_color.into();
- let ratatui_color = ratatui::style::Color::from(crossterm_color);
+ let ratatui_color = ratatui::style::Color::from_crossterm(crossterm_color);
- let crossterm_color = ratatui_color.into();
- let crossterm_color = crossterm::style::Color::from(ratatui_color);
+ let crossterm_color = ratatui_color.into_crossterm();
let crossterm_attribute = crossterm::style::types::Attribute::Bold;
- let ratatui_modifier = crossterm_attribute.into();
- let ratatui_modifier = ratatui::style::Modifier::from(crossterm_attribute);
+ let ratatui_modifier = ratatui::style::Modifier::from_crossterm(crossterm_attribute);
- let crossterm_attribute = ratatui_modifier.into();
- let crossterm_attribute = crossterm::style::types::Attribute::from(ratatui_modifier);
+ let crossterm_attribute = ratatui_modifier.into_crossterm();
```
Similar conversions for `ContentStyle` -> `Style` and `Attributes` -> `Modifier` exist for
Crossterm and the various Termion and Termwiz types as well.
### `Bar::label()` and `BarGroup::label()` now accepts `Into<Line<'a>>`. ([#1471])
[#1471]: https://github.com/ratatui/ratatui/pull/1471
Previously `Bar::label()` and `BarGroup::label()` accepted `Line<'a>`, but they now accepts `Into<Line<'a>>`.
for `Bar::label()`:
```diff
- Bar::default().label("foo".into());
+ Bar::default().label("foo");
```
for `BarGroup::label()`:
```diff
- BarGroup::default().label("bar".into());
+ BarGroup::default().label("bar");
```
### `Bar::text_value` now accepts `Into<String>` ([#1471])
Previously `Bar::text_value` accepted `String`, but now it accepts `Into<String>`.
for `Bar::text_value()`:
```diff
- Bar::default().text_value("foobar".into());
+ Bar::default().text_value("foobar");
```
### `termwiz` is upgraded to 0.23.0 ([#1682])
[#1682]: https://github.com/ratatui/ratatui/pull/1682
The `termwiz` backend is upgraded from 0.22.0 to 0.23.0.
This release has a few fixes for hyperlinks and input handling, plus some dependency updates.
See the [commits](https://github.com/wezterm/wezterm/commits/main/termwiz) for more details.
### Support a broader range for `unicode-width` version ([#1999])
[#1999]: https://github.com/ratatui/ratatui/pull/1999
Ratatui's dependency on `unicode-width`, previously pinned to 0.2.0, has
expanded to allow version 0.2.1. This comes with 2 behavior changes described in
[unicode-width#61] and [unicode-width#74].
[unicode-width#61]: https://github.com/unicode-rs/unicode-width/pull/61
[unicode-width#74]: https://github.com/unicode-rs/unicode-width/pull/74
## [v0.29.0](https://github.com/ratatui/ratatui/releases/tag/v0.29.0)
### `Sparkline::data` takes `IntoIterator<Item = SparklineBar>` instead of `&[u64]` and is no longer const ([#1326])
[#1326]: https://github.com/ratatui/ratatui/pull/1326
The `Sparkline::data` method has been modified to accept `IntoIterator<Item = SparklineBar>`
instead of `&[u64]`.
`SparklineBar` is a struct that contains an `Option<u64>` value, which represents an possible
_absent_ value, as distinct from a `0` value. This change allows the `Sparkline` to style
data points differently, depending on whether they are present or absent.
`SparklineBar` also contains an `Option<Style>` that will be used to apply a style the bar in
addition to any other styling applied to the `Sparkline`.
Several `From` implementations have been added to `SparklineBar` to support existing callers who
provide `&[u64]` and other types that can be converted to `SparklineBar`, such as `Option<u64>`.
If you encounter any type inference issues, you may need to provide an explicit type for the data
passed to `Sparkline::data`. For example, if you are passing a single value, you may need to use
`into()` to convert it to form that can be used as a `SparklineBar`:
```diff
let value = 1u8;
- Sparkline::default().data(&[value.into()]);
+ Sparkline::default().data(&[u64::from(value)]);
```
As a consequence of this change, the `data` method is no longer a `const fn`.
### `Color::from_hsl` is now behind the `palette` feature and accepts `palette::Hsl` ([#1418])
[#1418]: https://github.com/ratatui/ratatui/pull/1418
Previously `Color::from_hsl` accepted components as individual f64 parameters. It now accepts a
single `palette::Hsl` value and is gated behind a `palette` feature flag.
```diff
- Color::from_hsl(360.0, 100.0, 100.0)
+ Color::from_hsl(Hsl::new(360.0, 100.0, 100.0))
```
### Removed public fields from `Rect` iterators ([#1358], [#1424])
[#1358]: https://github.com/ratatui/ratatui/pull/1358
[#1424]: https://github.com/ratatui/ratatui/pull/1424
The `pub` modifier has been removed from fields on the `Columns`,`Rows`, and `Positions` iterators.
These fields were not intended to be public and should not have been accessed directly.
### `Rect::area()` now returns u32 instead of u16 ([#1378])
[#1378]: https://github.com/ratatui/ratatui/pull/1378
This is likely to impact anything which relies on `Rect::area` maxing out at u16::MAX. It can now
return up to u16::MAX * u16::MAX (2^32 - 2^17 + 1).
### `Line` now implements `From<Cow<str>` ([#1373])
[#1373]: https://github.com/ratatui/ratatui/pull/1373
As this adds an extra conversion, ambiguous inferred expressions may no longer compile.
```rust
// given:
struct Foo { ... }
impl From<Foo> for String { ... }
impl From<Foo> for Cow<str> { ... }
let foo = Foo { ... };
let line = Line::from(foo); // now fails due to now ambiguous inferred type
// replace with e.g.
let line = Line::from(String::from(foo));
```
### `Tabs::select()` now accepts `Into<Option<usize>>` ([#1413])
[#1413]: https://github.com/ratatui/ratatui/pull/1413
Previously `Tabs::select()` accepted `usize`, but it now accepts `Into<Option<usize>>`. This breaks
any code already using parameter type inference:
```diff
let selected = 1u8;
- let tabs = Tabs::new(["A", "B"]).select(selected.into())
+ let tabs = Tabs::new(["A", "B"]).select(selected as usize)
```
### `Table::highlight_style` is now `Table::row_highlight_style` ([#1331])
[#1331]: https://github.com/ratatui/ratatui/pull/1331
The `Table::highlight_style` is now deprecated in favor of `Table::row_highlight_style`.
Also, the serialized output of the `TableState` will now include the "selected_column" field.
Software that manually parse the serialized the output (with anything other than the `Serialize`
implementation on `TableState`) may have to be refactored if the "selected_column" field is not
accounted for. This does not affect users who rely on the `Deserialize`, or `Serialize`
implementation on the state.
## [v0.28.0](https://github.com/ratatui/ratatui/releases/tag/v0.28.0)
### `Backend::size` returns `Size` instead of `Rect` ([#1254])
[#1254]: https://github.com/ratatui/ratatui/pull/1254
The `Backend::size` method returns a `Size` instead of a `Rect`.
There is no need for the position here as it was always 0,0.
### `Backend` trait migrates to `get/set_cursor_position` ([#1284])
[#1284]: https://github.com/ratatui/ratatui/pull/1284
If you just use the types implementing the `Backend` trait, you will see deprecation hints but
nothing is a breaking change for you.
If you implement the Backend trait yourself, you need to update the implementation and add the
`get/set_cursor_position` method. You can remove the `get/set_cursor` methods as they are deprecated
and a default implementation for them exists.
### Ratatui now requires Crossterm 0.28.0 ([#1278])
[#1278]: https://github.com/ratatui/ratatui/pull/1278
Crossterm is updated to version 0.28.0, which is a semver incompatible version with the previous
version (0.27.0). Ratatui re-exports the version of crossterm that it is compatible with under
`ratatui::crossterm`, which can be used to avoid incompatible versions in your dependency list.
### `Axis::labels()` now accepts `IntoIterator<Into<Line>>` ([#1273] and [#1283])
[#1273]: https://github.com/ratatui/ratatui/pull/1173
[#1283]: https://github.com/ratatui/ratatui/pull/1283
Previously Axis::labels accepted `Vec<Span>`. Any code that uses conversion methods that infer the
type will need to be rewritten as the compiler cannot infer the correct type.
```diff
- Axis::default().labels(vec!["a".into(), "b".into()])
+ Axis::default().labels(["a", "b"])
```
### `Layout::init_cache` no longer returns bool and takes a `NonZeroUsize` instead of `usize` ([#1245])
[#1245]: https://github.com/ratatui/ratatui/pull/1245
```diff
- let is_initialized = Layout::init_cache(100);
+ Layout::init_cache(NonZeroUsize::new(100).unwrap());
```
### `ratatui::terminal` module is now private ([#1160])
[#1160]: https://github.com/ratatui/ratatui/pull/1160
The `terminal` module is now private and can not be used directly. The types under this module are
exported from the root of the crate. This reduces clashes with other modules in the backends that
are also named terminal, and confusion about module exports for newer Rust users.
```diff
- use ratatui::terminal::{CompletedFrame, Frame, Terminal, TerminalOptions, ViewPort};
+ use ratatui::{CompletedFrame, Frame, Terminal, TerminalOptions, ViewPort};
```
### `ToText` no longer has a lifetime ([#1234])
[#1234]: https://github.com/ratatui/ratatui/pull/1234
This change simplifies the trait and makes it easier to implement.
### `Frame::size` is deprecated and renamed to `Frame::area` ([#1293])
[#1293]: https://github.com/ratatui/ratatui/pull/1293
`Frame::size` is renamed to `Frame::area` as it's the more correct name.
## [v0.27.0](https://github.com/ratatui/ratatui/releases/tag/v0.27.0)
### List no clamps the selected index to list ([#1159])
[#1149]: https://github.com/ratatui/ratatui/pull/1149
The `List` widget now clamps the selected index to the bounds of the list when navigating with
`first`, `last`, `previous`, and `next`, as well as when setting the index directly with `select`.
Previously selecting an index past the end of the list would show treat the list as having a
selection which was not visible. Now the last item in the list will be selected instead.
### Prelude items added / removed ([#1149])
The following items have been removed from the prelude:
- `style::Styled` - this trait is useful for widgets that want to
support the Stylize trait, but it adds complexity as widgets have two
`style` methods and a `set_style` method.
- `symbols::Marker` - this item is used by code that needs to draw to
the `Canvas` widget, but it's not a common item that would be used by
most users of the library.
- `terminal::{CompletedFrame, TerminalOptions, Viewport}` - these items
are rarely used by code that needs to interact with the terminal, and
they're generally only ever used once in any app.
The following items have been added to the prelude:
- `layout::{Position, Size}` - these items are used by code that needs
to interact with the layout system. These are newer items that were
added in the last few releases, which should be used more liberally.
This may cause conflicts for types defined elsewhere with a similar
name.
To update your app:
```diff
// if your app uses Styled::style() or Styled::set_style():
-use ratatui::prelude::*;
+use ratatui::{prelude::*, style::Styled};
// if your app uses symbols::Marker:
-use ratatui::prelude::*;
+use ratatui::{prelude::*, symbols::Marker}
// if your app uses terminal::{CompletedFrame, TerminalOptions, Viewport}
-use ratatui::prelude::*;
+use ratatui::{prelude::*, terminal::{CompletedFrame, TerminalOptions, Viewport}};
// to disambiguate existing types named Position or Size:
- use some_crate::{Position, Size};
- let size: Size = ...;
- let position: Position = ...;
+ let size: some_crate::Size = ...;
+ let position: some_crate::Position = ...;
```
### Termion is updated to 4.0 [#1106]
Changelog: <https://gitlab.redox-os.org/redox-os/termion/-/blob/master/CHANGELOG.md>
A change is only necessary if you were matching on all variants of the `MouseEvent` enum without a
wildcard. In this case, you need to either handle the two new variants, `MouseLeft` and
`MouseRight`, or add a wildcard.
[#1106]: https://github.com/ratatui/ratatui/pull/1106
### `Rect::inner` takes `Margin` directly instead of reference ([#1008])
[#1008]: https://github.com/ratatui/ratatui/pull/1008
`Margin` needs to be passed without reference now.
```diff
-let area = area.inner(&Margin {
+let area = area.inner(Margin {
vertical: 0,
horizontal: 2,
});
```
### `Buffer::filled` takes `Cell` directly instead of reference ([#1148])
[#1148]: https://github.com/ratatui/ratatui/pull/1148
`Buffer::filled` moves the `Cell` instead of taking a reference.
```diff
-Buffer::filled(area, &Cell::new("X"));
+Buffer::filled(area, Cell::new("X"));
```
### `Stylize::bg()` now accepts `Into<Color>` ([#1103])
[#1103]: https://github.com/ratatui/ratatui/pull/1103
Previously, `Stylize::bg()` accepted `Color` but now accepts `Into<Color>`. This allows more
flexible types from calling scopes, though it can break some type inference in the calling scope.
### Remove deprecated `List::start_corner` and `layout::Corner` ([#759])
[#759]: https://github.com/ratatui/ratatui/pull/759
`List::start_corner` was deprecated in v0.25. Use `List::direction` and `ListDirection` instead.
```diff
- list.start_corner(Corner::TopLeft);
- list.start_corner(Corner::TopRight);
// This is not an error, BottomRight rendered top to bottom previously
- list.start_corner(Corner::BottomRight);
// all becomes
+ list.direction(ListDirection::TopToBottom);
```
```diff
- list.start_corner(Corner::BottomLeft);
// becomes
+ list.direction(ListDirection::BottomToTop);
```
`layout::Corner` was removed entirely.
### `LineGauge::gauge_style` is deprecated ([#565])
[#565]: https://github.com/ratatui/ratatui/pull/1148
`LineGauge::gauge_style` is deprecated and replaced with `LineGauge::filled_style` and `LineGauge::unfilled_style`:
```diff
let gauge = LineGauge::default()
- .gauge_style(Style::default().fg(Color::Red).bg(Color::Blue)
+ .filled_style(Style::default().fg(Color::Green))
+ .unfilled_style(Style::default().fg(Color::White));
```
## [v0.26.0](https://github.com/ratatui/ratatui/releases/tag/v0.26.0)
### `Flex::Start` is the new default flex mode for `Layout` ([#881])
[#881]: https://github.com/ratatui-org/ratatui/pull/881
[#881]: https://github.com/ratatui/ratatui/pull/881
Previously, constraints would stretch to fill all available space, violating constraints if
necessary.
@@ -72,9 +759,9 @@ existing layouts with `Flex::Start`. However, to get old behavior, use `Flex::Le
### `Table::new()` now accepts `IntoIterator<Item: Into<Row<'a>>>` ([#774])
[#774]: https://github.com/ratatui-org/ratatui/pull/774
[#774]: https://github.com/ratatui/ratatui/pull/774
Previously, `Table::new()` accepted `IntoIterator<Item=Row<'a>>`. The argument change to
Previously, `Table::new()` accepted `IntoIterator<Item=Row<'a>>`. The argument change to
`IntoIterator<Item: Into<Row<'a>>>`, This allows more flexible types from calling scopes, though it
can some break type inference in the calling scope for empty containers.
@@ -89,9 +776,9 @@ This can be resolved either by providing an explicit type (e.g. `Vec::<Row>::new
### `Tabs::new()` now accepts `IntoIterator<Item: Into<Line<'a>>>` ([#776])
[#776]: https://github.com/ratatui-org/ratatui/pull/776
[#776]: https://github.com/ratatui/ratatui/pull/776
Previously, `Tabs::new()` accepted `Vec<T>` where `T: Into<Line<'a>>`. This allows more flexible
Previously, `Tabs::new()` accepted `Vec<T>` where `T: Into<Line<'a>>`. This allows more flexible
types from calling scopes, though it can break some type inference in the calling scope.
This typically occurs when collecting an iterator prior to calling `Tabs::new`, and can be resolved
@@ -105,7 +792,7 @@ by removing the call to `.collect()`.
### Table::default() now sets segment_size to None and column_spacing to ([#751])
[#751]: https://github.com/ratatui-org/ratatui/pull/751
[#751]: https://github.com/ratatui/ratatui/pull/751
The default() implementation of Table now sets the column_spacing field to 1 and the segment_size
field to `SegmentSize::None`. This will affect the rendering of a small amount of apps.
@@ -115,7 +802,7 @@ To use the previous default values, call `table.segment_size(Default::default())
### `patch_style` & `reset_style` now consumes and returns `Self` ([#754])
[#754]: https://github.com/ratatui-org/ratatui/pull/754
[#754]: https://github.com/ratatui/ratatui/pull/754
Previously, `patch_style` and `reset_style` in `Text`, `Line` and `Span` were using a mutable
reference to `Self`. To be more consistent with the rest of `ratatui`, which is using fluent
@@ -132,8 +819,6 @@ The following example shows how to migrate for `Line`, but the same applies for
### Remove deprecated `Block::title_on_bottom` ([#757])
[#757]: https://github.com/ratatui-org/ratatui/pull/757
`Block::title_on_bottom` was deprecated in v0.22. Use `Block::title` and `Title::position` instead.
```diff
@@ -143,7 +828,7 @@ The following example shows how to migrate for `Line`, but the same applies for
### `Block` style methods cannot be used in a const context ([#720])
[#720]: https://github.com/ratatui-org/ratatui/pull/720
[#720]: https://github.com/ratatui/ratatui/pull/720
Previously the `style()`, `border_style()` and `title_style()` methods could be used to create a
`Block` in a constant context. These now accept `Into<Style>` instead of `Style`. These methods no
@@ -151,7 +836,7 @@ longer can be called from a constant context.
### `Line` now has a `style` field that applies to the entire line ([#708])
[#708]: https://github.com/ratatui-org/ratatui/pull/708
[#708]: https://github.com/ratatui/ratatui/pull/708
Previously the style of a `Line` was stored in the `Span`s that make up the line. Now the `Line`
itself has a `style` field, which can be set with the `Line::styled` method. Any code that creates
@@ -175,11 +860,11 @@ the `Span::style` field.
.alignment(Alignment::Left);
```
## [v0.25.0](https://github.com/ratatui-org/ratatui/releases/tag/v0.25.0)
## [v0.25.0](https://github.com/ratatui/ratatui/releases/tag/v0.25.0)
### Removed `Axis::title_style` and `Buffer::set_background` ([#691])
[#691]: https://github.com/ratatui-org/ratatui/pull/691
[#691]: https://github.com/ratatui/ratatui/pull/691
These items were deprecated since 0.10.
@@ -193,7 +878,7 @@ These items were deprecated since 0.10.
### `List::new()` now accepts `IntoIterator<Item = Into<ListItem<'a>>>` ([#672])
[#672]: https://github.com/ratatui-org/ratatui/pull/672
[#672]: https://github.com/ratatui/ratatui/pull/672
Previously `List::new()` took `Into<Vec<ListItem<'a>>>`. This change will throw a compilation
error for `IntoIterator`s with an indeterminate item (e.g. empty vecs).
@@ -208,7 +893,7 @@ E.g.
### The default `Tabs::highlight_style` is now `Style::new().reversed()` ([#635])
[#635]: https://github.com/ratatui-org/ratatui/pull/635
[#635]: https://github.com/ratatui/ratatui/pull/635
Previously the default highlight style for tabs was `Style::default()`, which meant that a `Tabs`
widget in the default configuration would not show any indication of the selected tab.
@@ -220,7 +905,7 @@ widget in the default configuration would not show any indication of the selecte
### `Table::new()` now requires specifying the widths of the columns ([#664])
[#664]: https://github.com/ratatui-org/ratatui/pull/664
[#664]: https://github.com/ratatui/ratatui/pull/664
Previously `Table`s could be constructed without `widths`. In almost all cases this is an error.
A new `widths` parameter is now mandatory on `Table::new()`. Existing code of the form:
@@ -246,7 +931,7 @@ or complex, it may be convenient to replace `Table::new` with `Table::default().
### `Table::widths()` now accepts `IntoIterator<Item = AsRef<Constraint>>` ([#663])
[#663]: https://github.com/ratatui-org/ratatui/pull/663
[#663]: https://github.com/ratatui/ratatui/pull/663
Previously `Table::widths()` took a slice (`&'a [Constraint]`). This change will introduce clippy
`needless_borrow` warnings for places where slices are passed to this method. To fix these, remove
@@ -262,7 +947,7 @@ E.g.
### Layout::new() now accepts direction and constraint parameters ([#557])
[#557]: https://github.com/ratatui-org/ratatui/pull/557
[#557]: https://github.com/ratatui/ratatui/pull/557
Previously layout new took no parameters. Existing code should either use `Layout::default()` or
the new constructor.
@@ -279,18 +964,18 @@ let layout = layout::default()
let layout = layout::new(Direction::Vertical, [Constraint::Min(1), Constraint::Max(2)]);
```
## [v0.24.0](https://github.com/ratatui-org/ratatui/releases/tag/v0.24.0)
## [v0.24.0](https://github.com/ratatui/ratatui/releases/tag/v0.24.0)
### `ScrollbarState` field type changed from `u16` to `usize` ([#456])
[#456]: https://github.com/ratatui-org/ratatui/pull/456
[#456]: https://github.com/ratatui/ratatui/pull/456
In order to support larger content lengths, the `position`, `content_length` and
`viewport_content_length` methods on `ScrollbarState` now take `usize` instead of `u16`
### `BorderType::line_symbols` renamed to `border_symbols` ([#529])
[#529]: https://github.com/ratatui-org/ratatui/issues/529
[#529]: https://github.com/ratatui/ratatui/issues/529
Applications can now set custom borders on a `Block` by calling `border_set()`. The
`BorderType::line_symbols()` is renamed to `border_symbols()` and now returns a new struct
@@ -304,7 +989,7 @@ Applications can now set custom borders on a `Block` by calling `border_set()`.
### Generic `Backend` parameter removed from `Frame` ([#530])
[#530]: https://github.com/ratatui-org/ratatui/issues/530
[#530]: https://github.com/ratatui/ratatui/issues/530
`Frame` is no longer generic over Backend. Code that accepted `Frame<Backend>` will now need to
accept `Frame`. To migrate existing code, remove any generic parameters from code that uses an
@@ -318,7 +1003,7 @@ instance of a Frame. E.g.:
### `Stylize` shorthands now consume rather than borrow `String` ([#466])
[#466]: https://github.com/ratatui-org/ratatui/issues/466
[#466]: https://github.com/ratatui/ratatui/issues/466
In order to support using `Stylize` shorthands (e.g. `"foo".red()`) on temporary `String` values, a
new implementation of `Stylize` was added that returns a `Span<'static>`. This causes the value to
@@ -336,7 +1021,7 @@ longer compile. E.g.
### Deprecated `Spans` type removed (replaced with `Line`) ([#426])
[#426]: https://github.com/ratatui-org/ratatui/issues/426
[#426]: https://github.com/ratatui/ratatui/issues/426
`Spans` was replaced with `Line` in 0.21.0. `Buffer::set_spans` was replaced with
`Buffer::set_line`.
@@ -349,11 +1034,11 @@ longer compile. E.g.
+ buffer.set_line(0, 0, line, 10);
```
## [v0.23.0](https://github.com/ratatui-org/ratatui/releases/tag/v0.23.0)
## [v0.23.0](https://github.com/ratatui/ratatui/releases/tag/v0.23.0)
### `Scrollbar::track_symbol()` now takes an `Option<&str>` instead of `&str` ([#360])
[#360]: https://github.com/ratatui-org/ratatui/issues/360
[#360]: https://github.com/ratatui/ratatui/issues/360
The track symbol of `Scrollbar` is now optional, this method now takes an optional value.
@@ -365,7 +1050,7 @@ The track symbol of `Scrollbar` is now optional, this method now takes an option
### `Scrollbar` symbols moved to `symbols::scrollbar` and `widgets::scrollbar` module is private ([#330])
[#330]: https://github.com/ratatui-org/ratatui/issues/330
[#330]: https://github.com/ratatui/ratatui/issues/330
The symbols for defining scrollbars have been moved to the `symbols` module from the
`widgets::scrollbar` module which is no longer public. To update your code update any imports to the
@@ -379,31 +1064,31 @@ new module locations. E.g.:
### MSRV updated to 1.67 ([#361])
[#361]: https://github.com/ratatui-org/ratatui/issues/361
[#361]: https://github.com/ratatui/ratatui/issues/361
The MSRV of ratatui is now 1.67 due to an MSRV update in a dependency (`time`).
## [v0.22.0](https://github.com/ratatui-org/ratatui/releases/tag/v0.22.0)
## [v0.22.0](https://github.com/ratatui/ratatui/releases/tag/v0.22.0)
### `bitflags` updated to 2.3 ([#205])
[#205]: https://github.com/ratatui-org/ratatui/issues/205
[#205]: https://github.com/ratatui/ratatui/issues/205
The `serde` representation of `bitflags` has changed. Any existing serialized types that have Borders or
Modifiers will need to be re-serialized. This is documented in the [`bitflags`
The `serde` representation of `bitflags` has changed. Any existing serialized types that have
Borders or Modifiers will need to be re-serialized. This is documented in the [`bitflags`
changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md#200-rc2)..
## [v0.21.0](https://github.com/ratatui-org/ratatui/releases/tag/v0.21.0)
## [v0.21.0](https://github.com/ratatui/ratatui/releases/tag/v0.21.0)
### MSRV is 1.65.0 ([#171])
[#171]: https://github.com/ratatui-org/ratatui/issues/171
[#171]: https://github.com/ratatui/ratatui/issues/171
The minimum supported rust version is now 1.65.0.
### `Terminal::with_options()` stabilized to allow configuring the viewport ([#114])
[#114]: https://github.com/ratatui-org/ratatui/issues/114
[#114]: https://github.com/ratatui/ratatui/issues/114
In order to support inline viewports, the unstable method `Terminal::with_options()` was stabilized
and `ViewPort` was changed from a struct to an enum.
@@ -420,7 +1105,7 @@ let terminal = Terminal::with_options(backend, TerminalOptions {
### Code that binds `Into<Text<'a>>` now requires type annotations ([#168])
[#168]: https://github.com/ratatui-org/ratatui/issues/168
[#168]: https://github.com/ratatui/ratatui/issues/168
A new type `Masked` was introduced that implements `From<Text<'a>>`. This causes any code that
previously did not need to use type annotations to fail to compile. To fix this, annotate or call
@@ -434,9 +1119,9 @@ previously did not need to use type annotations to fail to compile. To fix this,
### `Marker::Block` now renders as a block rather than a bar character ([#133])
[#133]: https://github.com/ratatui-org/ratatui/issues/133
[#133]: https://github.com/ratatui/ratatui/issues/133
Code using the `Block` marker that previously rendered using a half block character (`'▀'``) now
Code using the `Block` marker that previously rendered using a half block character (`'▀'`) now
renders using the full block character (`'█'`). A new marker variant`Bar` is introduced to replace
the existing code.
@@ -446,20 +1131,20 @@ the existing code.
+ let canvas = Canvas::default().marker(Marker::Bar);
```
## [v0.20.0](https://github.com/ratatui-org/ratatui/releases/tag/v0.20.0)
## [v0.20.0](https://github.com/ratatui/ratatui/releases/tag/v0.20.0)
v0.20.0 was the first release of Ratatui - versions prior to this were release as tui-rs. See the
[Changelog](./CHANGELOG.md) for more details.
### MSRV is update to 1.63.0 ([#80])
[#80]: https://github.com/ratatui-org/ratatui/issues/80
[#80]: https://github.com/ratatui/ratatui/issues/80
The minimum supported rust version is 1.63.0
### List no longer ignores empty string in items ([#42])
[#42]: https://github.com/ratatui-org/ratatui/issues/42
[#42]: https://github.com/ratatui/ratatui/issues/42
The following code now renders 3 items instead of 2. Code which relies on the previous behavior will
need to manually filter empty items prior to display.

File diff suppressed because it is too large Load Diff

128
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
https://forum.ratatui.rs/ or https://discord.gg/pMCEU9hNEj.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

View File

@@ -6,9 +6,26 @@ If your contribution is not straightforward, please first discuss the change you
creating a new issue before making the change, or starting a discussion on
[discord](https://discord.gg/pMCEU9hNEj).
## AI Generated Content
We welcome high quality PRs, whether they are human generated or made with the assistance of AI
tools, but we ask that you follow these guidelines:
- **Attribution**: Tell us about your use of AI tools, don't make us guess whether you're using it.
- **Review**: Make sure you review every line of AI generated content for correctness and relevance.
- **Quality**: AI-generated content should meet the same quality standards as human-written content.
- **Quantity**: Avoid submitting large amounts of AI generated content in a single PR. Remember that
quality is usually more important than quantity.
- **License**: Ensure that the AI-generated content is compatible with Ratatui's
[License](./LICENSE).
> [!IMPORTANT]
> Remember that AI tools can assist in generating content, but you are responsible for the final
> quality and accuracy of the contributions and communicating about it.
## Reporting issues
Before reporting an issue on the [issue tracker](https://github.com/ratatui-org/ratatui/issues),
Before reporting an issue on the [issue tracker](https://github.com/ratatui/ratatui/issues),
please check that it has not already been reported by searching for some related keywords. Please
also check [`tui-rs` issues](https://github.com/fdehau/tui-rs/issues/) and link any related issues
found.
@@ -17,22 +34,53 @@ found.
All contributions are obviously welcome. Please include as many details as possible in your PR
description to help the reviewer (follow the provided template). Make sure to highlight changes
which may need additional attention or you are uncertain about. Any idea with a large scale impact
which may need additional attention, or you are uncertain about. Any idea with a large scale impact
on the crate or its users should ideally be discussed in a "Feature Request" issue beforehand.
### Keep PRs small, intentional and focused
### Keep PRs small, intentional, and focused
Try to do one pull request per change. The time taken to review a PR grows exponential with the size
of the change. Small focused PRs will generally be much more faster to review. PRs that include both
Try to do one pull request per change. The time taken to review a PR grows exponentially with the size
of the change. Small focused PRs will generally be much faster to review. PRs that include both
refactoring (or reformatting) with actual changes are more difficult to review as every line of the
change becomes a place where a bug may have been introduced. Consider splitting refactoring /
reformatting changes into a separate PR from those that make a behavioral change, as the tests help
guarantee that the behavior is unchanged.
Guidelines for PR size:
- Aim for PRs under 500 lines of changes when possible.
- Split large features into incremental PRs that build on each other.
- Separate refactoring, formatting, and functional changes into different PRs.
- If a large PR is unavoidable, clearly explain why in the PR description.
### Breaking changes and backwards compatibility
We prioritize maintaining backwards compatibility and minimizing disruption to users:
- **Prefer deprecation over removal**: Add deprecation warnings rather than immediately removing
public APIs
- **Provide migration paths**: Include clear upgrade instructions for any breaking changes
- **Follow our deprecation policy**: Wait at least two versions before removing deprecated items
- **Consider feature flags**: Use feature flags for experimental or potentially disruptive changes
- **Document breaking changes**: Clearly mark breaking changes in commit messages and PR descriptions
See our [deprecation notice policy](#deprecation-notice) for more details.
### Code formatting
Run `cargo make format` before committing to ensure that code is consistently formatted with
rustfmt. Configuration is in [rustfmt.toml](./rustfmt.toml).
Run `cargo xtask format` before committing to ensure that code is consistently formatted with
rustfmt. Configuration is in [`rustfmt.toml`](./rustfmt.toml). We use some unstable formatting
options as they lead to subjectively better formatting. These require a nightly version of Rust
to be installed when running rustfmt. You can install the nightly version of Rust using
[`rustup`](https://rustup.rs/):
```shell
rustup install nightly
```
> [!IMPORTANT]
> Do not modify formatting configuration (`rustfmt.toml`, `.clippy.toml`) without
> prior discussion. These changes affect all contributors and should be carefully considered.
### Search `tui-rs` for similar work
@@ -56,11 +104,18 @@ documented.
### Run CI tests before pushing a PR
We're using [cargo-husky](https://github.com/rhysd/cargo-husky) to automatically run git hooks,
which will run `cargo make ci` before each push. To initialize the hook run `cargo test`. If
`cargo-make` is not installed, it will provide instructions to install it for you. This will ensure
that your code is formatted, compiles and passes all tests before you push. If you need to skip this
check, you can use `git push --no-verify`.
Running `cargo xtask ci` before pushing will perform the same checks that we do in the CI process.
It's not mandatory to do this before pushing, however it may save you time to do so instead of
waiting for GitHub to run the checks.
Available xtask commands:
- `cargo xtask ci` - Run all CI checks
- `cargo xtask format` - Format code
- `cargo xtask lint` - Run linting checks
- `cargo xtask test` - Run all tests
Run `cargo xtask --help` to see all available commands.
### Sign your commits
@@ -69,31 +124,64 @@ they are signed. To set up your machine to sign commits, see [managing commit si
verification](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification)
in GitHub docs.
### Configuration and build system changes
Changes to project configuration files require special consideration:
- Linting configuration (`.clippy.toml`, `rustfmt.toml`): Affects all contributors.
- CI configuration (`.github/workflows/`): Affects build and deployment.
- Build system (`xtask/`, `Cargo.toml` workspace config): Affects development workflow.
- Dependencies: Consider MSRV compatibility and licensing.
Please discuss these changes in an issue before implementing them.
### Collaborative development
We may occasionally make changes directly to your branch—such as force-pushes—to help move a PR
forward, speed up review, or ensure it meets our quality standards. If you would prefer we do not do
this, or if your workflow depends on us avoiding force-pushes (for example, if your app points to
your branch in `Cargo.toml`), please mention this in your PR description and we will respect your
preference.
## Implementation Guidelines
### Setup
Clone the repo and build it using [cargo-make](https://sagiegurari.github.io/cargo-make/)
TL;DR: Clone the repo and build it using `cargo xtask`.
Ratatui is an ordinary Rust project where common tasks are managed with
[cargo-make](https://github.com/sagiegurari/cargo-make/). It wraps common `cargo` commands with sane
[cargo-xtask](https://github.com/matklad/cargo-xtask). It wraps common `cargo` commands with sane
defaults depending on your platform of choice. Building the project should be as easy as running
`cargo make build`.
`cargo xtask build`.
```shell
git clone https://github.com/ratatui-org/ratatui.git
git clone https://github.com/ratatui/ratatui.git
cd ratatui
cargo make build
cargo xtask build
```
### Architecture
For an understanding of the crate organization and design decisions, see [ARCHITECTURE.md]. This
document explains the modular workspace structure introduced in version 0.30.0 and provides
guidance on which crate to use for different use cases.
When making changes, consider:
- Which crate should contain your changes per the modular structure,
- Whether your changes affect the public API of `ratatui-core` (requires extra care),
- And how your changes fit into the overall architecture.
[ARCHITECTURE.md]: https://github.com/ratatui/ratatui/blob/main/ARCHITECTURE.md
### Tests
The [test coverage](https://app.codecov.io/gh/ratatui-org/ratatui) of the crate is reasonably
The [test coverage](https://app.codecov.io/gh/ratatui/ratatui) of the crate is reasonably
good, but this can always be improved. Focus on keeping the tests simple and obvious and write unit
tests for all new or modified code. Beside the usual doc and unit tests, one of the most valuable
test you can write for Ratatui is a test against the `TestBackend`. It allows you to assert the
content of the output buffer that would have been flushed to the terminal after a given draw call.
See `widgets_block_renders` in [tests/widgets_block.rs](./tests/widget_block.rs) for an example.
See `widgets_block_renders` in [ratatui/tests/widgets_block.rs](./ratatui/tests/widgets_block.rs) for an example.
When writing tests, generally prefer to write unit tests and doc tests directly in the code file
being tested rather than integration tests in the `tests/` folder.
@@ -102,6 +190,10 @@ If an area that you're making a change in is not tested, write tests to characte
behavior before changing it. This helps ensure that we don't introduce bugs to existing software
using Ratatui (and helps make it easy to migrate apps still using `tui-rs`).
> [!IMPORTANT]
> Do not remove existing tests without clear justification. If tests need to be
> modified due to API changes, explain why in your PR description.
For coverage, we have two [bacon](https://dystroy.org/bacon/) jobs (one for all tests, and one for
unit tests, keyboard shortcuts `v` and `u` respectively) that run
[cargo-llvm-cov](https://github.com/taiki-e/cargo-llvm-cov) to report the coverage. Several plugins
@@ -149,7 +241,7 @@ fn foo() {}
```
- Max line length is 100 characters
See [vscode rewrap extension](https://marketplace.visualstudio.com/items?itemName=stkb.rewrap)
See [VS Code rewrap extension](https://marketplace.visualstudio.com/items?itemName=stkb.rewrap)
- Doc comments are above macros
i.e.
@@ -165,26 +257,34 @@ i.e. ``[`Block`]``, **NOT** ``[Block]``
### Deprecation notice
We generally want to wait at least two versions before removing deprecated items so users have
We generally want to wait at least two versions before removing deprecated items, so users have
time to update. However, if a deprecation is blocking for us to implement a new feature we may
*consider* removing it in a one version notice.
Deprecation process:
1. Add `#[deprecated]` attribute with a clear message.
2. Update documentation to point to the replacement.
3. Add an entry to `BREAKING-CHANGES.md` if applicable.
4. Wait at least two versions before removal.
5. Consider the impact on the ecosystem before removing.
### Use of unsafe for optimization purposes
We don't currently use any unsafe code in Ratatui, and would like to keep it that way. However there
We don't currently use any unsafe code in Ratatui, and would like to keep it that way. However, there
may be specific cases that this becomes necessary in order to avoid slowness. Please see [this
discussion](https://github.com/ratatui-org/ratatui/discussions/66) for more about the decision.
discussion](https://github.com/ratatui/ratatui/discussions/66) for more about the decision.
## Continuous Integration
We use Github Actions for the CI where we perform the following checks:
We use GitHub Actions for the CI where we perform the following checks:
- The code should compile on `stable` and the Minimum Supported Rust Version (MSRV).
- The tests (docs, lib, tests and examples) should pass.
- The code should conform to the default format enforced by `rustfmt`.
- The code should not contain common style issues `clippy`.
You can also check most of those things yourself locally using `cargo make ci` which will offer you
You can also check most of those things yourself locally using `cargo xtask ci` which will offer you
a shorter feedback loop than pushing to github.
## Relationship with `tui-rs`
@@ -193,12 +293,12 @@ This project was forked from [`tui-rs`](https://github.com/fdehau/tui-rs/) in Fe
[blessing of the original author](https://github.com/fdehau/tui-rs/issues/654), Florian Dehau
([@fdehau](https://github.com/fdehau)).
The original repository contains all the issues, PRs and discussion that were raised originally, and
The original repository contains all the issues, PRs, and discussion that were raised originally, and
it is useful to refer to when contributing code, documentation, or issues with Ratatui.
We imported all the PRs from the original repository and implemented many of the smaller ones and
We imported all the PRs from the original repository, implemented many of the smaller ones, and
made notes on the leftovers. These are marked as draft PRs and labelled as [imported from
tui](https://github.com/ratatui-org/ratatui/pulls?q=is%3Apr+is%3Aopen+label%3A%22imported+from+tui%22).
tui](https://github.com/ratatui/ratatui/pulls?q=is%3Apr+is%3Aopen+label%3A%22imported+from+tui%22).
We have documented the current state of those PRs, and anyone is welcome to pick them up and
continue the work on them.

4680
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,73 +1,90 @@
[package]
name = "ratatui"
version = "0.26.2" # crate version
[workspace]
resolver = "2"
members = ["ratatui", "ratatui-*", "xtask", "examples/apps/*", "examples/concepts/*"]
default-members = [
"ratatui",
"ratatui-core",
"ratatui-crossterm",
# this is not included as it doesn't compile on windows
# "ratatui-termion",
"ratatui-macros",
"ratatui-termwiz",
"ratatui-widgets",
"examples/apps/*",
"examples/concepts/*",
]
[workspace.package]
authors = ["Florian Dehau <work@fdehau.com>", "The Ratatui Developers"]
description = "A library that's all about cooking up terminal user interfaces"
documentation = "https://docs.rs/ratatui/latest/ratatui/"
repository = "https://github.com/ratatui-org/ratatui"
repository = "https://github.com/ratatui/ratatui"
homepage = "https://ratatui.rs"
keywords = ["tui", "terminal", "dashboard"]
categories = ["command-line-interface"]
readme = "README.md"
license = "MIT"
exclude = [
"assets/*",
".github",
"Makefile.toml",
"CONTRIBUTING.md",
"*.log",
"tags",
]
autoexamples = true
edition = "2021"
rust-version = "1.74.0"
exclude = ["assets/*", ".github", "Makefile.toml", "CONTRIBUTING.md", "*.log", "tags"]
edition = "2024"
rust-version = "1.86.0"
[badges]
[workspace.dependencies]
anstyle = "1"
bitflags = "2.10"
clap = { version = "4.5", features = ["derive"] }
color-eyre = "0.6"
compact_str = { version = "0.9", default-features = false }
criterion = { version = "0.8", features = ["html_reports"] }
crossterm = "0.29"
document-features = "0.2"
fakeit = "1"
futures = "0.3"
hashbrown = "0.16"
indoc = "2"
instability = "0.3"
itertools = { version = "0.14", default-features = false, features = ["use_alloc"] }
kasuari = { version = "0.4", default-features = false }
line-clipping = "0.3"
lru = "0.16"
octocrab = "0.49"
palette = "0.7"
pretty_assertions = "1"
rand = "0.9"
rand_chacha = "0.9"
ratatui = { path = "ratatui", version = "0.30.0" }
ratatui-core = { path = "ratatui-core", version = "0.1.0" }
ratatui-crossterm = { path = "ratatui-crossterm", version = "0.1.0" }
ratatui-macros = { path = "ratatui-macros", version = "0.7.0" }
ratatui-termion = { path = "ratatui-termion", version = "0.1.0" }
ratatui-termwiz = { path = "ratatui-termwiz", version = "0.1.0" }
ratatui-widgets = { path = "ratatui-widgets", version = "0.3.0" }
rstest = "0.26"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
strum = { version = "0.27", default-features = false, features = ["derive"] }
termion = "4"
termwiz = "0.23"
thiserror = { version = "2", default-features = false }
time = { version = "0.3.37", default-features = false }
tokio = "1"
tokio-stream = "0.1"
tracing = "0.1"
tracing-appender = "0.2"
tracing-subscriber = "0.3"
trybuild = "1"
unicode-segmentation = "1"
unicode-truncate = { version = "2", default-features = false }
# See <https://github.com/ratatui/ratatui/issues/1271> for information about why we pin unicode-width
unicode-width = ">=0.2.0, <=0.2.2"
[dependencies]
crossterm = { version = "0.27", optional = true }
termion = { version = "3.0", optional = true }
termwiz = { version = "0.22.0", optional = true }
# Improve benchmark consistency
[profile.bench]
codegen-units = 1
lto = true
serde = { version = "1", optional = true, features = ["derive"] }
bitflags = "2.3"
cassowary = "0.3"
indoc = "2.0"
itertools = "0.12"
paste = "1.0.2"
strum = { version = "0.26", features = ["derive"] }
time = { version = "0.3.11", optional = true, features = ["local-offset"] }
unicode-segmentation = "1.10"
unicode-width = "0.1"
document-features = { version = "0.2.7", optional = true }
lru = "0.12.0"
stability = "0.2.0"
compact_str = "0.7.1"
[dev-dependencies]
anyhow = "1.0.71"
argh = "0.1.12"
better-panic = "0.3.0"
cargo-husky = { version = "1.5.0", default-features = false, features = [
"user-hooks",
] }
color-eyre = "0.6.2"
criterion = { version = "0.5.1", features = ["html_reports"] }
derive_builder = "0.20.0"
fakeit = "1.1"
font8x8 = "0.3.1"
palette = "0.7.3"
pretty_assertions = "1.4.0"
rand = "0.8.5"
rand_chacha = "0.3.1"
rstest = "0.19.0"
serde_json = "1.0.109"
[lints.rust]
[workspace.lints.rust]
unsafe_code = "forbid"
[lints.clippy]
cargo = { level = "warn", priority = -1 }
[workspace.lints.clippy]
pedantic = { level = "warn", priority = -1 }
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
@@ -77,7 +94,10 @@ missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
wildcard_imports = "allow"
# we often split up a module into multiple files with the main type in a file named after the
# module, so we want to allow this pattern
module_inception = "allow"
# nursery or restricted
as_underscore = "warn"
@@ -87,245 +107,17 @@ empty_line_after_doc_comments = "warn"
equatable_if_let = "warn"
fn_to_numeric_cast_any = "warn"
format_push_string = "warn"
implicit_clone = "warn"
map_err_ignore = "warn"
missing_const_for_fn = "warn"
mixed_read_write_in_expression = "warn"
mod_module_files = "warn"
needless_pass_by_ref_mut = "warn"
needless_raw_strings = "warn"
or_fun_call = "warn"
redundant_type_annotations = "warn"
rest_pat_in_fully_bound_structs = "warn"
string_lit_chars_any = "warn"
string_to_string = "warn"
string_slice = "warn"
unnecessary_self_imports = "warn"
use_self = "warn"
[features]
#! The crate provides a set of optional features that can be enabled in your `cargo.toml` file.
#!
## By default, we enable the crossterm backend as this is a reasonable choice for most applications
## as it is supported on Linux/Mac/Windows systems. We also enable the `underline-color` feature
## which allows you to set the underline color of text.
default = ["crossterm", "underline-color"]
#! Generally an application will only use one backend, so you should only enable one of the following features:
## enables the [`CrosstermBackend`] backend and adds a dependency on the [Crossterm crate].
crossterm = ["dep:crossterm"]
## enables the [`TermionBackend`] backend and adds a dependency on the [Termion crate].
termion = ["dep:termion"]
## enables the [`TermwizBackend`] backend and adds a dependency on the [Termwiz crate].
termwiz = ["dep:termwiz"]
#! The following optional features are available for all backends:
## enables serialization and deserialization of style and color types using the [Serde crate].
## This is useful if you want to save themes to a file.
serde = ["dep:serde", "bitflags/serde", "compact_str/serde"]
## enables the [`border!`] macro.
macros = []
## enables all widgets.
all-widgets = ["widget-calendar"]
#! Widgets that add dependencies are gated behind feature flags to prevent unused transitive
#! dependencies. The available features are:
## enables the [`calendar`] widget module and adds a dependency on the [Time crate].
widget-calendar = ["dep:time"]
#! Underline color is only supported by the [`CrosstermBackend`] backend, and is not supported
#! on Windows 7.
## enables the backend code that sets the underline color.
underline-color = ["dep:crossterm"]
#! The following features are unstable and may change in the future:
## Enable all unstable features.
unstable = ["unstable-rendered-line-info", "unstable-widget-ref"]
## Enables the [`Paragraph::line_count`](crate::widgets::Paragraph::line_count)
## [`Paragraph::line_width`](crate::widgets::Paragraph::line_width) methods
## which are experimental and may change in the future.
## See [Issue 293](https://github.com/ratatui-org/ratatui/issues/293) for more details.
unstable-rendered-line-info = []
## Enables the `WidgetRef` and `StatefulWidgetRef` traits which are experimental and may change in
## the future.
unstable-widget-ref = []
[package.metadata.docs.rs]
all-features = true
# see https://doc.rust-lang.org/nightly/rustdoc/scraped-examples.html
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
rustdoc-args = ["--cfg", "docsrs"]
[[bench]]
name = "barchart"
harness = false
[[bench]]
name = "block"
harness = false
[[bench]]
name = "list"
harness = false
[lib]
bench = false
[[bench]]
name = "paragraph"
harness = false
[[bench]]
name = "sparkline"
harness = false
[[example]]
name = "barchart"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "block"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "canvas"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "calendar"
required-features = ["crossterm", "widget-calendar"]
doc-scrape-examples = true
[[example]]
name = "chart"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "colors"
required-features = ["crossterm"]
# this example is a bit verbose, so we don't want to include it in the docs
doc-scrape-examples = false
[[example]]
name = "colors_rgb"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "custom_widget"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "demo"
# this runs for all of the terminal backends, so it can't be built using --all-features or scraped
doc-scrape-examples = false
[[example]]
name = "demo2"
required-features = ["crossterm", "widget-calendar"]
doc-scrape-examples = true
[[example]]
name = "docsrs"
required-features = ["crossterm"]
doc-scrape-examples = false
[[example]]
name = "gauge"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "hello_world"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "layout"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "constraints"
required-features = ["crossterm"]
doc-scrape-examples = false
[[example]]
name = "flex"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "constraint-explorer"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "list"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "modifiers"
required-features = ["crossterm"]
# this example is a bit verbose, so we don't want to include it in the docs
doc-scrape-examples = false
[[example]]
name = "panic"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "paragraph"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "popup"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "ratatui-logo"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "scrollbar"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "sparkline"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "table"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "tabs"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "user_input"
required-features = ["crossterm"]
doc-scrape-examples = true
[[example]]
name = "inline"
required-features = ["crossterm"]
doc-scrape-examples = true
[[test]]
name = "state_serde"
required-features = ["serde"]

View File

@@ -1,7 +1,7 @@
The MIT License (MIT)
Copyright (c) 2016-2022 Florian Dehau
Copyright (c) 2023-2024 The Ratatui Developers
Copyright (c) 2023-2025 The Ratatui Developers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

16
MAINTAINERS.md Normal file
View File

@@ -0,0 +1,16 @@
# Maintainers
This file documents current and past maintainers.
- [orhun](https://github.com/orhun)
- [joshka](https://github.com/joshka)
- [kdheepak](https://github.com/kdheepak)
- [j-g00da](https://github.com/j-g00da)
## Past Maintainers
- [fdehau](https://github.com/fdehau)
- [mindoodoo](https://github.com/mindoodoo)
- [sayanarijit](https://github.com/sayanarijit)
- [EdJoPaTo](https://github.com/EdJoPaTo)
- [Valentin271](https://github.com/Valentin271)

View File

@@ -1,174 +0,0 @@
# configuration for https://github.com/sagiegurari/cargo-make
[config]
skip_core_tasks = true
[env]
# all features except the backend ones
ALL_FEATURES = "all-widgets,macros,serde"
# Windows does not support building termion, so this avoids the build failure by providing two
# sets of flags, one for Windows and one for other platforms.
# Windows: --features=all-widgets,macros,serde,crossterm,termwiz,underline-color
# Other: --features=all-widgets,macros,serde,crossterm,termion,termwiz,underline-color
ALL_FEATURES_FLAG = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = "--features=all-widgets,macros,serde,crossterm,termion,termwiz,unstable", mapping = { "windows" = "--features=all-widgets,macros,serde,crossterm,termwiz,unstable" } }
[tasks.default]
alias = "ci"
[tasks.ci]
description = "Run continuous integration tasks"
dependencies = ["lint-style", "clippy", "check", "test"]
[tasks.lint-style]
description = "Lint code style (formatting, typos, docs)"
dependencies = ["lint-format", "lint-typos", "lint-docs"]
[tasks.lint-format]
description = "Lint code formatting"
toolchain = "nightly"
command = "cargo"
args = ["fmt", "--all", "--check"]
[tasks.format]
description = "Fix code formatting"
toolchain = "nightly"
command = "cargo"
args = ["fmt", "--all"]
[tasks.lint-typos]
description = "Run typo checks"
install_crate = { crate_name = "typos-cli", binary = "typos", test_arg = "--version" }
command = "typos"
[tasks.lint-docs]
description = "Check documentation for errors and warnings"
toolchain = "nightly"
command = "cargo"
args = [
"rustdoc",
"--no-default-features",
"${ALL_FEATURES_FLAG}",
"--",
"-Zunstable-options",
"--check",
"-Dwarnings",
]
[tasks.check]
description = "Check code for errors and warnings"
command = "cargo"
args = [
"check",
"--all-targets",
"--no-default-features",
"${ALL_FEATURES_FLAG}",
]
[tasks.build]
description = "Compile the project"
command = "cargo"
args = [
"build",
"--all-targets",
"--no-default-features",
"${ALL_FEATURES_FLAG}",
]
[tasks.clippy]
description = "Run Clippy for linting"
command = "cargo"
args = [
"clippy",
"--all-targets",
"--tests",
"--benches",
"--no-default-features",
"${ALL_FEATURES_FLAG}",
"--",
"-D",
"warnings",
]
[tasks.install-nextest]
description = "Install cargo-nextest"
install_crate = { crate_name = "cargo-nextest", binary = "cargo-nextest", test_arg = "--help" }
[tasks.test]
description = "Run tests"
run_task = { name = ["test-lib", "test-doc"] }
[tasks.test-lib]
description = "Run default tests"
dependencies = ["install-nextest"]
command = "cargo"
args = [
"nextest",
"run",
"--all-targets",
"--no-default-features",
"${ALL_FEATURES_FLAG}",
]
[tasks.test-doc]
description = "Run documentation tests"
command = "cargo"
args = ["test", "--doc", "--no-default-features", "${ALL_FEATURES_FLAG}"]
[tasks.test-backend]
# takes a command line parameter to specify the backend to test (e.g. "crossterm")
description = "Run backend-specific tests"
dependencies = ["install-nextest"]
command = "cargo"
args = [
"nextest",
"run",
"--all-targets",
"--no-default-features",
"--features",
"${ALL_FEATURES},${@}",
]
[tasks.coverage]
description = "Generate code coverage report"
command = "cargo"
args = [
"llvm-cov",
"--lcov",
"--output-path",
"target/lcov.info",
"--no-default-features",
"${ALL_FEATURES_FLAG}",
]
[tasks.run-example]
private = true
condition = { env_set = ["TUI_EXAMPLE_NAME"] }
command = "cargo"
args = [
"run",
"--release",
"--example",
"${TUI_EXAMPLE_NAME}",
"--features",
"all-widgets",
]
[tasks.build-examples]
description = "Compile project examples"
command = "cargo"
args = ["build", "--examples", "--release", "--features", "all-widgets"]
[tasks.run-examples]
description = "Run project examples"
dependencies = ["build-examples"]
script = '''
#!@duckscript
files = glob_array ./examples/*.rs
for file in ${files}
name = basename ${file}
name = substring ${name} -3
set_env TUI_EXAMPLE_NAME ${name}
cm_run_task run-example
end
'''

536
README.md
View File

@@ -1,446 +1,182 @@
<details>
<summary>Table of Contents</summary>
- [Ratatui](#ratatui)
- [Installation](#installation)
- [Introduction](#introduction)
- [Other Documentation](#other-documentation)
- [Quickstart](#quickstart)
- [Status of this fork](#status-of-this-fork)
- [Rust version requirements](#rust-version-requirements)
- [Widgets](#widgets)
- [Built in](#built-in)
- [Third\-party libraries, bootstrapping templates and
widgets](#third-party-libraries-bootstrapping-templates-and-widgets)
- [Apps](#apps)
- [Alternatives](#alternatives)
- [Acknowledgments](#acknowledgments)
- [License](#license)
- [Quickstart](#quickstart)
- [Documentation](#documentation)
- [Templates](#templates)
- [Built with Ratatui](#built-with-ratatui)
- [Alternatives](#alternatives)
- [Contributing](#contributing)
- [Acknowledgements](#acknowledgements)
- [License](#license)
</details>
<!-- cargo-rdme start -->
![Demo](https://github.com/ratatui-org/ratatui/blob/1d39444e3dea6f309cf9035be2417ac711c1abc9/examples/demo2-destroy.gif?raw=true)
![Release header](https://github.com/ratatui/ratatui/blob/b23480adfa9430697071c906c7ba4d4f9bd37a73/assets/release-header.png?raw=true)
<div align="center">
[![Crate Badge]][Crate] [![Docs Badge]][API Docs] [![CI Badge]][CI Workflow] [![License
Badge]](./LICENSE) [![Sponsors Badge]][GitHub Sponsors]<br>
[![Codecov Badge]][Codecov] [![Deps.rs Badge]][Deps.rs] [![Discord Badge]][Discord Server]
[![Matrix Badge]][Matrix]<br>
[Ratatui Website] · [API Docs] · [Examples] · [Changelog] · [Breaking Changes]<br>
[Contributing] · [Report a bug] · [Request a Feature] · [Create a Pull Request]
[![Crate Badge]][Crate] [![Repo Badge]][Repo] [![Docs Badge]][Docs] [![License Badge]][License] \
[![CI Badge]][CI] [![Deps Badge]][Deps] [![Codecov Badge]][Codecov] [![Sponsors Badge]][Sponsors] \
[Ratatui Website] · [Docs] · [Widget Examples] · [App Examples] · [Changelog] \
[Breaking Changes] · [Contributing] · [Report a bug] · [Request a Feature]
</div>
# Ratatui
[Ratatui][Ratatui Website] is a crate for cooking up terminal user interfaces in Rust. It is a
lightweight library that provides a set of widgets and utilities to build complex Rust TUIs.
Ratatui was forked from the [tui-rs] crate in 2023 in order to continue its development.
## Installation
Add `ratatui` and `crossterm` as dependencies to your cargo.toml:
```shell
cargo add ratatui crossterm
```
Ratatui uses [Crossterm] by default as it works on most platforms. See the [Installation]
section of the [Ratatui Website] for more details on how to use other backends ([Termion] /
[Termwiz]).
## Introduction
Ratatui is based on the principle of immediate rendering with intermediate buffers. This means
that for each frame, your app must render all widgets that are supposed to be part of the UI.
This is in contrast to the retained mode style of rendering where widgets are updated and then
automatically redrawn on the next frame. See the [Rendering] section of the [Ratatui Website]
for more info.
You can also watch the [FOSDEM 2024 talk] about Ratatui which gives a brief introduction to
terminal user interfaces and showcases the features of Ratatui, along with a hello world demo.
## Other documentation
- [Ratatui Website] - explains the library's concepts and provides step-by-step tutorials
- [API Docs] - the full API documentation for the library on docs.rs.
- [Examples] - a collection of examples that demonstrate how to use the library.
- [Contributing] - Please read this if you are interested in contributing to the project.
- [Changelog] - generated by [git-cliff] utilizing [Conventional Commits].
- [Breaking Changes] - a list of breaking changes in the library.
[Ratatui][Ratatui Website] (_ˌræ.təˈtu.i_) is a Rust crate for cooking up terminal user interfaces
(TUIs). It provides a simple and flexible way to create text-based user interfaces in the terminal,
which can be used for command-line applications, dashboards, and other interactive console programs.
## Quickstart
The following example demonstrates the minimal amount of code necessary to setup a terminal and
render "Hello World!". The full code for this example which contains a little more detail is in
the [Examples] directory. For more guidance on different ways to structure your application see
the [Application Patterns] and [Hello World tutorial] sections in the [Ratatui Website] and the
various [Examples]. There are also several starter templates available in the [templates]
repository.
Ratatui has [templates] available to help you get started quickly. You can use the
[`cargo-generate`] command to create a new project with Ratatui:
Every application built with `ratatui` needs to implement the following steps:
```shell
cargo install --locked cargo-generate
cargo generate ratatui/templates
```
- Initialize the terminal
- A main loop to:
- Handle input events
- Draw the UI
- Restore the terminal state
The library contains a [`prelude`] module that re-exports the most commonly used traits and
types for convenience. Most examples in the documentation will use this instead of showing the
full path of each type.
### Initialize and restore the terminal
The [`Terminal`] type is the main entry point for any Ratatui application. It is a light
abstraction over a choice of [`Backend`] implementations that provides functionality to draw
each frame, clear the screen, hide the cursor, etc. It is parametrized over any type that
implements the [`Backend`] trait which has implementations for [Crossterm], [Termion] and
[Termwiz].
Most applications should enter the Alternate Screen when starting and leave it when exiting and
also enable raw mode to disable line buffering and enable reading key events. See the [`backend`
module] and the [Backends] section of the [Ratatui Website] for more info.
### Drawing the UI
The drawing logic is delegated to a closure that takes a [`Frame`] instance as argument. The
[`Frame`] provides the size of the area to draw to and allows the app to render any [`Widget`]
using the provided [`render_widget`] method. See the [Widgets] section of the [Ratatui Website]
for more info.
### Handling events
Ratatui does not include any input handling. Instead event handling can be implemented by
calling backend library methods directly. See the [Handling Events] section of the [Ratatui
Website] for more info. For example, if you are using [Crossterm], you can use the
[`crossterm::event`] module to handle events.
### Example
Selecting the Hello World template produces the following application:
```rust
use std::io::{self, stdout};
use color_eyre::Result;
use crossterm::event::{self, Event};
use ratatui::{DefaultTerminal, Frame};
use crossterm::{
event::{self, Event, KeyCode},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
};
use ratatui::{prelude::*, widgets::*};
fn main() -> io::Result<()> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let mut terminal = Terminal::new(CrosstermBackend::new(stdout()))?;
let mut should_quit = false;
while !should_quit {
terminal.draw(ui)?;
should_quit = handle_events()?;
}
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
Ok(())
fn main() -> Result<()> {
color_eyre::install()?;
let terminal = ratatui::init();
let result = run(terminal);
ratatui::restore();
result
}
fn handle_events() -> io::Result<bool> {
if event::poll(std::time::Duration::from_millis(50))? {
if let Event::Key(key) = event::read()? {
if key.kind == event::KeyEventKind::Press && key.code == KeyCode::Char('q') {
return Ok(true);
}
fn run(mut terminal: DefaultTerminal) -> Result<()> {
loop {
terminal.draw(render)?;
if matches!(event::read()?, Event::Key(_)) {
break Ok(());
}
}
Ok(false)
}
fn ui(frame: &mut Frame) {
frame.render_widget(
Paragraph::new("Hello World!")
.block(Block::bordered().title("Greeting")),
frame.size(),
);
fn render(frame: &mut Frame) {
frame.render_widget("hello world", frame.area());
}
```
Running this example produces the following output:
## Documentation
![docsrs-hello]
- [Docs] - the full API documentation for the library on docs.rs.
- [Ratatui Website] - explains the library's concepts and provides step-by-step tutorials.
- [Ratatui Forum] - a place to ask questions and discuss the library.
- [Widget Examples] - a collection of examples that demonstrate how to use the library.
- [App Examples] - a collection of more complex examples that demonstrate how to build apps.
- [ARCHITECTURE.md] - explains the crate organization and modular workspace structure.
- [Changelog] - generated by [git-cliff] utilizing [Conventional Commits].
- [Breaking Changes] - a list of breaking changes in the library.
## Layout
You can also watch the [EuroRust 2024 talk] to learn about common concepts in Ratatui and what's
possible to build with it.
The library comes with a basic yet useful layout management object called [`Layout`] which
allows you to split the available space into multiple areas and then render widgets in each
area. This lets you describe a responsive terminal UI by nesting layouts. See the [Layout]
section of the [Ratatui Website] for more info.
## Templates
```rust
use ratatui::{prelude::*, widgets::*};
If you're looking to get started quickly, you can use one of the available templates from the
[templates] repository using [`cargo-generate`]:
fn ui(frame: &mut Frame) {
let main_layout = Layout::new(
Direction::Vertical,
[
Constraint::Length(1),
Constraint::Min(0),
Constraint::Length(1),
],
)
.split(frame.size());
frame.render_widget(
Block::new().borders(Borders::TOP).title("Title Bar"),
main_layout[0],
);
frame.render_widget(
Block::new().borders(Borders::TOP).title("Status Bar"),
main_layout[2],
);
let inner_layout = Layout::new(
Direction::Horizontal,
[Constraint::Percentage(50), Constraint::Percentage(50)],
)
.split(main_layout[1]);
frame.render_widget(
Block::bordered().title("Left"),
inner_layout[0],
);
frame.render_widget(
Block::bordered().title("Right"),
inner_layout[1],
);
}
```shell
cargo generate ratatui/templates
```
Running this example produces the following output:
## Built with Ratatui
![docsrs-layout]
[![Awesome](https://awesome.re/badge-flat2.svg)][awesome-ratatui]
## Text and styling
The [`Text`], [`Line`] and [`Span`] types are the building blocks of the library and are used in
many places. [`Text`] is a list of [`Line`]s and a [`Line`] is a list of [`Span`]s. A [`Span`]
is a string with a specific style.
The [`style` module] provides types that represent the various styling options. The most
important one is [`Style`] which represents the foreground and background colors and the text
attributes of a [`Span`]. The [`style` module] also provides a [`Stylize`] trait that allows
short-hand syntax to apply a style to widgets and text. See the [Styling Text] section of the
[Ratatui Website] for more info.
```rust
use ratatui::{prelude::*, widgets::*};
fn ui(frame: &mut Frame) {
let areas = Layout::new(
Direction::Vertical,
[
Constraint::Length(1),
Constraint::Length(1),
Constraint::Length(1),
Constraint::Length(1),
Constraint::Min(0),
],
)
.split(frame.size());
let span1 = Span::raw("Hello ");
let span2 = Span::styled(
"World",
Style::new()
.fg(Color::Green)
.bg(Color::White)
.add_modifier(Modifier::BOLD),
);
let span3 = "!".red().on_light_yellow().italic();
let line = Line::from(vec![span1, span2, span3]);
let text: Text = Text::from(vec![line]);
frame.render_widget(Paragraph::new(text), areas[0]);
// or using the short-hand syntax and implicit conversions
frame.render_widget(
Paragraph::new("Hello World!".red().on_white().bold()),
areas[1],
);
// to style the whole widget instead of just the text
frame.render_widget(
Paragraph::new("Hello World!").style(Style::new().red().on_white()),
areas[2],
);
// or using the short-hand syntax
frame.render_widget(Paragraph::new("Hello World!").blue().on_yellow(), areas[3]);
}
```
Running this example produces the following output:
![docsrs-styling]
[Ratatui Website]: https://ratatui.rs/
[Installation]: https://ratatui.rs/installation/
[Rendering]: https://ratatui.rs/concepts/rendering/
[Application Patterns]: https://ratatui.rs/concepts/application-patterns/
[Hello World tutorial]: https://ratatui.rs/tutorials/hello-world/
[Backends]: https://ratatui.rs/concepts/backends/
[Widgets]: https://ratatui.rs/how-to/widgets/
[Handling Events]: https://ratatui.rs/concepts/event-handling/
[Layout]: https://ratatui.rs/how-to/layout/
[Styling Text]: https://ratatui.rs/how-to/render/style-text/
[templates]: https://github.com/ratatui-org/templates/
[Examples]: https://github.com/ratatui-org/ratatui/tree/main/examples/README.md
[Report a bug]: https://github.com/ratatui-org/ratatui/issues/new?labels=bug&projects=&template=bug_report.md
[Request a Feature]: https://github.com/ratatui-org/ratatui/issues/new?labels=enhancement&projects=&template=feature_request.md
[Create a Pull Request]: https://github.com/ratatui-org/ratatui/compare
[git-cliff]: https://git-cliff.org
[Conventional Commits]: https://www.conventionalcommits.org
[API Docs]: https://docs.rs/ratatui
[Changelog]: https://github.com/ratatui-org/ratatui/blob/main/CHANGELOG.md
[Contributing]: https://github.com/ratatui-org/ratatui/blob/main/CONTRIBUTING.md
[Breaking Changes]: https://github.com/ratatui-org/ratatui/blob/main/BREAKING-CHANGES.md
[FOSDEM 2024 talk]: https://www.youtube.com/watch?v=NU0q6NOLJ20
[docsrs-hello]: https://github.com/ratatui-org/ratatui/blob/c3c3c289b1eb8d562afb1931adb4dc719cd48490/examples/docsrs-hello.png?raw=true
[docsrs-layout]: https://github.com/ratatui-org/ratatui/blob/c3c3c289b1eb8d562afb1931adb4dc719cd48490/examples/docsrs-layout.png?raw=true
[docsrs-styling]: https://github.com/ratatui-org/ratatui/blob/c3c3c289b1eb8d562afb1931adb4dc719cd48490/examples/docsrs-styling.png?raw=true
[`Frame`]: terminal::Frame
[`render_widget`]: terminal::Frame::render_widget
[`Widget`]: widgets::Widget
[`Layout`]: layout::Layout
[`Text`]: text::Text
[`Line`]: text::Line
[`Span`]: text::Span
[`Style`]: style::Style
[`style` module]: style
[`Stylize`]: style::Stylize
[`Backend`]: backend::Backend
[`backend` module]: backend
[`crossterm::event`]: https://docs.rs/crossterm/latest/crossterm/event/index.html
[Crate]: https://crates.io/crates/ratatui
[Crossterm]: https://crates.io/crates/crossterm
[Termion]: https://crates.io/crates/termion
[Termwiz]: https://crates.io/crates/termwiz
[tui-rs]: https://crates.io/crates/tui
[GitHub Sponsors]: https://github.com/sponsors/ratatui-org
[Crate Badge]: https://img.shields.io/crates/v/ratatui?logo=rust&style=flat-square&logoColor=E05D44&color=E05D44
[License Badge]: https://img.shields.io/crates/l/ratatui?style=flat-square&color=1370D3
[CI Badge]: https://img.shields.io/github/actions/workflow/status/ratatui-org/ratatui/ci.yml?style=flat-square&logo=github
[CI Workflow]: https://github.com/ratatui-org/ratatui/actions/workflows/ci.yml
[Codecov Badge]:
https://img.shields.io/codecov/c/github/ratatui-org/ratatui?logo=codecov&style=flat-square&token=BAQ8SOKEST&color=C43AC3&logoColor=C43AC3
[Codecov]: https://app.codecov.io/gh/ratatui-org/ratatui
[Deps.rs Badge]: https://deps.rs/repo/github/ratatui-org/ratatui/status.svg?style=flat-square
[Deps.rs]: https://deps.rs/repo/github/ratatui-org/ratatui
[Discord Badge]:
https://img.shields.io/discord/1070692720437383208?label=discord&logo=discord&style=flat-square&color=1370D3&logoColor=1370D3
[Discord Server]: https://discord.gg/pMCEU9hNEj
[Docs Badge]: https://img.shields.io/docsrs/ratatui?logo=rust&style=flat-square&logoColor=E05D44
[Matrix Badge]:
https://img.shields.io/matrix/ratatui-general%3Amatrix.org?style=flat-square&logo=matrix&label=Matrix&color=C43AC3
[Matrix]: https://matrix.to/#/#ratatui:matrix.org
[Sponsors Badge]: https://img.shields.io/github/sponsors/ratatui-org?logo=github&style=flat-square&color=1370D3
<!-- cargo-rdme end -->
## Status of this fork
In response to the original maintainer [**Florian Dehau**](https://github.com/fdehau)'s issue
regarding the [future of `tui-rs`](https://github.com/fdehau/tui-rs/issues/654), several members of
the community forked the project and created this crate. We look forward to continuing the work
started by Florian 🚀
In order to organize ourselves, we currently use a [Discord server](https://discord.gg/pMCEU9hNEj),
feel free to join and come chat! There is also a [Matrix](https://matrix.org/) bridge available at
[#ratatui:matrix.org](https://matrix.to/#/#ratatui:matrix.org).
While we do utilize Discord for coordinating, it's not essential for contributing.
Our primary open-source workflow is centered around GitHub.
For significant discussions, we rely on GitHub — please open an issue, a discussion or a PR.
Please make sure you read the updated [contributing](./CONTRIBUTING.md) guidelines, especially if
you are interested in working on a PR or issue opened in the previous repository.
## Rust version requirements
Since version 0.23.0, The Minimum Supported Rust Version (MSRV) of `ratatui` is 1.67.0.
## Widgets
### Built in
The library comes with the following
[widgets](https://docs.rs/ratatui/latest/ratatui/widgets/index.html):
- [BarChart](https://docs.rs/ratatui/latest/ratatui/widgets/struct.BarChart.html)
- [Block](https://docs.rs/ratatui/latest/ratatui/widgets/block/struct.Block.html)
- [Calendar](https://docs.rs/ratatui/latest/ratatui/widgets/calendar/index.html)
- [Canvas](https://docs.rs/ratatui/latest/ratatui/widgets/canvas/struct.Canvas.html) which allows
rendering [points, lines, shapes and a world
map](https://docs.rs/ratatui/latest/ratatui/widgets/canvas/index.html)
- [Chart](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Chart.html)
- [Clear](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Clear.html)
- [Gauge](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Gauge.html)
- [List](https://docs.rs/ratatui/latest/ratatui/widgets/struct.List.html)
- [Paragraph](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Paragraph.html)
- [Scrollbar](https://docs.rs/ratatui/latest/ratatui/widgets/scrollbar/struct.Scrollbar.html)
- [Sparkline](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Sparkline.html)
- [Table](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Table.html)
- [Tabs](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Tabs.html)
Each widget has an associated example which can be found in the [Examples] folder. Run each example
with cargo (e.g. to run the gauge example `cargo run --example gauge`), and quit by pressing `q`.
You can also run all examples by running `cargo make run-examples` (requires `cargo-make` that can
be installed with `cargo install cargo-make`).
### Third-party libraries, bootstrapping templates and widgets
- [ansi-to-tui](https://github.com/uttarayan21/ansi-to-tui) — Convert ansi colored text to
`ratatui::text::Text`
- [color-to-tui](https://github.com/uttarayan21/color-to-tui) — Parse hex colors to
`ratatui::style::Color`
- [templates](https://github.com/ratatui-org/templates) — Starter templates for
bootstrapping a Rust TUI application with Ratatui & crossterm
- [tui-builder](https://github.com/jkelleyrtp/tui-builder) — Batteries-included MVC framework for
Tui-rs + Crossterm apps
- [tui-clap](https://github.com/kegesch/tui-clap-rs) — Use clap-rs together with Tui-rs
- [tui-log](https://github.com/kegesch/tui-log-rs) — Example of how to use logging with Tui-rs
- [tui-logger](https://github.com/gin66/tui-logger) — Logger and Widget for Tui-rs
- [tui-realm](https://github.com/veeso/tui-realm) — Tui-rs framework to build stateful applications
with a React/Elm inspired approach
- [tui-realm-treeview](https://github.com/veeso/tui-realm-treeview) — Treeview component for
Tui-realm
- [tui-rs-tree-widgets](https://github.com/EdJoPaTo/tui-rs-tree-widget) — Widget for tree data
structures.
- [tui-windows](https://github.com/markatk/tui-windows-rs) — Tui-rs abstraction to handle multiple
windows and their rendering
- [tui-textarea](https://github.com/rhysd/tui-textarea) — Simple yet powerful multi-line text editor
widget supporting several key shortcuts, undo/redo, text search, etc.
- [tui-input](https://github.com/sayanarijit/tui-input) — TUI input library supporting multiple
backends and tui-rs.
- [tui-term](https://github.com/a-kenji/tui-term) — A pseudoterminal widget library
that enables the rendering of terminal applications as ratatui widgets.
## Apps
Check out [awesome-ratatui](https://github.com/ratatui-org/awesome-ratatui) for a curated list of
awesome apps/libraries built with `ratatui`!
Check out the [showcase] section of the website, or the [awesome-ratatui] repository for a curated
list of awesome apps and libraries built with Ratatui!
## Alternatives
You might want to checkout [Cursive](https://github.com/gyscos/Cursive) for an alternative solution
to build text user interfaces in Rust.
- [Cursive](https://crates.io/crates/cursive) - a ncurses-based TUI library.
- [iocraft](https://crates.io/crates/iocraft) - a declarative TUI library.
## Acknowledgments
## Contributing
Special thanks to [**Pavel Fomchenkov**](https://github.com/nawok) for his work in designing **an
awesome logo** for the ratatui project and ratatui-org organization.
[![Discord Badge]][Discord Server] [![Matrix Badge]][Matrix] [![Forum Badge]][Ratatui Forum]
Feel free to join our [Discord server](https://discord.gg/pMCEU9hNEj) for discussions and questions!
There is also a [Matrix](https://matrix.org/) bridge available at
[#ratatui:matrix.org](https://matrix.to/#/#ratatui:matrix.org). We have also recently launched the
[Ratatui Forum].
We rely on GitHub for [bugs][Report a bug] and [feature requests][Request a Feature].
Please make sure you read the [contributing](./CONTRIBUTING.md) guidelines before [creating a pull
request][Create a Pull Request]. We accept AI generated code, but please read the [AI Contributions]
guidelines to ensure compliance.
If you'd like to show your support, you can add the Ratatui badge to your project's README:
```md
[![Built With Ratatui](https://img.shields.io/badge/Built_With_Ratatui-000?logo=ratatui&logoColor=fff)](https://ratatui.rs/)
```
[![Built With Ratatui](https://img.shields.io/badge/Built_With_Ratatui-000?logo=ratatui&logoColor=fff)](https://ratatui.rs/)
## Acknowledgements
Ratatui was forked from the [tui-rs] crate in 2023 in order to continue its development. None of
this could be possible without [Florian Dehau] who originally created [tui-rs] which inspired many
Rust TUIs.
Special thanks to [Pavel Fomchenkov] for his work in designing an awesome logo for the Ratatui
project and organization.
## License
[MIT](./LICENSE)
This project is licensed under the [MIT License][License].
[Repo]: https://github.com/ratatui/ratatui
[Ratatui Website]: https://ratatui.rs/
[Ratatui Forum]: https://forum.ratatui.rs
[Docs]: https://docs.rs/ratatui
[Widget Examples]: https://github.com/ratatui/ratatui/tree/main/ratatui-widgets/examples
[App Examples]: https://github.com/ratatui/ratatui/tree/main/examples
[ARCHITECTURE.md]: https://github.com/ratatui/ratatui/blob/main/ARCHITECTURE.md
[Changelog]: https://github.com/ratatui/ratatui/blob/main/CHANGELOG.md
[git-cliff]: https://git-cliff.org
[Conventional Commits]: https://www.conventionalcommits.org
[Breaking Changes]: https://github.com/ratatui/ratatui/blob/main/BREAKING-CHANGES.md
[EuroRust 2024 talk]: https://www.youtube.com/watch?v=hWG51Mc1DlM
[Report a bug]: https://github.com/ratatui/ratatui/issues/new?labels=bug&projects=&template=bug_report.md
[Request a Feature]: https://github.com/ratatui/ratatui/issues/new?labels=enhancement&projects=&template=feature_request.md
[Create a Pull Request]: https://github.com/ratatui/ratatui/compare
[Contributing]: https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md
[AI Contributions]: https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#ai-generated-content
[Crate]: https://crates.io/crates/ratatui
[tui-rs]: https://crates.io/crates/tui
[Sponsors]: https://github.com/sponsors/ratatui
[Crate Badge]: https://img.shields.io/crates/v/ratatui?logo=rust&style=flat-square&color=E05D44
[Repo Badge]: https://img.shields.io/badge/repo-ratatui/ratatui-1370D3?style=flat-square&logo=github
[License Badge]: https://img.shields.io/crates/l/ratatui?style=flat-square&color=1370D3
[CI Badge]: https://img.shields.io/github/actions/workflow/status/ratatui/ratatui/ci.yml?style=flat-square&logo=github
[CI]: https://github.com/ratatui/ratatui/actions/workflows/ci.yml
[Codecov Badge]: https://img.shields.io/codecov/c/github/ratatui/ratatui?logo=codecov&style=flat-square&token=BAQ8SOKEST&color=C43AC3
[Codecov]: https://app.codecov.io/gh/ratatui/ratatui
[Deps Badge]: https://deps.rs/repo/github/ratatui/ratatui/status.svg?path=ratatui&style=flat-square
[Deps]: https://deps.rs/repo/github/ratatui/ratatui?path=ratatui
[Discord Badge]: https://img.shields.io/discord/1070692720437383208?label=discord&logo=discord&style=flat-square&color=1370D3&logoColor=1370D3
[Discord Server]: https://discord.gg/pMCEU9hNEj
[Docs Badge]: https://img.shields.io/badge/docs-ratatui-1370D3?style=flat-square&logo=rust
[Matrix Badge]: https://img.shields.io/matrix/ratatui-general%3Amatrix.org?style=flat-square&logo=matrix&label=Matrix&color=C43AC3
[Matrix]: https://matrix.to/#/#ratatui:matrix.org
[Forum Badge]: https://img.shields.io/discourse/likes?server=https%3A%2F%2Fforum.ratatui.rs&style=flat-square&logo=discourse&label=forum&color=C43AC3
[Sponsors Badge]: https://img.shields.io/github/sponsors/ratatui?logo=github&style=flat-square&color=1370D3
[templates]: https://github.com/ratatui/templates/
[showcase]: https://ratatui.rs/showcase/
[awesome-ratatui]: https://github.com/ratatui/awesome-ratatui
[Pavel Fomchenkov]: https://github.com/nawok
[Florian Dehau]: https://github.com/fdehau
[`cargo-generate`]: https://crates.io/crates/cargo-generate
[License]: ./LICENSE

View File

@@ -1,5 +1,12 @@
# Creating a Release
Our release strategy is:
> Release major versions with detailed summaries when necessary, while releasing minor versions
> weekly or as needed without extensive announcements.
>
> Versioning scheme being `0.x.y`, where `x` is the major version and `y` is the minor version.
[crates.io](https://crates.io/crates/ratatui) releases are automated via [GitHub
actions](.github/workflows/cd.yml) and triggered by pushing a tag.
@@ -12,7 +19,7 @@ actions](.github/workflows/cd.yml) and triggered by pushing a tag.
```
1. Switch branches to the images branch and copy demo2.gif to examples/, commit, and push.
1. Grab the permalink from <https://github.com/ratatui-org/ratatui/blob/images/examples/demo2.gif> and
1. Grab the permalink from <https://github.com/ratatui/ratatui/blob/images/examples/demo2.gif> and
append `?raw=true` to redirect to the actual image url. Then update the link in the main README.
Avoid adding the gif to the git repo as binary files tend to bloat repositories.
@@ -21,16 +28,16 @@ actions](.github/workflows/cd.yml) and triggered by pushing a tag.
can be used for generating the entries.
1. Ensure that any breaking changes are documented in [BREAKING-CHANGES.md](./BREAKING-CHANGES.md)
1. Commit and push the changes.
1. Create a new tag: `git tag -a v[X.Y.Z]`
1. Create a new tag: `git tag -a v[0.x.y]`
1. Push the tag: `git push --tags`
1. Wait for [Continuous Deployment](https://github.com/ratatui-org/ratatui/actions) workflow to
1. Wait for [Continuous Deployment](https://github.com/ratatui/ratatui/actions) workflow to
finish.
## Alpha Releases
Alpha releases are automatically released every Saturday via [cd.yml](./.github/workflows/cd.yml)
and can be manually be created when necessary by triggering the [Continuous
Deployment](https://github.com/ratatui-org/ratatui/actions/workflows/cd.yml) workflow.
and can be manually created when necessary by triggering the [Continuous
Deployment](https://github.com/ratatui/ratatui/actions/workflows/cd.yml) workflow.
We automatically release an alpha release with a patch level bump + alpha.num weekly (and when we
need to manually). E.g. the last release was 0.22.0, and the most recent alpha release is
@@ -40,5 +47,5 @@ These releases will have whatever happened to be in main at the time of release,
for apps that need to get releases from crates.io, but may contain more bugs and be generally less
tested than normal releases.
See [#147](https://github.com/ratatui-org/ratatui/issues/147) and
[#359](https://github.com/ratatui-org/ratatui/pull/359) for more info on the alpha release process.
See [#147](https://github.com/ratatui/ratatui/issues/147) and
[#359](https://github.com/ratatui/ratatui/pull/359) for more info on the alpha release process.

View File

@@ -6,4 +6,4 @@ We only support the latest version of this crate.
## Reporting a Vulnerability
To report secuirity vulnerability, please use the form at https://github.com/ratatui-org/ratatui/security/advisories/new
To report secuirity vulnerability, please use the form at <https://github.com/ratatui/ratatui/security/advisories/new>

1
assets/logo-simple.svg Normal file
View File

@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg"><title>Ratatui</title><path d="M17 29h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1h1v1H5v-1H4v-1H3v-1H2v-1H1v-1H0v-2h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h2zm-2 14h1v1h1v1h1v-2h-1v-1h-1v-1h-1zm0-6h-3v1h1v1h4v-4h-1v-1h-1zm35-21h-1v4h-1v1h-1v1h-1v1h-2v1h-1v1h-1v1h-1v1h-2v9h5v1h1v9h-1v1h-1v2h-1v1h-1v-1h-1v-1h-1v-1h1v-1h1v-1h1v-5h-1v1h-3v1h-1v3h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-2h1v-2h1v-1h-2v1h-4v-1h-1v-1h-1v-1h-1v-2h1v-1h1v-1h2v-1h7v-1h1v-1h1v-1h1v-1h1v-1h1v-1h4v-1h3v-1h10zm-17 2h-1v2h1v1h2v-1h1v-2h-1v-1h-2zM29 1h1v9h1v1h1v2h1v2h-1v1h-1v1h-1v1h-1v1h-1v1h-3v-1h-1v-1h-2v-1h-1v-1h-1v-1h-6v-1h-1V9h1V8h1V7h1V6h1V5h1V4h1V3h1V2h1V1h2V0h6z"/></svg>

After

Width:  |  Height:  |  Size: 831 B

1
assets/logo.svg Normal file
View File

@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg"><title>Ratatui</title><path d="M50 16h-1v4h-1v1h-1v1h-1v1h-2v1h-1v1h-1v1h-1v1h-2v9h5v1h1v9h-1v1h-1v2h-1v1h-1v-1h-1v1h-2v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-1v-1h-2v1h-1v1h-1v1h-1v1h-1v1h-1v1h-1v1H9v1H8v1H7v1H6v1H5v1H4v1H3v1H2v2h1v1h1v1h1v1h1v1h1v1H5v-1H4v-1H3v-1H2v-1H1v-1H0v-2h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h2v1h1v-1h-1v-1h-1v-2h1v-1h1v-1h2v-1h7v-1h1v-1h1v-1h1v-1h1v-1h1v-1h4v-1h3v-1h10zM39 49h1v-1h-1zm2-8h-3v1h-1v3h-1v-1h-1v1h1v1h1v1h1v1h1v-1h1v-1h1v-1h1v-5h-1zm-7 3h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-1-1h1v-1h-1zm-5-5h1v1h1v1h1v1h1v1h1v-2h1v-2h1v-1h-2v1h-4v-1h-1zm14-11h-1v2h1v1h2v-1h1v-2h-1v-1h-2zM18 40h1v1h1v2h-1v-1h-1v-1h-1v-2h1zm0-7h1v4h-4v-1h-1v-1h3v-3h1zM29 1h1v9h1v1h1v2h1v2h-1v1h-1v1h-1v1h-1v1h-1v1h-3v-1h-1v-1h-2v-1h-1v-1h-1v-1h-6v-1h-1V9h1V8h1V7h1V6h1V5h1V4h1V3h1V2h1V1h2V0h6z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -8,101 +8,80 @@
default_job = "check"
[jobs.check]
command = ["cargo", "check", "--all-features", "--color", "always"]
command = ["cargo", "xtask", "check"]
need_stdout = false
[jobs.check-all]
command = ["cargo", "check", "--all-targets", "--all-features", "--color", "always"]
command = ["cargo", "xtask", "check", "--all-features"]
need_stdout = false
[jobs.check-crossterm]
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "crossterm"]
command = ["cargo", "xtask", "check-backend", "crossterm"]
need_stdout = false
[jobs.check-termion]
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "termion"]
command = ["cargo", "xtask", "check-backend", "termion"]
need_stdout = false
[jobs.check-termwiz]
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "termwiz"]
command = ["cargo", "xtask", "check-backend", "termwiz"]
need_stdout = false
[jobs.clippy]
command = [
"cargo", "clippy",
"--all-targets",
"--color", "always",
]
[jobs.clippy-all]
command = ["cargo", "xtask", "clippy"]
need_stdout = false
[jobs.test]
command = [
"cargo", "test",
"--all-features",
"--color", "always",
"--", "--color", "always", # see https://github.com/Canop/bacon/issues/124
]
command = ["cargo", "xtask", "test"]
need_stdout = true
[jobs.test-unit]
command = [
"cargo", "test",
"--lib",
"--all-features",
"--color", "always",
"--", "--color", "always", # see https://github.com/Canop/bacon/issues/124
]
command = ["cargo", "xtask", "test-libs"]
need_stdout = true
[jobs.doc]
command = [
"cargo", "+nightly", "doc",
"-Zunstable-options", "-Zrustdoc-scrape-examples",
"--all-features",
"--color", "always",
"--no-deps",
]
env.RUSTDOCFLAGS = "--cfg docsrs"
command = ["cargo", "xtask", "docs"]
need_stdout = false
# If the doc compiles, then it opens in your browser and bacon switches
# to the previous job
[jobs.doc-open]
command = [
"cargo", "+nightly", "doc",
"-Zunstable-options", "-Zrustdoc-scrape-examples",
"--all-features",
"--color", "always",
"--no-deps",
"--open",
]
env.RUSTDOCFLAGS = "--cfg docsrs"
command = ["cargo", "xtask", "docs", "--open"]
on_success = "job:doc"
need_stdout = false
on_success = "job:doc" # so that we don't open the browser at each change
[jobs.coverage]
command = [
"cargo", "llvm-cov",
"--lcov", "--output-path", "target/lcov.info",
"--all-features",
"--color", "always",
]
command = ["cargo", "xtask", "coverage"]
[jobs.coverage-unit-tests-only]
command = [
"cargo", "llvm-cov",
"--lcov", "--output-path", "target/lcov.info",
"--lib",
"--all-features",
"--color", "always",
]
command = ["cargo", "xtask", "coverage", "--lib"]
[jobs.hack]
command = ["cargo", "xtask", "hack"]
[jobs.format]
command = ["cargo", "xtask", "format"]
[jobs.zizmor-offline]
# zizmor checks the workflow files for security issues. The offline version is generally faster, but
# checks for fewer issues.
command = ["zizmor", "--color", "always", ".github/workflows", "--offline"]
need_stdout = true
default_watch = false
watch = [".github/workflows/"]
[jobs.zizmor-online]
# zizmor checks the workflow files for security issues. The online version is a bit slower, but it
# checks for more issues
command = ["zizmor", "--color", "always", ".github/workflows"]
need_stdout = true
default_watch = false
watch = [".github/workflows/"]
# You may define here keybindings that would be specific to
# a project, for example a shortcut to launch a specific job.
# Shortcuts to internal functions (scrolling, toggling, etc.)
# should go in your personal global prefs.toml file instead.
[keybindings]
# alt-m = "job:my-job"
ctrl-h = "job:hack"
ctrl-c = "job:check-crossterm"
ctrl-t = "job:check-termion"
ctrl-w = "job:check-termwiz"
@@ -110,3 +89,6 @@ v = "job:coverage"
ctrl-v = "job:coverage-unit-tests-only"
u = "job:test-unit"
n = "job:nextest"
f = "job:format"
z = "job:zizmor-offline"
shift-z = "job:zizmor-online"

View File

@@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[remote.github]
owner = "ratatui-org"
owner = "ratatui"
repo = "ratatui"
[changelog]
@@ -11,6 +11,8 @@ header = """
# Changelog
All notable changes to this project will be documented in this file.
<!-- ignore lint rules that are often triggered by content generated from commits / git-cliff -->
<!-- markdownlint-disable line-length no-bare-urls ul-style emphasis-style -->
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
@@ -22,25 +24,27 @@ body = """
{%- if not version %}
## [unreleased]
{% else -%}
## [{{ version }}](https://github.com/ratatui-org/ratatui/releases/tag/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{%- if package -%} {# release-plz specific variable #}
## {{ package }} - [{{ version }}]({{ release_link }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{%- else -%}
## [{{ version }}]({{ self::remote_url() }}/releases/tag/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{%- endif %}
{% endif -%}
{% macro commit(commit) -%}
- [{{ commit.id | truncate(length=7, end="") }}]({{ "https://github.com/ratatui-org/ratatui/commit/" ~ commit.id }})
- [{{ commit.id | truncate(length=7, end="") }}]({{ "https://github.com/ratatui/ratatui/commit/" ~ commit.id }}) \
*({{commit.scope | default(value = "uncategorized") | lower }})* {{ commit.message | upper_first | trim }}\
{% if commit.github.username %} by @{{ commit.github.username }}{%- endif -%}\
{% if commit.github.pr_number %} in [#{{ commit.github.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.github.pr_number }}){%- endif %}\
{% if commit.remote.username %} by @{{ commit.remote.username }}{%- endif -%}\
{% if commit.remote.pr_number %} in [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.remote.pr_number }}){%- endif %}\
{%- if commit.breaking %} [**breaking**]{% endif %}
{%- if commit.body %}
````text {#- 4 backticks escape any backticks in body #}
{{commit.body | indent(prefix=" ") }}
````
{%- if commit.body %}\n\n{{ commit.body | indent(prefix=" > ", first=true, blank=true) }}
{%- endif %}
{%- for footer in commit.footers %}
{%- for footer in commit.footers %}\n
{%- if footer.token != "Signed-off-by" and footer.token != "Co-authored-by" %}
{{ footer.token | indent(prefix=" ") }}{{ footer.separator }}{{ footer.value }}
>
{{ footer.token | indent(prefix=" > ", first=true, blank=true) }}
{{- footer.separator }}
{{- footer.value| indent(prefix=" > ", first=false, blank=true) }}
{%- endif %}
{%- endfor %}
{% endmacro -%}
@@ -57,6 +61,7 @@ body = """
{%- endfor -%}
{%- endfor %}
{%- if not release_link -%}
{% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %}
### New Contributors
{%- endif %}\
@@ -66,27 +71,36 @@ body = """
[#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \
{%- endif %}
{%- endfor -%}
{%- endif -%}
{% if version %}
{% if previous.version %}
{%- if release_link -%}
**Full Changelog**: {{ release_link }} {# release-plz specific variable #}
{%- else -%}
**Full Changelog**: {{ self::remote_url() }}/compare/{{ previous.version }}...{{ version }}
{% endif %}
{% endif %}
{% else -%}
{% raw %}\n{% endraw %}
{% endif %}
{%- macro remote_url() -%}
{%- if remote.owner -%} {# release-plz specific variable #}
https://github.com/{{ remote.owner }}/{{ remote.repo }}\
{%- else -%}
https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\
{%- endif -%}
{% endmacro %}
"""
# remove the leading and trailing whitespace from the template
trim = false
# changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# postprocessors for the changelog body
postprocessors = [
{ pattern = '<!-- Please read CONTRIBUTING.md before submitting any pull request. -->', replace = "" },
{ pattern = '>---+\n', replace = '' },
{ pattern = ' +\n', replace = "\n" },
]
[git]
# parse the commits based on https://www.conventionalcommits.org
@@ -102,9 +116,21 @@ commit_preprocessors = [
{ pattern = '(Clarify README.md)', replace = "docs(readme): ${1}" },
{ pattern = '(Update README.md)', replace = "docs(readme): ${1}" },
{ pattern = '(fix typos|Fix typos)', replace = "fix: ${1}" },
# Typos that squeaked through and which would otherwise trigger the typos linter.
# Regex obsfucation is to avoid triggering the linter in this file until there's a per file config
# See https://github.com/crate-ci/typos/issues/724
{ pattern = '\<[d]eatil\>', replace = "detail" },
{ pattern = '\<[f]eatuers\>', replace = "features" },
{ pattern = '\<[s]pecically\>', replace = "specially" },
{ pattern = '\<[g]ague\>', replace = "gauge" },
{ pattern = '\<[a]rithmentic\>', replace = "arithmetic" },
{ pattern = '\<[i]ntructions\>', replace = "instructions" },
{ pattern = '\<[i]mplementated\>', replace = "implemented" },
]
# regex for parsing and grouping commits
commit_parsers = [
# release-plz adds 000000 as a placeholder for release commits
{ field = "id", pattern = "0000000", skip = true },
{ message = "^feat", group = "<!-- 00 -->Features" },
{ message = "^[fF]ix", group = "<!-- 01 -->Bug Fixes" },
{ message = "^refactor", group = "<!-- 02 -->Refactor" },
@@ -113,19 +139,23 @@ commit_parsers = [
{ message = "^style", group = "<!-- 05 -->Styling" },
{ message = "^test", group = "<!-- 06 -->Testing" },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore: release", skip = true },
{ message = "^chore\\(pr\\)", skip = true },
{ message = "^chore\\(pull\\)", skip = true },
{ message = "^chore\\(deps\\)", skip = true },
{ message = "^chore\\(changelog\\)", skip = true },
{ message = "^[cC]hore", group = "<!-- 07 -->Miscellaneous Tasks" },
{ body = ".*security", group = "<!-- 08 -->Security" },
{ message = "^build", group = "<!-- 09 -->Build" },
{ message = "^build\\(deps\\)", skip = true },
{ message = "^build\\(release\\)", skip = true },
{ message = "^build", group = "<!-- 08 -->Build" },
{ body = ".*security", group = "<!-- 09 -->Security" },
{ message = "^ci", group = "<!-- 10 -->Continuous Integration" },
{ message = "^revert", group = "<!-- 11 -->Reverted Commits" },
# handle some old commits styles from pre 0.4
{ message = "^(Buffer|buffer|Frame|frame|Gauge|gauge|Paragraph|paragraph):", group = "<!-- 07 -->Miscellaneous Tasks" },
{ message = "^\\[", group = "<!-- 07 -->Miscellaneous Tasks" },
]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false
# filter out the commits that are not matched by commit parsers
@@ -133,9 +163,9 @@ filter_commits = false
# glob pattern for matching git tags
tag_pattern = "v[0-9]*"
# regex for skipping tags
skip_tags = "v0.1.0-rc.1"
skip_tags = "beta|alpha|v0.1.0-rc.1"
# regex for ignoring tags
ignore_tags = "alpha"
ignore_tags = "rc"
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order

View File

@@ -1,15 +1 @@
# https://rust-lang.github.io/rust-clippy/master/index.html#/multiple_crate_versions
# ratatui -> bitflags v2.3
# termwiz -> wezterm-blob-leases -> mac_address -> nix -> bitflags v1.3.2
# crossterm -> all the windows- deps https://github.com/ratatui-org/ratatui/pull/1064#issuecomment-2078848980
allowed-duplicate-crates = [
"bitflags",
"windows-targets",
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
avoid-breaking-exported-api = false

View File

@@ -1,23 +1,22 @@
# configuration for https://github.com/EmbarkStudios/cargo-deny
[licenses]
default = "deny"
unlicensed = "deny"
copyleft = "deny"
version = 2
confidence-threshold = 0.8
allow = [
"Apache-2.0",
"BSD-2-Clause",
"BSD-3-Clause",
"ISC",
"MIT",
"Unicode-DFS-2016",
"WTFPL",
"Apache-2.0",
"BSD-2-Clause",
"BSD-3-Clause",
"ISC",
"MIT",
"Unicode-3.0",
"Unicode-DFS-2016",
"WTFPL",
"Zlib",
]
[advisories]
unmaintained = "deny"
yanked = "deny"
version = 2
[bans]
multiple-versions = "allow"
@@ -26,3 +25,15 @@ multiple-versions = "allow"
unknown-registry = "deny"
unknown-git = "warn"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
[[licenses.clarify]]
crate = "ring"
# SPDX considers OpenSSL to encompass both the OpenSSL and SSLeay licenses
# https://spdx.org/licenses/OpenSSL.html
# ISC - Both BoringSSL and ring use this for their new files
# MIT - "Files in third_party/ have their own licenses, as described therein. The MIT
# license, for third_party/fiat, which, unlike other third_party directories, is
# compiled into non-test libraries, is included below."
# OpenSSL - Obviously
expression = "ISC AND MIT AND OpenSSL"
license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }]

View File

@@ -1,6 +1,21 @@
# Examples
This folder might use unreleased code. View the examples for the latest release instead.
This folder contains examples that are more application focused.
> [!TIP]
> There are also [widget examples] in `ratatui-widgets`.
[widget examples]: ../ratatui-widgets/examples
You can run these examples using:
```shell
cargo run -p example-name
```
> [!NOTE]
> This folder might use unreleased code. Consider viewing the examples in the `latest` branch instead
> of the `main` branch for code which is guaranteed to work with the released Ratatui version.
> [!WARNING]
>
@@ -10,317 +25,214 @@ This folder might use unreleased code. View the examples for the latest release
> There are a few workaround for this problem:
>
> - View the examples as they were when the latest version was release by selecting the tag that
> matches that version. E.g. <https://github.com/ratatui-org/ratatui/tree/v0.26.1/examples>.
> - If you're viewing this file on GitHub, there is a combo box at the top of this page which
> matches that version. E.g. <https://github.com/ratatui/ratatui/tree/v0.26.1/examples>.
> - If you're viewing this file on GitHub, there is a combo box at the top of this page which
> allows you to select any previous tagged version.
> - To view the code locally, checkout the tag. E.g. `git switch --detach v0.26.1`.
> - Use the latest [alpha version of Ratatui] in your app. These are released weekly on Saturdays.
> - Compile your code against the main branch either locally by adding e.g. `path = "../ratatui"` to
> the dependency, or remotely by adding `git = "https://github.com/ratatui-org/ratatui"`
> the dependency, or remotely by adding `git = "https://github.com/ratatui/ratatui"`
>
> For a list of unreleased breaking changes, see [BREAKING-CHANGES.md].
>
> We don't keep the CHANGELOG updated with unreleased changes, check the git commit history or run
> `git-cliff -u` against a cloned version of this repository.
## Demo2
## Design choices
This is the demo example from the main README and crate page. Source: [demo2](./demo2/).
The examples contain some opinionated choices in order to make it easier for newer rustaceans to
easily be productive in creating applications:
```shell
cargo run --example=demo2 --features="crossterm widget-calendar"
```
- Each example has an `App` struct, with methods that implement a main loop, handle events and drawing
the UI.
- We use `color_eyre` for handling errors and panics. See [How to use color-eyre with Ratatui] on the
website for more information about this.
- Common code is not extracted into a separate file. This makes each example self-contained and easy
to read as a whole.
![Demo2][demo2.gif]
[How to use color-eyre with Ratatui]: https://ratatui.rs/recipes/apps/color-eyre/
## Demo
This is the previous demo example from the main README. It is available for each of the backends. Source:
[demo.rs](./demo/).
This is the original demo example from the main README. It is available for each of the backends.
[Source](./apps/demo/).
```shell
cargo run --example=demo --features=crossterm
cargo run --example=demo --no-default-features --features=termion
cargo run --example=demo --no-default-features --features=termwiz
```
![Demo](demo.gif)
![Demo][demo.gif]
## Demo2
## Hello World
This is the demo example from the main README and crate page. [Source](./apps/demo2/).
This is a pretty boring example, but it contains some good documentation
on writing tui apps. Source: [hello_world.rs](./hello_world.rs).
![Demo2](demo2.gif)
```shell
cargo run --example=hello_world --features=crossterm
```
## Async GitHub
![Hello World][hello_world.gif]
Shows how to fetch data from GitHub API asynchronously. [Source](./apps/async-github/).
## Barchart
![Async GitHub demo][async-github.gif]
Demonstrates the [`BarChart`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.BarChart.html)
widget. Source: [barchart.rs](./barchart.rs).
## Calendar Explorer
```shell
cargo run --example=barchart --features=crossterm
```
Shows how to render a calendar with different styles. [Source](./apps/calendar-explorer/).
![Barchart][barchart.gif]
## Block
Demonstrates the [`Block`](https://docs.rs/ratatui/latest/ratatui/widgets/block/struct.Block.html)
widget. Source: [block.rs](./block.rs).
```shell
cargo run --example=block --features=crossterm
```
![Block][block.gif]
## Calendar
Demonstrates the [`Calendar`](https://docs.rs/ratatui/latest/ratatui/widgets/calendar/index.html)
widget. Source: [calendar.rs](./calendar.rs).
```shell
cargo run --example=calendar --features="crossterm widget-calendar"
```
![Calendar][calendar.gif]
![Calendar explorer demo][calendar-explorer.gif]
## Canvas
Demonstrates the [`Canvas`](https://docs.rs/ratatui/latest/ratatui/widgets/canvas/index.html) widget
and related shapes in the
[`canvas`](https://docs.rs/ratatui/latest/ratatui/widgets/canvas/index.html) module. Source:
[canvas.rs](./canvas.rs).
Shows how to render a canvas with different shapes. [Source](./apps/canvas/).
```shell
cargo run --example=canvas --features=crossterm
```
![Canvas][canvas.gif]
![Canvas demo][canvas.gif]
## Chart
Demonstrates the [`Chart`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Chart.html) widget.
Source: [chart.rs](./chart.rs).
Shows how to render line, bar, and scatter charts. [Source](./apps/chart/).
```shell
cargo run --example=chart --features=crossterm
```
![Chart demo][chart.gif]
![Chart][chart.gif]
## Color Explorer
## Colors
Shows how to handle the supported colors. [Source](./apps/color-explorer/).
Demonstrates the available [`Color`](https://docs.rs/ratatui/latest/ratatui/style/enum.Color.html)
options. These can be used in any style field. Source: [colors.rs](./colors.rs).
![Color explorer demo][color-explorer.gif]
```shell
cargo run --example=colors --features=crossterm
```
## Colors-RGB demo
![Colors][colors.gif]
Shows the full range of RGB colors in an animation. [Source](./apps/colors-rgb/).
## Colors (RGB)
![Colors-RGB demo][colors-rgb.gif]
Demonstrates the available RGB
[`Color`](https://docs.rs/ratatui/latest/ratatui/style/enum.Color.html) options. These can be used
in any style field. Source: [colors_rgb.rs](./colors_rgb.rs). Uses a half block technique to render
two square-ish pixels in the space of a single rectangular terminal cell.
## Constraint Explorer
```shell
cargo run --example=colors_rgb --features=crossterm
```
Shows how different constraints can be used to layout widgets. [Source](./apps/constraint-explorer/).
Note: VHs renders full screen animations poorly, so this is a screen capture rather than the output
of the VHS tape.
![Constraint Explorer demo][constraint-explorer.gif]
<https://github.com/ratatui-org/ratatui/assets/381361/485e775a-e0b5-4133-899b-1e8aeb56e774>
## Constraints
Shows different types of constraints. [Source](./apps/constraints/).
![Constraints demo][constraints.gif]
## Custom Widget
Demonstrates how to implement the
[`Widget`](https://docs.rs/ratatui/latest/ratatui/widgets/trait.Widget.html) trait. Also shows mouse
interaction. Source: [custom_widget.rs](./custom_widget.rs).
Shows how to create a custom widget that can be interacted with the mouse. [Source](./apps/custom-widget/).
```shell
cargo run --example=custom_widget --features=crossterm
```
![Custom widget demo][custom-widget.gif]
![Custom Widget][custom_widget.gif]
## Hyperlink
Shows how to render hyperlinks in a terminal using [OSC
8](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda). [Source](./apps/hyperlink/).
![Hyperlink demo][hyperlink.gif]
## Flex
Shows how to use the flex layouts. [Source](./apps/flex/).
![Flex demo][flex.gif]
## Hello World
Shows how to create a simple TUI with a text. [Source](./apps/hello-world/).
![Hello World demo][hello-world.gif]
## Gauge
Demonstrates the [`Gauge`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Gauge.html) widget.
Source: [gauge.rs](./gauge.rs).
```shell
cargo run --example=gauge --features=crossterm
```
![Gauge][gauge.gif]
Shows different types of gauges. [Source](./apps/gauge/).
## Inline
Demonstrates how to use the
[`Inline`](https://docs.rs/ratatui/latest/ratatui/terminal/enum.Viewport.html#variant.Inline)
Viewport mode for ratatui apps. Source: [inline.rs](./inline.rs).
Shows how to use the inlined viewport to render in a specific area of the screen. [Source](./apps/inline/).
```shell
cargo run --example=inline --features=crossterm
```
![Inline demo][inline.gif]
![Inline][inline.gif]
## Input Form
## Layout
Demonstrates the [`Layout`](https://docs.rs/ratatui/latest/ratatui/layout/struct.Layout.html) and
interaction between each constraint. Source: [layout.rs](./layout.rs).
```shell
cargo run --example=layout --features=crossterm
```
![Layout][layout.gif]
## List
Demonstrates the [`List`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.List.html) widget.
Source: [list.rs](./list.rs).
```shell
cargo run --example=list --features=crossterm
```
![List][list.gif]
Shows how to render a form with input fields. [Source](./apps/input-form/).
## Modifiers
Demonstrates the style
[`Modifiers`](https://docs.rs/ratatui/latest/ratatui/style/struct.Modifier.html). Source:
[modifiers.rs](./modifiers.rs).
Shows different types of modifiers. [Source](./apps/modifiers/).
```shell
cargo run --example=modifiers --features=crossterm
```
![Modifiers demo][modifiers.gif]
![Modifiers][modifiers.gif]
## Mouse Drawing
Shows how to handle mouse events. [Source](./apps/mouse-drawing/).
## Minimal
Shows how to create a minimal application. [Source](./apps/minimal/).
![Minimal demo][minimal.gif]
## Panic
Demonstrates how to handle panics by ensuring that panic messages are written correctly to the
screen. Source: [panic.rs](./panic.rs).
Shows how to handle panics. [Source](./apps/panic/).
```shell
cargo run --example=panic --features=crossterm
```
![Panic][panic.gif]
## Paragraph
Demonstrates the [`Paragraph`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Paragraph.html)
widget. Source: [paragraph.rs](./paragraph.rs)
```shell
cargo run --example=paragraph --features=crossterm
```
![Paragraph][paragraph.gif]
![Panic demo][panic.gif]
## Popup
Demonstrates how to render a widget over the top of previously rendered widgets using the
[`Clear`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Clear.html) widget. Source:
[popup.rs](./popup.rs).
Shows how to handle popups. [Source](./apps/popup/).
>
```shell
cargo run --example=popup --features=crossterm
```
![Popup][popup.gif]
## Ratatui-logo
A fun example of using half blocks to render graphics Source:
[ratatui-logo.rs](./ratatui-logo.rs).
>
```shell
cargo run --example=ratatui-logo --features=crossterm
```
![Ratatui Logo][ratatui-logo.gif]
![Popup demo][popup.gif]
## Scrollbar
Demonstrates the [`Scrollbar`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Scrollbar.html)
widget. Source: [scrollbar.rs](./scrollbar.rs).
Shows how to render different types of scrollbars. [Source](./apps/scrollbar/).
```shell
cargo run --example=scrollbar --features=crossterm
```
![Scrollbar][scrollbar.gif]
## Sparkline
Demonstrates the [`Sparkline`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Sparkline.html)
widget. Source: [sparkline.rs](./sparkline.rs).
```shell
cargo run --example=sparkline --features=crossterm
```
![Sparkline][sparkline.gif]
![Scrollbar demo][scrollbar.gif]
## Table
Demonstrates the [`Table`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Table.html) widget.
Source: [table.rs](./table.rs).
Shows how to create an interactive table. [Source](./apps/table/).
```shell
cargo run --example=table --features=crossterm
```
![Table demo][table.gif]
![Table][table.gif]
## Todo List
## Tabs
Shows how to create a simple todo list application. [Source](./apps/todo-list/).
Demonstrates the [`Tabs`](https://docs.rs/ratatui/latest/ratatui/widgets/struct.Tabs.html) widget.
Source: [tabs.rs](./tabs.rs).
![Todo List demo][todo-list.gif]
```shell
cargo run --example=tabs --features=crossterm
```
## Tracing
![Tabs][tabs.gif]
Shows how to use the [tracing](https://crates.io/crates/tracing) crate to log to a file. [Source](./apps/tracing/).
![Tracing demo][tracing.gif]
## User Input
Demonstrates one approach to accepting user input. Source [user_input.rs](./user_input.rs).
Shows how to handle user input. [Source](./apps/user-input/).
> [!NOTE]
> Consider using [`tui-textarea`](https://crates.io/crates/tui-textarea) or
> [`tui-input`](https://crates.io/crates/tui-input) crates for more functional text entry UIs.
![User input demo][user-input.gif]
```shell
cargo run --example=user_input --features=crossterm
```
## Weather
![User Input][user_input.gif]
Shows how to render weather data using barchart widget. [Source](./apps/weather/).
## How to update these examples
## WidgetRef Container
Shows how to use [`WidgetRef`](https://docs.rs/ratatui/latest/ratatui/widgets/trait.WidgetRef.html) to store widgets in a container. [Source](./apps/widget-ref-container/).
## Advanced Widget Implementation
Shows how to render the `Widget` trait in different ways.
![Advanced widget impl demo][advanced-widget-impl.gif]
---
<details>
<summary>How to update these examples?</summary>
These gifs were created using [VHS](https://github.com/charmbracelet/vhs). Each example has a
corresponding `.tape` file that holds instructions for how to generate the images. Note that the
images themselves are stored in a separate `images` git branch to avoid bloating the main
repository.
images themselves are stored in a separate `images` git branch to avoid bloating the `main`
branch.
<!--
@@ -328,34 +240,36 @@ Links to images to make them easier to update in bulk. Use the following script
the examples to the images branch. (Requires push access to the branch).
```shell
examples/vhs/generate.bash
vhs/generate.bash
```
-->
[barchart.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/barchart.gif?raw=true
[block.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/block.gif?raw=true
[calendar.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/calendar.gif?raw=true
[canvas.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/canvas.gif?raw=true
[chart.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/chart.gif?raw=true
[colors.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/colors.gif?raw=true
[custom_widget.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/custom_widget.gif?raw=true
[demo.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/demo.gif?raw=true
[demo2.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/demo2.gif?raw=true
[gauge.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/gauge.gif?raw=true
[hello_world.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/hello_world.gif?raw=true
[inline.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/inline.gif?raw=true
[layout.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/layout.gif?raw=true
[list.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/list.gif?raw=true
[modifiers.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/modifiers.gif?raw=true
[panic.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/panic.gif?raw=true
[paragraph.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/paragraph.gif?raw=true
[popup.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/popup.gif?raw=true
[ratatui-logo.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/ratatui-logo.gif?raw=true
[scrollbar.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/scrollbar.gif?raw=true
[sparkline.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/sparkline.gif?raw=true
[table.gif]: https://vhs.charm.sh/vhs-6njXBytDf0rwPufUtmSSpI.gif
[tabs.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/tabs.gif?raw=true
[user_input.gif]: https://github.com/ratatui-org/ratatui/blob/images/examples/user_input.gif?raw=true
</details>
[alpha version of Ratatui]: https://crates.io/crates/ratatui/versions
[BREAKING-CHANGES.md]: https://github.com/ratatui-org/ratatui/blob/main/BREAKING-CHANGES.md
[advanced-widget-impl.gif]: https://github.com/ratatui/ratatui/blob/images/examples/advanced-widget-impl.gif?raw=true
[async-github.gif]: https://github.com/ratatui/ratatui/blob/images/examples/async-github.gif?raw=true
[calendar-explorer.gif]: https://github.com/ratatui/ratatui/blob/images/examples/calendar-explorer.gif?raw=true
[canvas.gif]: https://github.com/ratatui/ratatui/blob/images/examples/canvas.gif?raw=true
[chart.gif]: https://github.com/ratatui/ratatui/blob/images/examples/chart.gif?raw=true
[color-explorer.gif]: https://github.com/ratatui/ratatui/blob/images/examples/color-explorer.gif?raw=true
[colors-rgb.gif]: https://github.com/ratatui/ratatui/blob/images/examples/colors-rgb.gif?raw=true
[constraint-explorer.gif]: https://github.com/ratatui/ratatui/blob/images/examples/constraint-explorer.gif?raw=true
[constraints.gif]: https://github.com/ratatui/ratatui/blob/images/examples/constraints.gif?raw=true
[custom-widget.gif]: https://github.com/ratatui/ratatui/blob/images/examples/custom-widget.gif?raw=true
[demo2-destroy.gif]: https://github.com/ratatui/ratatui/blob/images/examples/demo2-destroy.gif?raw=true
[demo2-social.gif]: https://github.com/ratatui/ratatui/blob/images/examples/demo2-social.gif?raw=true
[demo2.gif]: https://github.com/ratatui/ratatui/blob/images/examples/demo2.gif?raw=true
[demo.gif]: https://github.com/ratatui/ratatui/blob/images/examples/demo.gif?raw=true
[flex.gif]: https://github.com/ratatui/ratatui/blob/images/examples/flex.gif?raw=true
[hello-world.gif]: https://github.com/ratatui/ratatui/blob/images/examples/hello-world.gif?raw=true
[hyperlink.gif]: https://github.com/ratatui/ratatui/blob/images/examples/hyperlink.gif?raw=true
[inline.gif]: https://github.com/ratatui/ratatui/blob/images/examples/inline.gif?raw=true
[minimal.gif]: https://github.com/ratatui/ratatui/blob/images/examples/minimal.gif?raw=true
[modifiers.gif]: https://github.com/ratatui/ratatui/blob/images/examples/modifiers.gif?raw=true
[panic.gif]: https://github.com/ratatui/ratatui/blob/images/examples/panic.gif?raw=true
[popup.gif]: https://github.com/ratatui/ratatui/blob/images/examples/popup.gif?raw=true
[scrollbar.gif]: https://github.com/ratatui/ratatui/blob/images/examples/scrollbar.gif?raw=true
[table.gif]: https://github.com/ratatui/ratatui/blob/images/examples/table.gif?raw=true
[todo-list.gif]: https://github.com/ratatui/ratatui/blob/images/examples/todo-list.gif?raw=true
[tracing.gif]: https://github.com/ratatui/ratatui/blob/images/examples/tracing.gif?raw=true
[user-input.gif]: https://github.com/ratatui/ratatui/blob/images/examples/user-input.gif?raw=true

View File

@@ -0,0 +1,14 @@
[package]
name = "advanced-widget-impl"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui = { workspace = true, features = ["unstable-widget-ref"] }
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Advanced Widget Implementation demo
This example shows how to render the `Widget` trait in different ways.
To run this demo:
```shell
cargo run -p advanced-widget-impl
```

View File

@@ -0,0 +1,241 @@
/// A Ratatui example that demonstrates how to implement the `Widget` trait.
///
/// This example demonstrates various ways to implement `Widget` traits in Ratatui on a type, a
/// reference, and a mutable reference. It also shows how to use the `WidgetRef` trait to
/// render boxed widgets.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::time::{Duration, Instant};
use color_eyre::Result;
use crossterm::event;
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Position, Rect, Size};
use ratatui::style::{Color, Style};
use ratatui::widgets::{Widget, WidgetRef};
fn main() -> Result<()> {
color_eyre::install()?;
ratatui::run(|terminal| App::default().run(terminal))
}
#[derive(Default)]
struct App {
should_quit: bool,
timer: Timer,
boxed_squares: BoxedSquares,
green_square: RightAlignedSquare,
}
impl App {
fn run(mut self, terminal: &mut DefaultTerminal) -> Result<()> {
while !self.should_quit {
self.render(terminal)?;
self.handle_events()?;
}
Ok(())
}
fn render(&mut self, tui: &mut DefaultTerminal) -> Result<()> {
tui.draw(|frame| frame.render_widget(self, frame.area()))?;
Ok(())
}
fn handle_events(&mut self) -> Result<()> {
// Handle events at least 50 frames per second (gifs are usually 50fps)
let timeout = Duration::from_secs_f64(1.0 / 50.0);
if !event::poll(timeout)? {
return Ok(());
}
if event::read()?.is_key_press() {
self.should_quit = true;
}
Ok(())
}
}
/// Implement the `Widget` trait on a mutable reference to the `App` type.
///
/// This allows the `App` type to be rendered as a widget. The `App` type owns several other widgets
/// that are rendered as part of the app. The `Widget` trait is implemented on a mutable reference
/// to the `App` type, which allows this to be rendered without consuming the `App` type, and allows
/// the sub-widgets to be mutable.
impl Widget for &mut App {
fn render(self, area: Rect, buf: &mut Buffer) {
let constraints = Constraint::from_lengths([1, 1, 2, 1]);
let [greeting, timer, squares, position] = area.layout(&Layout::vertical(constraints));
// render an ephemeral greeting widget
Greeting::new("Ratatui!").render(greeting, buf);
// render a reference to the timer widget
self.timer.render(timer, buf);
// render a boxed widget containing red and blue squares
self.boxed_squares.render(squares, buf);
// render a mutable reference to the green square widget
self.green_square.render(squares, buf);
// Display the dynamically updated position of the green square
let square_position = format!("Green square is at {}", self.green_square.last_position);
square_position.render(position, buf);
}
}
/// An ephemeral greeting widget.
///
/// This widget is implemented on the type itself, which means that it is consumed when it is
/// rendered. This is useful for widgets that are cheap to create, don't need to be reused, and
/// don't need to store any state between renders. This is the simplest way to implement a widget in
/// Ratatui, but in most cases, it is better to implement the `Widget` trait on a reference to the
/// type, as shown in the other examples below.
///
/// This was the way most widgets were implemented in Ratatui before `Widget` was implemented on
/// references in [PR #903] (merged in Ratatui 0.26.0).
///
/// [PR #903]: https://github.com/ratatui/ratatui/pull/903
struct Greeting {
name: String,
}
impl Greeting {
fn new(name: &str) -> Self {
Self {
name: name.to_string(),
}
}
}
impl Widget for Greeting {
fn render(self, area: Rect, buf: &mut Buffer) {
let greeting = format!("Hello, {}!", self.name);
greeting.render(area, buf);
}
}
/// A timer widget that displays the elapsed time since the timer was started.
#[derive(Debug)]
struct Timer {
start: Instant,
}
impl Default for Timer {
fn default() -> Self {
Self {
start: Instant::now(),
}
}
}
/// This implements `Widget` on a reference to the type, which means that it can be reused and
/// doesn't need to be consumed when it is rendered. This is useful for widgets that need to store
/// state and be updated over time.
///
/// This approach was probably always available in Ratatui, but it wasn't widely used until `Widget`
/// was implemented on references in [PR #903] (merged in Ratatui 0.26.0). This is because all the
/// built-in widgets previously would consume themselves when rendered.
impl Widget for &Timer {
fn render(self, area: Rect, buf: &mut Buffer) {
let elapsed = self.start.elapsed().as_secs_f32();
let message = format!("Elapsed: {elapsed:.1?}s");
message.render(area, buf);
}
}
/// A widget that contains a list of several different widgets.
struct BoxedSquares {
squares: Vec<Box<dyn WidgetRef>>,
}
impl Default for BoxedSquares {
fn default() -> Self {
let red_square: Box<dyn WidgetRef> = Box::new(RedSquare);
let blue_square: Box<dyn WidgetRef> = Box::new(BlueSquare);
Self {
squares: vec![red_square, blue_square],
}
}
}
/// A widget that renders a red square.
struct RedSquare;
/// A widget that renders a blue square.
struct BlueSquare;
/// This implements the `Widget` trait on a reference to the type. It contains a list of boxed
/// widgets that implement the `WidgetRef` trait. This is useful for widgets that contain a list of
/// other widgets that can be different types.
impl Widget for &BoxedSquares {
fn render(self, area: Rect, buf: &mut Buffer) {
let constraints = vec![Constraint::Length(4); self.squares.len()];
let areas = area.layout_vec(&Layout::horizontal(constraints));
for (widget, area) in self.squares.iter().zip(areas) {
widget.render_ref(area, buf);
}
}
}
/// `RedSquare` and `BlueSquare` are widgets that render a red and blue square, respectively. They
/// implement the `WidgetRef` trait instead of the `Widget` trait, which which allows them to be
/// rendered as boxed widgets. It's not possible to use Widget for this as a dynamic reference to a
/// widget cannot generally be moved out of the box.
impl WidgetRef for RedSquare {
fn render_ref(&self, area: Rect, buf: &mut Buffer) {
fill(area, buf, "", Color::Red);
}
}
impl WidgetRef for BlueSquare {
fn render_ref(&self, area: Rect, buf: &mut Buffer) {
fill(area, buf, "", Color::Blue);
}
}
/// A widget that renders a green square aligned to the right of the area.
#[derive(Default)]
struct RightAlignedSquare {
last_position: Position,
}
/// This widget is implemented on a mutable reference to the type, which means that it can store
/// state and update it when it is rendered. This is useful for widgets that need to store the
/// result of some calculation that can only be done when the widget is rendered.
///
/// The x and y coordinates of the square are stored in the widget and updated when the widget is
/// rendered. This allows the square to be aligned to the right of the area. These coordinates could
/// be used to perform hit testing (e.g. checking if a mouse click is inside the square). This app
/// just displays the coordinates as a string.
///
/// This approach was probably always available in Ratatui, but it wasn't widely used either. This
/// is an alternative to implementing the `StatefulWidget` trait, for situations where you want to
/// store the state in the widget itself instead of a separate struct.
impl Widget for &mut RightAlignedSquare {
/// Render a green square aligned to the right of the area and store the position.
fn render(self, area: Rect, buf: &mut Buffer) {
const WIDTH: u16 = 4;
let x = area.right() - WIDTH; // Align to the right
self.last_position = Position { x, y: area.y };
let size = Size::new(WIDTH, area.height);
let area = Rect::from((self.last_position, size));
fill(area, buf, "", Color::Green);
}
}
/// Fill the area with the specified symbol and style.
///
/// This probably should be a method on the `Buffer` type, but it is defined here for simplicity.
/// <https://github.com/ratatui/ratatui/issues/1146>
fn fill<S: Into<Style>>(area: Rect, buf: &mut Buffer, symbol: &str, style: S) {
let style = style.into();
for y in area.top()..area.bottom() {
for x in area.left()..area.right() {
buf[(x, y)].set_symbol(symbol).set_style(style);
}
}
}

View File

@@ -0,0 +1,22 @@
[package]
name = "async-github"
publish = false
authors.workspace = true
documentation.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true
readme.workspace = true
license.workspace = true
exclude.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm = { workspace = true, features = ["event-stream"] }
octocrab.workspace = true
ratatui.workspace = true
tokio = { workspace = true, features = ["rt-multi-thread", "macros"] }
tokio-stream.workspace = true

View File

@@ -0,0 +1,9 @@
# Async GitHub demo
This example demonstrates how to use Ratatui with widgets that fetch data from GitHub API asynchronously.
To run this demo:
```shell
cargo run -p async-github
```

View File

@@ -0,0 +1,236 @@
//! # [Ratatui] Async example
//!
//! This example demonstrates how to use Ratatui with widgets that fetch data asynchronously. It
//! uses the `octocrab` crate to fetch a list of pull requests from the GitHub API.
//!
//! <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token>
//! <https://github.com/settings/tokens/new> to create a new token (select classic, and no scopes)
//!
//! This example does not cover message passing between threads, it only demonstrates how to manage
//! shared state between the main thread and a background task, which acts mostly as a one-shot
//! fetcher. For more complex scenarios, you may need to use channels or other synchronization
//! primitives.
//!
//! A simple app might have multiple widgets that fetch data from different sources, and each widget
//! would have its own background task to fetch the data. The main thread would then render the
//! widgets with the latest data.
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui/ratatui
//! [examples]: https://github.com/ratatui/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui/ratatui/blob/main/examples/README.md
use std::sync::{Arc, RwLock};
use std::time::Duration;
use color_eyre::Result;
use crossterm::event::{Event, EventStream, KeyCode};
use octocrab::Page;
use octocrab::params::Direction;
use octocrab::params::pulls::Sort;
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::{Style, Stylize};
use ratatui::text::Line;
use ratatui::widgets::{Block, HighlightSpacing, Row, StatefulWidget, Table, TableState, Widget};
use ratatui::{DefaultTerminal, Frame};
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> Result<()> {
color_eyre::install()?;
let terminal = ratatui::init();
let app_result = App::default().run(terminal).await;
ratatui::restore();
app_result
}
#[derive(Debug, Default)]
struct App {
should_quit: bool,
pull_requests: PullRequestListWidget,
}
impl App {
const FRAMES_PER_SECOND: f32 = 60.0;
pub async fn run(mut self, mut terminal: DefaultTerminal) -> Result<()> {
self.pull_requests.run();
let period = Duration::from_secs_f32(1.0 / Self::FRAMES_PER_SECOND);
let mut interval = tokio::time::interval(period);
let mut events = EventStream::new();
while !self.should_quit {
tokio::select! {
_ = interval.tick() => { terminal.draw(|frame| self.render(frame))?; },
Some(Ok(event)) = events.next() => self.handle_event(&event),
}
}
Ok(())
}
fn render(&self, frame: &mut Frame) {
let layout = Layout::vertical([Constraint::Length(1), Constraint::Fill(1)]);
let [title_area, body_area] = frame.area().layout(&layout);
let title = Line::from("Ratatui async example").centered().bold();
frame.render_widget(title, title_area);
frame.render_widget(&self.pull_requests, body_area);
}
fn handle_event(&mut self, event: &Event) {
if let Some(key) = event.as_key_press_event() {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => self.should_quit = true,
KeyCode::Char('j') | KeyCode::Down => self.pull_requests.scroll_down(),
KeyCode::Char('k') | KeyCode::Up => self.pull_requests.scroll_up(),
_ => {}
}
}
}
}
/// A widget that displays a list of pull requests.
///
/// This is an async widget that fetches the list of pull requests from the GitHub API. It contains
/// an inner `Arc<RwLock<PullRequestListState>>` that holds the state of the widget. Cloning the
/// widget will clone the Arc, so you can pass it around to other threads, and this is used to spawn
/// a background task to fetch the pull requests.
#[derive(Debug, Clone, Default)]
struct PullRequestListWidget {
state: Arc<RwLock<PullRequestListState>>,
}
#[derive(Debug, Default)]
struct PullRequestListState {
pull_requests: Vec<PullRequest>,
loading_state: LoadingState,
table_state: TableState,
}
#[derive(Debug, Clone)]
struct PullRequest {
id: String,
title: String,
url: String,
}
#[derive(Debug, Clone, Default, PartialEq, Eq)]
enum LoadingState {
#[default]
Idle,
Loading,
Loaded,
Error(String),
}
impl PullRequestListWidget {
/// Start fetching the pull requests in the background.
///
/// This method spawns a background task that fetches the pull requests from the GitHub API.
/// The result of the fetch is then passed to the `on_load` or `on_err` methods.
fn run(&self) {
let this = self.clone(); // clone the widget to pass to the background task
tokio::spawn(this.fetch_pulls());
}
async fn fetch_pulls(self) {
// this runs once, but you could also run this in a loop, using a channel that accepts
// messages to refresh on demand, or with an interval timer to refresh every N seconds
self.set_loading_state(LoadingState::Loading);
match octocrab::instance()
.pulls("ratatui", "ratatui")
.list()
.sort(Sort::Updated)
.direction(Direction::Descending)
.send()
.await
{
Ok(page) => self.on_load(&page),
Err(err) => self.on_err(&err),
}
}
fn on_load(&self, page: &Page<OctoPullRequest>) {
let prs = page.items.iter().map(Into::into);
let mut state = self.state.write().unwrap();
state.loading_state = LoadingState::Loaded;
state.pull_requests.extend(prs);
if !state.pull_requests.is_empty() {
state.table_state.select(Some(0));
}
}
fn on_err(&self, err: &octocrab::Error) {
self.set_loading_state(LoadingState::Error(err.to_string()));
}
fn set_loading_state(&self, state: LoadingState) {
self.state.write().unwrap().loading_state = state;
}
fn scroll_down(&self) {
self.state.write().unwrap().table_state.scroll_down_by(1);
}
fn scroll_up(&self) {
self.state.write().unwrap().table_state.scroll_up_by(1);
}
}
type OctoPullRequest = octocrab::models::pulls::PullRequest;
impl From<&OctoPullRequest> for PullRequest {
fn from(pr: &OctoPullRequest) -> Self {
Self {
id: pr.number.to_string(),
title: pr.title.as_ref().unwrap().to_string(),
url: pr
.html_url
.as_ref()
.map(ToString::to_string)
.unwrap_or_default(),
}
}
}
impl Widget for &PullRequestListWidget {
fn render(self, area: Rect, buf: &mut Buffer) {
let mut state = self.state.write().unwrap();
// a block with a right aligned title with the loading state on the right
let loading_state = Line::from(format!("{:?}", state.loading_state)).right_aligned();
let block = Block::bordered()
.title("Pull Requests")
.title(loading_state)
.title_bottom("j/k to scroll, q to quit");
// a table with the list of pull requests
let rows = state.pull_requests.iter();
let widths = [
Constraint::Length(5),
Constraint::Fill(1),
Constraint::Max(49),
];
let table = Table::new(rows, widths)
.block(block)
.highlight_spacing(HighlightSpacing::Always)
.highlight_symbol(">>")
.row_highlight_style(Style::new().on_blue());
StatefulWidget::render(table, area, buf, &mut state.table_state);
}
}
impl From<&PullRequest> for Row<'_> {
fn from(pr: &PullRequest) -> Self {
let pr = pr.clone();
Row::new(vec![pr.id, pr.title, pr.url])
}
}

View File

@@ -0,0 +1,15 @@
[package]
name = "calendar-explorer"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui.workspace = true
time = { workspace = true, features = ["formatting", "parsing"] }
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Calendar explorer demo
This example shows how to render a calendar with different styles.
To run this demo:
```shell
cargo run -p calendar-explorer
```

View File

@@ -0,0 +1,236 @@
//! A Ratatui example that demonstrates how to render calendar with different styles.
//!
//! Marks the holidays and seasons on the calendar.
//!
//! This example runs with the Ratatui library code in the branch that you are currently reading.
//! See the [`latest`] branch for the code which works with the most recent Ratatui release.
//!
//! [`latest`]: https://github.com/ratatui/ratatui/tree/latest
//! [`BarChart`]: https://docs.rs/ratatui/latest/ratatui/widgets/struct.BarChart.html
use std::fmt;
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::layout::{Constraint, Layout, Margin, Rect};
use ratatui::style::{Color, Modifier, Style, Stylize};
use ratatui::text::{Line, Text};
use ratatui::widgets::calendar::{CalendarEventStore, Monthly};
use ratatui::{DefaultTerminal, Frame};
use time::ext::NumericalDuration;
use time::{Date, Month, OffsetDateTime};
fn main() -> Result<()> {
color_eyre::install()?;
ratatui::run(run)
}
/// Run the application.
fn run(terminal: &mut DefaultTerminal) -> Result<()> {
let mut selected_date = OffsetDateTime::now_local()?.date();
let mut calendar_style = StyledCalendar::Default;
loop {
terminal.draw(|frame| render(frame, calendar_style, selected_date))?;
if let Some(key) = event::read()?.as_key_press_event() {
match key.code {
KeyCode::Char('q') => break Ok(()),
KeyCode::Char('s') => calendar_style = calendar_style.next(),
KeyCode::Char('n') | KeyCode::Tab => selected_date = next_month(selected_date),
KeyCode::Char('p') | KeyCode::BackTab => selected_date = prev_month(selected_date),
KeyCode::Char('h') | KeyCode::Left => selected_date -= 1.days(),
KeyCode::Char('j') | KeyCode::Down => selected_date += 1.weeks(),
KeyCode::Char('k') | KeyCode::Up => selected_date -= 1.weeks(),
KeyCode::Char('l') | KeyCode::Right => selected_date += 1.days(),
_ => {}
}
}
}
}
fn next_month(date: Date) -> Date {
if date.month() == Month::December {
date.replace_month(Month::January)
.unwrap()
.replace_year(date.year() + 1)
.unwrap()
} else {
date.replace_month(date.month().next()).unwrap()
}
}
fn prev_month(date: Date) -> Date {
if date.month() == Month::January {
date.replace_month(Month::December)
.unwrap()
.replace_year(date.year() - 1)
.unwrap()
} else {
date.replace_month(date.month().previous()).unwrap()
}
}
/// Render the UI with a calendar.
fn render(frame: &mut Frame, calendar_style: StyledCalendar, selected_date: Date) {
let header = Text::from_iter([
Line::from("Calendar Example".bold()),
Line::from(
"<q> Quit | <s> Change Style | <n> Next Month | <p> Previous Month, <hjkl> Move",
),
Line::from(format!(
"Current date: {selected_date} | Current style: {calendar_style}"
)),
]);
let [text_area, area] = frame.area().layout(&Layout::vertical([
Constraint::Length(header.height() as u16),
Constraint::Fill(1),
]));
frame.render_widget(header.centered(), text_area);
calendar_style
.render_year(frame, area, selected_date)
.unwrap();
}
#[derive(Debug, Clone, Copy)]
enum StyledCalendar {
Default,
Surrounding,
WeekdaysHeader,
SurroundingAndWeekdaysHeader,
MonthHeader,
MonthAndWeekdaysHeader,
}
impl StyledCalendar {
// Cycle through the different styles.
const fn next(self) -> Self {
match self {
Self::Default => Self::Surrounding,
Self::Surrounding => Self::WeekdaysHeader,
Self::WeekdaysHeader => Self::SurroundingAndWeekdaysHeader,
Self::SurroundingAndWeekdaysHeader => Self::MonthHeader,
Self::MonthHeader => Self::MonthAndWeekdaysHeader,
Self::MonthAndWeekdaysHeader => Self::Default,
}
}
}
impl fmt::Display for StyledCalendar {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Default => write!(f, "Default"),
Self::Surrounding => write!(f, "Show Surrounding"),
Self::WeekdaysHeader => write!(f, "Show Weekdays Header"),
Self::SurroundingAndWeekdaysHeader => write!(f, "Show Surrounding and Weekdays Header"),
Self::MonthHeader => write!(f, "Show Month Header"),
Self::MonthAndWeekdaysHeader => write!(f, "Show Month Header and Weekdays Header"),
}
}
}
impl StyledCalendar {
fn render_year(self, frame: &mut Frame, area: Rect, date: Date) -> Result<()> {
let events = events(date)?;
let vertical = Layout::vertical([Constraint::Ratio(1, 3); 3]);
let horizontal = &Layout::horizontal([Constraint::Ratio(1, 4); 4]);
let areas = area
.inner(Margin::new(1, 1))
.layout_vec(&vertical)
.into_iter()
.flat_map(|row| row.layout_vec(horizontal));
for (i, area) in areas.enumerate() {
let month = date
.replace_day(1)
.unwrap()
.replace_month(Month::try_from(i as u8 + 1).unwrap())
.unwrap();
self.render_month(frame, area, month, &events);
}
Ok(())
}
fn render_month(self, frame: &mut Frame, area: Rect, date: Date, events: &CalendarEventStore) {
let calendar = match self {
Self::Default => Monthly::new(date, events)
.default_style(Style::new().bold().bg(Color::Rgb(50, 50, 50)))
.show_month_header(Style::default()),
Self::Surrounding => Monthly::new(date, events)
.default_style(Style::new().bold().bg(Color::Rgb(50, 50, 50)))
.show_month_header(Style::default())
.show_surrounding(Style::new().dim()),
Self::WeekdaysHeader => Monthly::new(date, events)
.default_style(Style::new().bold().bg(Color::Rgb(50, 50, 50)))
.show_month_header(Style::default())
.show_weekdays_header(Style::new().bold().green()),
Self::SurroundingAndWeekdaysHeader => Monthly::new(date, events)
.default_style(Style::new().bold().bg(Color::Rgb(50, 50, 50)))
.show_month_header(Style::default())
.show_surrounding(Style::new().dim())
.show_weekdays_header(Style::new().bold().green()),
Self::MonthHeader => Monthly::new(date, events)
.default_style(Style::new().bold().bg(Color::Rgb(50, 50, 50)))
.show_month_header(Style::default())
.show_month_header(Style::new().bold().green()),
Self::MonthAndWeekdaysHeader => Monthly::new(date, events)
.default_style(Style::new().bold().bg(Color::Rgb(50, 50, 50)))
.show_month_header(Style::default())
.show_weekdays_header(Style::new().bold().dim().light_yellow()),
};
frame.render_widget(calendar, area);
}
}
/// Makes a list of dates for the current year.
fn events(selected_date: Date) -> Result<CalendarEventStore> {
const SELECTED: Style = Style::new()
.fg(Color::White)
.bg(Color::Red)
.add_modifier(Modifier::BOLD);
const HOLIDAY: Style = Style::new()
.fg(Color::Red)
.add_modifier(Modifier::UNDERLINED);
const SEASON: Style = Style::new()
.fg(Color::Green)
.bg(Color::Black)
.add_modifier(Modifier::UNDERLINED);
let mut list = CalendarEventStore::today(
Style::default()
.add_modifier(Modifier::BOLD)
.bg(Color::Blue),
);
let y = selected_date.year();
// new year's
list.add(Date::from_calendar_date(y, Month::January, 1)?, HOLIDAY);
// next new_year's for December "show surrounding"
list.add(Date::from_calendar_date(y + 1, Month::January, 1)?, HOLIDAY);
// groundhog day
list.add(Date::from_calendar_date(y, Month::February, 2)?, HOLIDAY);
// april fool's
list.add(Date::from_calendar_date(y, Month::April, 1)?, HOLIDAY);
// earth day
list.add(Date::from_calendar_date(y, Month::April, 22)?, HOLIDAY);
// star wars day
list.add(Date::from_calendar_date(y, Month::May, 4)?, HOLIDAY);
// festivus
list.add(Date::from_calendar_date(y, Month::December, 23)?, HOLIDAY);
// new year's eve
list.add(Date::from_calendar_date(y, Month::December, 31)?, HOLIDAY);
// seasons
// spring equinox
list.add(Date::from_calendar_date(y, Month::March, 22)?, SEASON);
// summer solstice
list.add(Date::from_calendar_date(y, Month::June, 21)?, SEASON);
// fall equinox
list.add(Date::from_calendar_date(y, Month::September, 22)?, SEASON);
// winter solstice
list.add(Date::from_calendar_date(y, Month::December, 21)?, SEASON);
// selected date
list.add(selected_date, SELECTED);
Ok(list)
}

View File

@@ -0,0 +1,15 @@
[package]
name = "canvas"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
itertools.workspace = true
ratatui.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Canvas demo
This example shows how to render various shapes and a map on a canvas.
To run this demo:
```shell
cargo run -p canvas
```

View File

@@ -0,0 +1,263 @@
/// A Ratatui example that demonstrates how to draw on a canvas.
///
/// This example demonstrates how to draw various shapes such as rectangles, circles, and lines
/// on a canvas. It also demonstrates how to draw a map.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::{
io::stdout,
time::{Duration, Instant},
};
use color_eyre::Result;
use crossterm::ExecutableCommand;
use crossterm::event::{
self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEvent, MouseEventKind,
};
use itertools::Itertools;
use ratatui::layout::{Constraint, Layout, Position, Rect};
use ratatui::style::{Color, Stylize};
use ratatui::symbols::Marker;
use ratatui::text::Text;
use ratatui::widgets::canvas::{Canvas, Circle, Map, MapResolution, Points, Rectangle};
use ratatui::widgets::{Block, Widget};
use ratatui::{DefaultTerminal, Frame};
fn main() -> Result<()> {
color_eyre::install()?;
stdout().execute(EnableMouseCapture)?;
let terminal = ratatui::init();
let app_result = App::new().run(terminal);
ratatui::restore();
stdout().execute(DisableMouseCapture)?;
app_result
}
struct App {
exit: bool,
x: f64,
y: f64,
ball: Circle,
playground: Rect,
vx: f64,
vy: f64,
marker: Marker,
points: Vec<Position>,
is_drawing: bool,
}
impl App {
const fn new() -> Self {
Self {
exit: false,
x: 0.0,
y: 0.0,
ball: Circle {
x: 20.0,
y: 40.0,
radius: 10.0,
color: Color::Yellow,
},
playground: Rect::new(10, 10, 200, 100),
vx: 1.0,
vy: 1.0,
marker: Marker::Dot,
points: vec![],
is_drawing: false,
}
}
pub fn run(mut self, mut terminal: DefaultTerminal) -> Result<()> {
let tick_rate = Duration::from_millis(16);
let mut last_tick = Instant::now();
while !self.exit {
terminal.draw(|frame| self.render(frame))?;
let timeout = tick_rate.saturating_sub(last_tick.elapsed());
if !event::poll(timeout)? {
self.on_tick();
last_tick = Instant::now();
continue;
}
match event::read()? {
Event::Key(key) => self.handle_key_event(key),
Event::Mouse(event) => self.handle_mouse_event(event),
_ => (),
}
}
Ok(())
}
fn handle_key_event(&mut self, key: KeyEvent) {
if !key.is_press() {
return;
}
match key.code {
KeyCode::Char('q') | KeyCode::Esc => self.exit = true,
KeyCode::Char('j') | KeyCode::Down => self.y += 1.0,
KeyCode::Char('k') | KeyCode::Up => self.y -= 1.0,
KeyCode::Char('l') | KeyCode::Right => self.x += 1.0,
KeyCode::Char('h') | KeyCode::Left => self.x -= 1.0,
KeyCode::Enter => self.cycle_marker(),
_ => {}
}
}
fn handle_mouse_event(&mut self, event: event::MouseEvent) {
match event.kind {
MouseEventKind::Down(_) => self.is_drawing = true,
MouseEventKind::Up(_) => self.is_drawing = false,
MouseEventKind::Drag(_) => {
self.points.push(Position::new(event.column, event.row));
}
_ => {}
}
}
const fn cycle_marker(&mut self) {
self.marker = match self.marker {
Marker::Dot => Marker::Braille,
Marker::Braille => Marker::Block,
Marker::Block => Marker::HalfBlock,
Marker::HalfBlock => Marker::Quadrant,
Marker::Quadrant => Marker::Sextant,
Marker::Sextant => Marker::Octant,
Marker::Octant => Marker::Bar,
Marker::Bar => Marker::Dot,
_ => unreachable!(),
};
}
fn on_tick(&mut self) {
// bounce the ball by flipping the velocity vector
let ball = &self.ball;
let playground = self.playground;
if ball.x - ball.radius < f64::from(playground.left())
|| ball.x + ball.radius > f64::from(playground.right())
{
self.vx = -self.vx;
}
if ball.y - ball.radius < f64::from(playground.top())
|| ball.y + ball.radius > f64::from(playground.bottom())
{
self.vy = -self.vy;
}
self.ball.x += self.vx;
self.ball.y += self.vy;
}
fn render(&self, frame: &mut Frame) {
let header = Text::from_iter([
"Canvas Example".bold(),
"<q> Quit | <enter> Change Marker | <hjkl> Move".into(),
]);
let vertical = Layout::vertical([
Constraint::Length(header.height() as u16),
Constraint::Fill(1),
Constraint::Fill(1),
]);
let [text_area, up, down] = frame.area().layout(&vertical);
frame.render_widget(header.centered(), text_area);
let horizontal = Layout::horizontal([Constraint::Fill(1); 2]);
let [draw, pong] = up.layout(&horizontal);
let [map, boxes] = down.layout(&horizontal);
frame.render_widget(self.map_canvas(), map);
frame.render_widget(self.draw_canvas(draw), draw);
frame.render_widget(self.pong_canvas(), pong);
frame.render_widget(self.boxes_canvas(boxes), boxes);
}
fn map_canvas(&self) -> impl Widget + '_ {
Canvas::default()
.block(Block::bordered().title("World"))
.marker(self.marker)
.paint(|ctx| {
ctx.draw(&Map {
color: Color::Green,
resolution: MapResolution::High,
});
ctx.print(self.x, -self.y, "You are here".yellow());
})
.x_bounds([-180.0, 180.0])
.y_bounds([-90.0, 90.0])
}
fn draw_canvas(&self, area: Rect) -> impl Widget + '_ {
Canvas::default()
.block(Block::bordered().title("Draw here"))
.marker(self.marker)
.x_bounds([0.0, f64::from(area.width)])
.y_bounds([0.0, f64::from(area.height)])
.paint(move |ctx| {
let points = self
.points
.iter()
.map(|p| {
(
f64::from(p.x) - f64::from(area.left()),
f64::from(area.bottom()) - f64::from(p.y),
)
})
.collect_vec();
ctx.draw(&Points {
coords: &points,
color: Color::White,
});
})
}
fn pong_canvas(&self) -> impl Widget + '_ {
Canvas::default()
.block(Block::bordered().title("Pong"))
.marker(self.marker)
.paint(|ctx| {
ctx.draw(&self.ball);
})
.x_bounds([10.0, 210.0])
.y_bounds([10.0, 110.0])
}
fn boxes_canvas(&self, area: Rect) -> impl Widget {
let left = 0.0;
let right = f64::from(area.width);
let bottom = 0.0;
let top = f64::from(area.height).mul_add(2.0, -4.0);
Canvas::default()
.block(Block::bordered().title("Rects"))
.marker(self.marker)
.x_bounds([left, right])
.y_bounds([bottom, top])
.paint(|ctx| {
for i in 0..=11 {
ctx.draw(&Rectangle {
x: f64::from(i * i + 3 * i) / 2.0 + 2.0,
y: 2.0,
width: f64::from(i),
height: f64::from(i),
color: Color::Red,
});
ctx.draw(&Rectangle {
x: f64::from(i * i + 3 * i) / 2.0 + 2.0,
y: 21.0,
width: f64::from(i),
height: f64::from(i),
color: Color::Blue,
});
}
for i in 0..100 {
if i % 10 != 0 {
ctx.print(f64::from(i) + 1.0, 0.0, format!("{i}", i = i % 10));
}
if i % 2 == 0 && i % 10 != 0 {
ctx.print(0.0, f64::from(i), format!("{i}", i = i % 10));
}
}
})
}
}

View File

@@ -0,0 +1,14 @@
[package]
name = "chart"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Chart demo
This example shows how to render line, bar, and scatter charts.
To run this demo:
```shell
cargo run -p chart
```

View File

@@ -0,0 +1,352 @@
/// A Ratatui example that demonstrates how to handle charts.
///
/// This example demonstrates how to draw various types of charts such as line, bar, and
/// scatter charts.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::time::{Duration, Instant};
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::{Color, Modifier, Style, Stylize};
use ratatui::symbols::{self, Marker};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Axis, Block, Chart, Dataset, GraphType, LegendPosition};
use ratatui::{DefaultTerminal, Frame};
fn main() -> Result<()> {
color_eyre::install()?;
ratatui::run(|terminal| App::new().run(terminal))
}
struct App {
signal1: SinSignal,
data1: Vec<(f64, f64)>,
signal2: SinSignal,
data2: Vec<(f64, f64)>,
window: [f64; 2],
}
#[derive(Clone)]
struct SinSignal {
x: f64,
interval: f64,
period: f64,
scale: f64,
}
impl SinSignal {
const fn new(interval: f64, period: f64, scale: f64) -> Self {
Self {
x: 0.0,
interval,
period,
scale,
}
}
}
impl Iterator for SinSignal {
type Item = (f64, f64);
fn next(&mut self) -> Option<Self::Item> {
let point = (self.x, (self.x * 1.0 / self.period).sin() * self.scale);
self.x += self.interval;
Some(point)
}
}
impl App {
fn new() -> Self {
let mut signal1 = SinSignal::new(0.2, 3.0, 18.0);
let mut signal2 = SinSignal::new(0.1, 2.0, 10.0);
let data1 = signal1.by_ref().take(200).collect::<Vec<(f64, f64)>>();
let data2 = signal2.by_ref().take(200).collect::<Vec<(f64, f64)>>();
Self {
signal1,
data1,
signal2,
data2,
window: [0.0, 20.0],
}
}
fn run(mut self, terminal: &mut DefaultTerminal) -> Result<()> {
let tick_rate = Duration::from_millis(250);
let mut last_tick = Instant::now();
loop {
terminal.draw(|frame| self.render(frame))?;
let timeout = tick_rate.saturating_sub(last_tick.elapsed());
if !event::poll(timeout)? {
self.on_tick();
last_tick = Instant::now();
continue;
}
if event::read()?
.as_key_press_event()
.is_some_and(|key| key.code == KeyCode::Char('q'))
{
return Ok(());
}
}
}
fn on_tick(&mut self) {
self.data1.drain(0..5);
self.data1.extend(self.signal1.by_ref().take(5));
self.data2.drain(0..10);
self.data2.extend(self.signal2.by_ref().take(10));
self.window[0] += 1.0;
self.window[1] += 1.0;
}
fn render(&self, frame: &mut Frame) {
let vertical = Layout::vertical([Constraint::Fill(1); 2]);
let [top, bottom] = frame.area().layout(&vertical);
let horizontal = Layout::horizontal([Constraint::Fill(1), Constraint::Length(29)]);
let [animated_chart, bar_chart] = top.layout(&horizontal);
let [line_chart, scatter] = bottom.layout(&Layout::horizontal([Constraint::Fill(1); 2]));
self.render_animated_chart(frame, animated_chart);
render_barchart(frame, bar_chart);
render_line_chart(frame, line_chart);
render_scatter(frame, scatter);
}
fn render_animated_chart(&self, frame: &mut Frame, area: Rect) {
let x_labels = vec![
Span::styled(
format!("{}", self.window[0]),
Style::default().add_modifier(Modifier::BOLD),
),
Span::raw(format!("{}", f64::midpoint(self.window[0], self.window[1]))),
Span::styled(
format!("{}", self.window[1]),
Style::default().add_modifier(Modifier::BOLD),
),
];
let datasets = vec![
Dataset::default()
.name("data2")
.marker(symbols::Marker::Dot)
.style(Style::default().fg(Color::Cyan))
.data(&self.data1),
Dataset::default()
.name("data3")
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Yellow))
.data(&self.data2),
];
let chart = Chart::new(datasets)
.block(Block::bordered())
.x_axis(
Axis::default()
.title("X Axis")
.style(Style::default().fg(Color::Gray))
.labels(x_labels)
.bounds(self.window),
)
.y_axis(
Axis::default()
.title("Y Axis")
.style(Style::default().fg(Color::Gray))
.labels(["-20".bold(), "0".into(), "20".bold()])
.bounds([-20.0, 20.0]),
);
frame.render_widget(chart, area);
}
}
fn render_barchart(frame: &mut Frame, bar_chart: Rect) {
let dataset = Dataset::default()
.marker(symbols::Marker::HalfBlock)
.style(Style::new().fg(Color::Blue))
.graph_type(GraphType::Bar)
// a bell curve
.data(&[
(0., 0.4),
(10., 2.9),
(20., 13.5),
(30., 41.1),
(40., 80.1),
(50., 100.0),
(60., 80.1),
(70., 41.1),
(80., 13.5),
(90., 2.9),
(100., 0.4),
]);
let chart = Chart::new(vec![dataset])
.block(Block::bordered().title_top(Line::from("Bar chart").cyan().bold().centered()))
.x_axis(
Axis::default()
.style(Style::default().gray())
.bounds([0.0, 100.0])
.labels(["0".bold(), "50".into(), "100.0".bold()]),
)
.y_axis(
Axis::default()
.style(Style::default().gray())
.bounds([0.0, 100.0])
.labels(["0".bold(), "50".into(), "100.0".bold()]),
)
.hidden_legend_constraints((Constraint::Ratio(1, 2), Constraint::Ratio(1, 2)));
frame.render_widget(chart, bar_chart);
}
fn render_line_chart(frame: &mut Frame, area: Rect) {
let datasets = vec![
Dataset::default()
.name("Line from only 2 points".italic())
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Yellow))
.graph_type(GraphType::Line)
.data(&[(1., 1.), (4., 4.)]),
];
let chart = Chart::new(datasets)
.block(Block::bordered().title(Line::from("Line chart").cyan().bold().centered()))
.x_axis(
Axis::default()
.title("X Axis")
.style(Style::default().gray())
.bounds([0.0, 5.0])
.labels(["0".bold(), "2.5".into(), "5.0".bold()]),
)
.y_axis(
Axis::default()
.title("Y Axis")
.style(Style::default().gray())
.bounds([0.0, 5.0])
.labels(["0".bold(), "2.5".into(), "5.0".bold()]),
)
.legend_position(Some(LegendPosition::TopLeft))
.hidden_legend_constraints((Constraint::Ratio(1, 2), Constraint::Ratio(1, 2)));
frame.render_widget(chart, area);
}
fn render_scatter(frame: &mut Frame, area: Rect) {
let datasets = vec![
Dataset::default()
.name("Heavy")
.marker(Marker::Dot)
.graph_type(GraphType::Scatter)
.style(Style::new().yellow())
.data(&HEAVY_PAYLOAD_DATA),
Dataset::default()
.name("Medium".underlined())
.marker(Marker::Braille)
.graph_type(GraphType::Scatter)
.style(Style::new().magenta())
.data(&MEDIUM_PAYLOAD_DATA),
Dataset::default()
.name("Small")
.marker(Marker::Dot)
.graph_type(GraphType::Scatter)
.style(Style::new().cyan())
.data(&SMALL_PAYLOAD_DATA),
];
let chart = Chart::new(datasets)
.block(Block::bordered().title(Line::from("Scatter chart").cyan().bold().centered()))
.x_axis(
Axis::default()
.title("Year")
.bounds([1960., 2020.])
.style(Style::default().fg(Color::Gray))
.labels(["1960", "1990", "2020"]),
)
.y_axis(
Axis::default()
.title("Cost")
.bounds([0., 75000.])
.style(Style::default().fg(Color::Gray))
.labels(["0", "37 500", "75 000"]),
)
.hidden_legend_constraints((Constraint::Ratio(1, 2), Constraint::Ratio(1, 2)));
frame.render_widget(chart, area);
}
// Data from https://ourworldindata.org/space-exploration-satellites
const HEAVY_PAYLOAD_DATA: [(f64, f64); 9] = [
(1965., 8200.),
(1967., 5400.),
(1981., 65400.),
(1989., 30800.),
(1997., 10200.),
(2004., 11600.),
(2014., 4500.),
(2016., 7900.),
(2018., 1500.),
];
const MEDIUM_PAYLOAD_DATA: [(f64, f64); 29] = [
(1963., 29500.),
(1964., 30600.),
(1965., 177_900.),
(1965., 21000.),
(1966., 17900.),
(1966., 8400.),
(1975., 17500.),
(1982., 8300.),
(1985., 5100.),
(1988., 18300.),
(1990., 38800.),
(1990., 9900.),
(1991., 18700.),
(1992., 9100.),
(1994., 10500.),
(1994., 8500.),
(1994., 8700.),
(1997., 6200.),
(1999., 18000.),
(1999., 7600.),
(1999., 8900.),
(1999., 9600.),
(2000., 16000.),
(2001., 10000.),
(2002., 10400.),
(2002., 8100.),
(2010., 2600.),
(2013., 13600.),
(2017., 8000.),
];
const SMALL_PAYLOAD_DATA: [(f64, f64); 23] = [
(1961., 118_500.),
(1962., 14900.),
(1975., 21400.),
(1980., 32800.),
(1988., 31100.),
(1990., 41100.),
(1993., 23600.),
(1994., 20600.),
(1994., 34600.),
(1996., 50600.),
(1997., 19200.),
(1997., 45800.),
(1998., 19100.),
(2000., 73100.),
(2003., 11200.),
(2008., 12600.),
(2010., 30500.),
(2012., 20000.),
(2013., 10600.),
(2013., 34500.),
(2015., 10600.),
(2018., 23100.),
(2019., 17300.),
];

View File

@@ -0,0 +1,15 @@
[package]
name = "color-explorer"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
itertools.workspace = true
ratatui.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Color explorer demo
This example shows how to handle the supported colors.
To run this demo:
```shell
cargo run -p color-explorer
```

View File

@@ -1,76 +1,45 @@
//! # [Ratatui] Colors example
//! A Ratatui example that demonstrates how to handle colors.
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//! This example shows all the colors supported by Ratatui. It will render a grid of foreground
//! and background colors with their names and indexes.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//! This example runs with the Ratatui library code in the branch that you are currently reading.
//! See the [`latest`] branch for the code which works with the most recent Ratatui release.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
//! [`latest`]: https://github.com/ratatui/ratatui/tree/latest
// This example shows all the colors supported by ratatui. It will render a grid of foreground
// and background colors with their names and indexes.
use std::{
error::Error,
io::{self, Stdout},
result,
time::Duration,
};
use crossterm::{
event::{self, Event, KeyCode},
execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
};
use color_eyre::Result;
use crossterm::event;
use itertools::Itertools;
use ratatui::{
prelude::*,
widgets::{Block, Borders, Paragraph},
};
type Result<T> = result::Result<T, Box<dyn Error>>;
use ratatui::Frame;
use ratatui::layout::{Alignment, Constraint, Layout, Rect};
use ratatui::style::{Color, Style, Stylize};
use ratatui::text::Line;
use ratatui::widgets::{Block, Borders, Paragraph};
fn main() -> Result<()> {
let mut terminal = setup_terminal()?;
let res = run_app(&mut terminal);
restore_terminal(terminal)?;
if let Err(err) = res {
eprintln!("{err:?}");
}
Ok(())
}
fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> io::Result<()> {
loop {
terminal.draw(ui)?;
if event::poll(Duration::from_millis(250))? {
if let Event::Key(key) = event::read()? {
if key.code == KeyCode::Char('q') {
return Ok(());
}
color_eyre::install()?;
ratatui::run(|terminal| {
loop {
terminal.draw(render)?;
if event::read()?.is_key_press() {
return Ok(());
}
}
}
})
}
fn ui(frame: &mut Frame) {
let layout = Layout::vertical([
fn render(frame: &mut Frame) {
let [named, indexed_colors, indexed_greys] = Layout::vertical([
Constraint::Length(30),
Constraint::Length(17),
Constraint::Length(2),
])
.split(frame.size());
.areas(frame.area());
render_named_colors(frame, layout[0]);
render_indexed_colors(frame, layout[1]);
render_indexed_grayscale(frame, layout[2]);
render_named_colors(frame, named);
render_indexed_colors(frame, indexed_colors);
render_indexed_grayscale(frame, indexed_greys);
}
const NAMED_COLORS: [Color; 16] = [
@@ -113,19 +82,16 @@ fn render_fg_named_colors(frame: &mut Frame, bg: Color, area: Rect) {
let inner = block.inner(area);
frame.render_widget(block, area);
let layout = Layout::vertical([Constraint::Length(1); 2])
.split(inner)
.iter()
.flat_map(|area| {
Layout::horizontal([Constraint::Ratio(1, 8); 8])
.split(*area)
.to_vec()
})
.collect_vec();
for (i, &fg) in NAMED_COLORS.iter().enumerate() {
let vertical = Layout::vertical([Constraint::Length(1); 2]);
let horizontal = Layout::horizontal([Constraint::Ratio(1, 8); 8]);
let areas = inner
.layout_vec(&vertical)
.into_iter()
.flat_map(|area| area.layout_vec(&horizontal));
for (fg, area) in NAMED_COLORS.into_iter().zip(areas) {
let color_name = fg.to_string();
let paragraph = Paragraph::new(color_name).fg(fg).bg(bg);
frame.render_widget(paragraph, layout[i]);
frame.render_widget(paragraph, area);
}
}
@@ -134,19 +100,16 @@ fn render_bg_named_colors(frame: &mut Frame, fg: Color, area: Rect) {
let inner = block.inner(area);
frame.render_widget(block, area);
let layout = Layout::vertical([Constraint::Length(1); 2])
.split(inner)
.iter()
.flat_map(|area| {
Layout::horizontal([Constraint::Ratio(1, 8); 8])
.split(*area)
.to_vec()
})
.collect_vec();
for (i, &bg) in NAMED_COLORS.iter().enumerate() {
let vertical = Layout::vertical([Constraint::Length(1); 2]);
let horizontal = Layout::horizontal([Constraint::Ratio(1, 8); 8]);
let areas = inner
.layout_vec(&vertical)
.into_iter()
.flat_map(|area| area.layout_vec(&horizontal));
for (bg, area) in NAMED_COLORS.into_iter().zip(areas) {
let color_name = bg.to_string();
let paragraph = Paragraph::new(color_name).fg(fg).bg(bg);
frame.render_widget(paragraph, layout[i]);
frame.render_widget(paragraph, area);
}
}
@@ -234,7 +197,7 @@ fn title_block(title: String) -> Block<'static> {
.borders(Borders::TOP)
.title_alignment(Alignment::Center)
.border_style(Style::new().dark_gray())
.title_style(Style::new().reset())
.title_style(Style::reset())
.title(title)
}
@@ -267,20 +230,3 @@ fn render_indexed_grayscale(frame: &mut Frame, area: Rect) {
frame.render_widget(paragraph, layout[i as usize - 232]);
}
}
fn setup_terminal() -> Result<Terminal<CrosstermBackend<Stdout>>> {
enable_raw_mode()?;
let mut stdout = io::stdout();
execute!(stdout, EnterAlternateScreen)?;
let backend = CrosstermBackend::new(stdout);
let mut terminal = Terminal::new(backend)?;
terminal.hide_cursor()?;
Ok(terminal)
}
fn restore_terminal(mut terminal: Terminal<CrosstermBackend<Stdout>>) -> Result<()> {
disable_raw_mode()?;
execute!(terminal.backend_mut(), LeaveAlternateScreen)?;
terminal.show_cursor()?;
Ok(())
}

View File

@@ -0,0 +1,15 @@
[package]
name = "colors-rgb"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
palette.workspace = true
ratatui.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Colors-RGB demo
This example shows the full range of RGB colors in an animation.
To run this demo:
```shell
cargo run -p colors-rgb
```

View File

@@ -1,45 +1,38 @@
//! # [Ratatui] `Colors_RGB` example
//! A Ratatui example that shows the full range of RGB colors that can be displayed in the terminal.
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//! Requires a terminal that supports 24-bit color (true color) and unicode.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//! This example also demonstrates how implementing the Widget trait on a mutable reference
//! allows the widget to update its state while it is being rendered. This allows the fps
//! widget to update the fps calculation and the colors widget to update a cached version of
//! the colors to render instead of recalculating them every frame.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//! This is an alternative to using the `StatefulWidget` trait and a separate state struct. It
//! is useful when the state is only used by the widget and doesn't need to be shared with
//! other widgets.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
//! This example runs with the Ratatui library code in the branch that you are currently reading.
//! See the [`latest`] branch for the code which works with the most recent Ratatui release.
//!
//! [`latest`]: https://github.com/ratatui/ratatui/tree/latest
// This example shows the full range of RGB colors that can be displayed in the terminal.
//
// Requires a terminal that supports 24-bit color (true color) and unicode.
//
// This example also demonstrates how implementing the Widget trait on a mutable reference
// allows the widget to update its state while it is being rendered. This allows the fps
// widget to update the fps calculation and the colors widget to update a cached version of
// the colors to render instead of recalculating them every frame.
//
// This is an alternative to using the `StatefulWidget` trait and a separate state struct. It
// is useful when the state is only used by the widget and doesn't need to be shared with
// other widgets.
use std::time::{Duration, Instant};
use std::{
io::stdout,
panic,
time::{Duration, Instant},
};
use color_eyre::Result;
use crossterm::event;
use palette::convert::FromColorUnclamped;
use palette::{Okhsv, Srgb};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Position, Rect};
use ratatui::style::Color;
use ratatui::text::Text;
use ratatui::widgets::Widget;
use color_eyre::{config::HookBuilder, eyre, Result};
use crossterm::{
event::{self, Event, KeyCode, KeyEventKind},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
};
use palette::{convert::FromColorUnclamped, Okhsv, Srgb};
use ratatui::prelude::*;
fn main() -> Result<()> {
color_eyre::install()?;
ratatui::run(|terminal| App::default().run(terminal))
}
#[derive(Debug, Default)]
struct App {
@@ -91,21 +84,13 @@ struct ColorsWidget {
frame_count: usize,
}
fn main() -> Result<()> {
install_error_hooks()?;
let terminal = init_terminal()?;
App::default().run(terminal)?;
restore_terminal()?;
Ok(())
}
impl App {
/// Run the app
///
/// This is the main event loop for the app.
pub fn run(mut self, mut terminal: Terminal<impl Backend>) -> Result<()> {
pub fn run(mut self, terminal: &mut DefaultTerminal) -> Result<()> {
while self.is_running() {
terminal.draw(|frame| frame.render_widget(&mut self, frame.size()))?;
terminal.draw(|frame| frame.render_widget(&mut self, frame.area()))?;
self.handle_events()?;
}
Ok(())
@@ -116,19 +101,16 @@ impl App {
}
/// Handle any events that have occurred since the last time the app was rendered.
///
/// Currently, this only handles the q key to quit the app.
fn handle_events(&mut self) -> Result<()> {
// Ensure that the app only blocks for a period that allows the app to render at
// approximately 60 FPS (this doesn't account for the time to render the frame, and will
// also update the app immediately any time an event occurs)
let timeout = Duration::from_secs_f32(1.0 / 60.0);
if event::poll(timeout)? {
if let Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press && key.code == KeyCode::Char('q') {
self.state = AppState::Quit;
};
}
if !event::poll(timeout)? {
return Ok(());
}
if event::read()?.is_key_press() {
self.state = AppState::Quit;
}
Ok(())
}
@@ -141,10 +123,9 @@ impl App {
/// to update the colors to render.
impl Widget for &mut App {
fn render(self, area: Rect, buf: &mut Buffer) {
#[allow(clippy::enum_glob_use)]
use Constraint::*;
let [top, colors] = Layout::vertical([Length(1), Min(0)]).areas(area);
let [title, fps] = Layout::horizontal([Min(0), Length(8)]).areas(top);
use Constraint::{Length, Min};
let [top, colors] = area.layout(&Layout::vertical([Length(1), Min(0)]));
let [title, fps] = top.layout(&Layout::horizontal([Min(0), Length(8)]));
Text::from("colors_rgb example. Press q to quit")
.centered()
.render(title, buf);
@@ -187,7 +168,7 @@ impl FpsWidget {
/// This updates the fps once a second, but only if the widget has rendered at least 2 frames
/// since the last calculation. This avoids noise in the fps calculation when rendering on slow
/// machines that can't render at least 2 frames per second.
#[allow(clippy::cast_precision_loss)]
#[expect(clippy::cast_precision_loss)]
fn calculate_fps(&mut self) {
self.frame_count += 1;
let elapsed = self.last_instant.elapsed();
@@ -217,7 +198,7 @@ impl Widget for &mut ColorsWidget {
// pixel below it
let fg = colors[yi * 2][xi];
let bg = colors[yi * 2 + 1][xi];
buf.get_mut(x, y).set_char('▀').set_fg(fg).set_bg(bg);
buf[Position::new(x, y)].set_char('▀').set_fg(fg).set_bg(bg);
}
}
self.frame_count += 1;
@@ -229,7 +210,7 @@ impl ColorsWidget {
///
/// This is called once per frame to setup the colors to render. It caches the colors so that
/// they don't need to be recalculated every frame.
#[allow(clippy::cast_precision_loss)]
#[expect(clippy::cast_precision_loss)]
fn setup_colors(&mut self, size: Rect) {
let Rect { width, height, .. } = size;
// double the height because each screen row has two rows of half block pixels
@@ -256,36 +237,3 @@ impl ColorsWidget {
}
}
}
/// Install `color_eyre` panic and error hooks
///
/// The hooks restore the terminal to a usable state before printing the error message.
fn install_error_hooks() -> Result<()> {
let (panic, error) = HookBuilder::default().into_hooks();
let panic = panic.into_panic_hook();
let error = error.into_eyre_hook();
eyre::set_hook(Box::new(move |e| {
let _ = restore_terminal();
error(e)
}))?;
panic::set_hook(Box::new(move |info| {
let _ = restore_terminal();
panic(info);
}));
Ok(())
}
fn init_terminal() -> Result<Terminal<impl Backend>> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let mut terminal = Terminal::new(CrosstermBackend::new(stdout()))?;
terminal.clear()?;
terminal.hide_cursor()?;
Ok(terminal)
}
fn restore_terminal() -> Result<()> {
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
Ok(())
}

View File

@@ -0,0 +1,16 @@
[package]
name = "constraint-explorer"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
itertools.workspace = true
ratatui.workspace = true
strum.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Constraint explorer demo
This interactive example shows how different constraints can be used to layout widgets.
To run this demo:
```shell
cargo run -p constraint-explorer
```

View File

@@ -1,38 +1,32 @@
//! # [Ratatui] Constraint explorer example
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
#![allow(clippy::enum_glob_use, clippy::wildcard_imports)]
use std::io::{self, stdout};
use color_eyre::{config::HookBuilder, Result};
use crossterm::{
event::{self, Event, KeyCode, KeyEventKind},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
};
/// A Ratatui example that demonstrates how different layout constraints work.
///
/// It also supports swapping constraints, adding and removing blocks, and changing the spacing
/// between blocks.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use itertools::Itertools;
use ratatui::{
layout::{Constraint::*, Flex},
prelude::*,
style::palette::tailwind::*,
symbols::line,
widgets::{Block, Paragraph, Wrap},
};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio};
use ratatui::layout::{Flex, Layout, Rect};
use ratatui::style::palette::tailwind::{BLUE, SKY, SLATE, STONE};
use ratatui::style::{Color, Style, Stylize};
use ratatui::symbols::{self, line};
use ratatui::text::{Line, Span, Text};
use ratatui::widgets::{Block, Paragraph, Widget, Wrap};
use strum::{Display, EnumIter, FromRepr};
fn main() -> Result<()> {
color_eyre::install()?;
ratatui::run(|terminal| App::default().run(terminal))
}
#[derive(Default)]
struct App {
mode: AppMode,
@@ -83,21 +77,13 @@ struct ConstraintBlock {
/// ```
struct SpacerBlock;
fn main() -> Result<()> {
init_error_hooks()?;
let terminal = init_terminal()?;
App::default().run(terminal)?;
restore_terminal()?;
Ok(())
}
// App behaviour
impl App {
fn run(&mut self, mut terminal: Terminal<impl Backend>) -> Result<()> {
fn run(mut self, terminal: &mut DefaultTerminal) -> Result<()> {
self.insert_test_defaults();
while self.is_running() {
self.draw(&mut terminal)?;
terminal.draw(|frame| frame.render_widget(&self, frame.area()))?;
self.handle_events()?;
}
Ok(())
@@ -117,33 +103,26 @@ impl App {
self.mode == AppMode::Running
}
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> io::Result<()> {
terminal.draw(|frame| frame.render_widget(self, frame.size()))?;
Ok(())
}
fn handle_events(&mut self) -> Result<()> {
use KeyCode::*;
match event::read()? {
Event::Key(key) if key.kind == KeyEventKind::Press => match key.code {
Char('q') | Esc => self.exit(),
Char('1') => self.swap_constraint(ConstraintName::Min),
Char('2') => self.swap_constraint(ConstraintName::Max),
Char('3') => self.swap_constraint(ConstraintName::Length),
Char('4') => self.swap_constraint(ConstraintName::Percentage),
Char('5') => self.swap_constraint(ConstraintName::Ratio),
Char('6') => self.swap_constraint(ConstraintName::Fill),
Char('+') => self.increment_spacing(),
Char('-') => self.decrement_spacing(),
Char('x') => self.delete_block(),
Char('a') => self.insert_block(),
Char('k') | Up => self.increment_value(),
Char('j') | Down => self.decrement_value(),
Char('h') | Left => self.prev_block(),
Char('l') | Right => self.next_block(),
if let Some(key) = event::read()?.as_key_press_event() {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => self.exit(),
KeyCode::Char('1') => self.swap_constraint(ConstraintName::Min),
KeyCode::Char('2') => self.swap_constraint(ConstraintName::Max),
KeyCode::Char('3') => self.swap_constraint(ConstraintName::Length),
KeyCode::Char('4') => self.swap_constraint(ConstraintName::Percentage),
KeyCode::Char('5') => self.swap_constraint(ConstraintName::Ratio),
KeyCode::Char('6') => self.swap_constraint(ConstraintName::Fill),
KeyCode::Char('+') => self.increment_spacing(),
KeyCode::Char('-') => self.decrement_spacing(),
KeyCode::Char('x') => self.delete_block(),
KeyCode::Char('a') => self.insert_block(),
KeyCode::Char('k') | KeyCode::Up => self.increment_value(),
KeyCode::Char('j') | KeyCode::Down => self.decrement_value(),
KeyCode::Char('h') | KeyCode::Left => self.prev_block(),
KeyCode::Char('l') | KeyCode::Right => self.next_block(),
_ => {}
},
_ => {}
}
}
Ok(())
}
@@ -159,7 +138,7 @@ impl App {
| Constraint::Fill(v)
| Constraint::Percentage(v) => *v = v.saturating_add(1),
Constraint::Ratio(_n, d) => *d = d.saturating_add(1),
};
}
}
fn decrement_value(&mut self) {
@@ -173,7 +152,7 @@ impl App {
| Constraint::Fill(v)
| Constraint::Percentage(v) => *v = v.saturating_sub(1),
Constraint::Ratio(_n, d) => *d = d.saturating_sub(1),
};
}
}
/// select the next block with wrap around
@@ -214,15 +193,15 @@ impl App {
self.selected_index = index;
}
fn increment_spacing(&mut self) {
const fn increment_spacing(&mut self) {
self.spacing = self.spacing.saturating_add(1);
}
fn decrement_spacing(&mut self) {
const fn decrement_spacing(&mut self) {
self.spacing = self.spacing.saturating_sub(1);
}
fn exit(&mut self) {
const fn exit(&mut self) {
self.mode = AppMode::Quit;
}
@@ -257,15 +236,19 @@ impl From<Constraint> for ConstraintName {
impl Widget for &App {
fn render(self, area: Rect, buf: &mut Buffer) {
let [header_area, instructions_area, swap_legend_area, _, blocks_area] =
Layout::vertical([
Length(2), // header
Length(2), // instructions
Length(1), // swap key legend
Length(1), // gap
Fill(1), // blocks
])
.areas(area);
let [
header_area,
instructions_area,
swap_legend_area,
_,
blocks_area,
] = area.layout(&Layout::vertical([
Length(2), // header
Length(2), // instructions
Length(1), // swap key legend
Length(1), // gap
Fill(1), // blocks
]));
App::header().render(header_area, buf);
App::instructions().render(instructions_area, buf);
@@ -294,7 +277,7 @@ impl App {
}
fn swap_legend() -> impl Widget {
#[allow(unstable_name_collisions)]
#[expect(unstable_name_collisions)]
Paragraph::new(
Line::from(
[
@@ -335,30 +318,31 @@ impl App {
}
fn render_layout_blocks(&self, area: Rect, buf: &mut Buffer) {
let [user_constraints, area] = Layout::vertical([Length(3), Fill(1)])
.spacing(1)
.areas(area);
let main_layout = Layout::vertical([Length(3), Fill(1)]).spacing(1);
let [user_constraints, area] = area.layout(&main_layout);
self.render_user_constraints_legend(user_constraints, buf);
let [start, center, end, space_around, space_between] =
Layout::vertical([Length(7); 5]).areas(area);
let [
start,
center,
end,
space_between,
space_around,
space_evenly,
] = area.layout(&Layout::vertical([Length(7); 6]));
self.render_layout_block(Flex::Start, start, buf);
self.render_layout_block(Flex::Center, center, buf);
self.render_layout_block(Flex::End, end, buf);
self.render_layout_block(Flex::SpaceAround, space_around, buf);
self.render_layout_block(Flex::SpaceBetween, space_between, buf);
self.render_layout_block(Flex::SpaceAround, space_around, buf);
self.render_layout_block(Flex::SpaceEvenly, space_evenly, buf);
}
fn render_user_constraints_legend(&self, area: Rect, buf: &mut Buffer) {
let blocks = Layout::horizontal(
self.constraints
.iter()
.map(|_| Constraint::Fill(1))
.collect_vec(),
)
.split(area);
let constraints = self.constraints.iter().map(|_| Constraint::Fill(1));
let blocks = Layout::horizontal(constraints).split(area);
for (i, (area, constraint)) in blocks.iter().zip(self.constraints.iter()).enumerate() {
let selected = self.selected_index == i;
@@ -367,8 +351,8 @@ impl App {
}
fn render_layout_block(&self, flex: Flex, area: Rect, buf: &mut Buffer) {
let [label_area, axis_area, blocks_area] =
Layout::vertical([Length(1), Max(1), Length(4)]).areas(area);
let layout = Layout::vertical([Length(1), Max(1), Length(4)]);
let [label_area, axis_area, blocks_area] = area.layout(&layout);
if label_area.height > 0 {
format!("Flex::{flex:?}").bold().render(label_area, buf);
@@ -488,7 +472,7 @@ impl ConstraintBlock {
} else {
main_color
};
if let Some(last_row) = area.rows().last() {
if let Some(last_row) = area.rows().next_back() {
buf.set_style(last_row, border_color);
}
}
@@ -615,32 +599,3 @@ impl ConstraintName {
}
}
}
fn init_error_hooks() -> Result<()> {
let (panic, error) = HookBuilder::default().into_hooks();
let panic = panic.into_panic_hook();
let error = error.into_eyre_hook();
color_eyre::eyre::set_hook(Box::new(move |e| {
let _ = restore_terminal();
error(e)
}))?;
std::panic::set_hook(Box::new(move |info| {
let _ = restore_terminal();
panic(info);
}));
Ok(())
}
fn init_terminal() -> Result<Terminal<impl Backend>> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let backend = CrosstermBackend::new(stdout());
let terminal = Terminal::new(backend)?;
Ok(terminal)
}
fn restore_terminal() -> Result<()> {
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
Ok(())
}

View File

@@ -0,0 +1,15 @@
[package]
name = "constraints"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui.workspace = true
strum.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Constraints demo
This example shows different types of constraints.
To run this demo:
```shell
cargo run -p constraints
```

View File

@@ -1,29 +1,23 @@
//! # [Ratatui] Constraints example
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
#![allow(clippy::enum_glob_use, clippy::wildcard_imports)]
use std::io::{self, stdout};
use color_eyre::{config::HookBuilder, Result};
use crossterm::{
event::{self, Event, KeyCode, KeyEventKind},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
/// A Ratatui example that demonstrates different types of constraints.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::buffer::Buffer;
use ratatui::layout::Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio};
use ratatui::layout::{Layout, Rect};
use ratatui::style::palette::tailwind;
use ratatui::style::{Color, Modifier, Style, Stylize};
use ratatui::text::Line;
use ratatui::widgets::{
Block, Padding, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, StatefulWidget,
Tabs, Widget,
};
use ratatui::{layout::Constraint::*, prelude::*, style::palette::tailwind, widgets::*};
use ratatui::{DefaultTerminal, symbols};
use strum::{Display, EnumIter, FromRepr, IntoEnumIterator};
const SPACER_HEIGHT: u16 = 0;
@@ -40,6 +34,11 @@ const RATIO_COLOR: Color = tailwind::SLATE.c900;
// priority 4
const FILL_COLOR: Color = tailwind::SLATE.c950;
fn main() -> Result<()> {
color_eyre::install()?;
ratatui::run(|terminal| App::default().run(terminal))
}
#[derive(Default, Clone, Copy)]
struct App {
selected_tab: SelectedTab,
@@ -69,31 +68,17 @@ enum AppState {
Quit,
}
fn main() -> Result<()> {
init_error_hooks()?;
let terminal = init_terminal()?;
// increase the cache size to avoid flickering for indeterminate layouts
Layout::init_cache(100);
App::default().run(terminal)?;
restore_terminal()?;
Ok(())
}
impl App {
fn run(&mut self, mut terminal: Terminal<impl Backend>) -> Result<()> {
fn run(mut self, terminal: &mut DefaultTerminal) -> Result<()> {
self.update_max_scroll_offset();
while self.is_running() {
self.draw(&mut terminal)?;
terminal.draw(|frame| frame.render_widget(self, frame.area()))?;
self.handle_events()?;
}
Ok(())
}
fn update_max_scroll_offset(&mut self) {
const fn update_max_scroll_offset(&mut self) {
self.max_scroll_offset = (self.selected_tab.get_example_count() - 1) * EXAMPLE_HEIGHT;
}
@@ -101,32 +86,23 @@ impl App {
self.state == AppState::Running
}
fn draw(self, terminal: &mut Terminal<impl Backend>) -> io::Result<()> {
terminal.draw(|frame| frame.render_widget(self, frame.size()))?;
Ok(())
}
fn handle_events(&mut self) -> Result<()> {
if let Event::Key(key) = event::read()? {
use KeyCode::*;
if key.kind != KeyEventKind::Press {
return Ok(());
}
if let Some(key) = event::read()?.as_key_press_event() {
match key.code {
Char('q') | Esc => self.quit(),
Char('l') | Right => self.next(),
Char('h') | Left => self.previous(),
Char('j') | Down => self.down(),
Char('k') | Up => self.up(),
Char('g') | Home => self.top(),
Char('G') | End => self.bottom(),
KeyCode::Char('q') | KeyCode::Esc => self.quit(),
KeyCode::Char('l') | KeyCode::Right => self.next(),
KeyCode::Char('h') | KeyCode::Left => self.previous(),
KeyCode::Char('j') | KeyCode::Down => self.down(),
KeyCode::Char('k') | KeyCode::Up => self.up(),
KeyCode::Char('g') | KeyCode::Home => self.top(),
KeyCode::Char('G') | KeyCode::End => self.bottom(),
_ => (),
}
}
Ok(())
}
fn quit(&mut self) {
const fn quit(&mut self) {
self.state = AppState::Quit;
}
@@ -142,7 +118,7 @@ impl App {
self.scroll_offset = 0;
}
fn up(&mut self) {
const fn up(&mut self) {
self.scroll_offset = self.scroll_offset.saturating_sub(1);
}
@@ -153,18 +129,18 @@ impl App {
.min(self.max_scroll_offset);
}
fn top(&mut self) {
const fn top(&mut self) {
self.scroll_offset = 0;
}
fn bottom(&mut self) {
const fn bottom(&mut self) {
self.scroll_offset = self.max_scroll_offset;
}
}
impl Widget for App {
fn render(self, area: Rect, buf: &mut Buffer) {
let [tabs, axis, demo] = Layout::vertical([Length(3), Length(3), Fill(0)]).areas(area);
let [tabs, axis, demo] = area.layout(&Layout::vertical([Length(3), Length(3), Fill(0)]));
self.render_tabs(tabs, buf);
Self::render_axis(axis, buf);
@@ -210,7 +186,7 @@ impl App {
///
/// This function renders the demo content into a separate buffer and then splices the buffer
/// into the main buffer. This is done to make it possible to handle scrolling easily.
#[allow(clippy::cast_possible_truncation)]
#[expect(clippy::cast_possible_truncation)]
fn render_demo(self, area: Rect, buf: &mut Buffer) {
// render demo content into a separate buffer so all examples fit we add an extra
// area.height to make sure the last example is fully visible even when the scroll offset is
@@ -238,7 +214,7 @@ impl App {
for (i, cell) in visible_content.enumerate() {
let x = i as u16 % area.width;
let y = i as u16 / area.width;
*buf.get_mut(area.x + x, area.y + y) = cell;
buf[(area.x + x, area.y + y)] = cell;
}
if scrollbar_needed {
@@ -265,7 +241,7 @@ impl SelectedTab {
}
const fn get_example_count(self) -> u16 {
#[allow(clippy::match_same_arms)]
#[expect(clippy::match_same_arms)]
match self {
Self::Length => 4,
Self::Percentage => 5,
@@ -305,8 +281,8 @@ impl Widget for SelectedTab {
impl SelectedTab {
fn render_length_example(area: Rect, buf: &mut Buffer) {
let [example1, example2, example3, _] =
Layout::vertical([Length(EXAMPLE_HEIGHT); 4]).areas(area);
let layout = Layout::vertical([Length(EXAMPLE_HEIGHT); 4]);
let [example1, example2, example3, _] = area.layout(&layout);
Example::new(&[Length(20), Length(20)]).render(example1, buf);
Example::new(&[Length(20), Min(20)]).render(example2, buf);
@@ -314,8 +290,8 @@ impl SelectedTab {
}
fn render_percentage_example(area: Rect, buf: &mut Buffer) {
let [example1, example2, example3, example4, example5, _] =
Layout::vertical([Length(EXAMPLE_HEIGHT); 6]).areas(area);
let layout = Layout::vertical([Length(EXAMPLE_HEIGHT); 6]);
let [example1, example2, example3, example4, example5, _] = area.layout(&layout);
Example::new(&[Percentage(75), Fill(0)]).render(example1, buf);
Example::new(&[Percentage(25), Fill(0)]).render(example2, buf);
@@ -325,8 +301,8 @@ impl SelectedTab {
}
fn render_ratio_example(area: Rect, buf: &mut Buffer) {
let [example1, example2, example3, example4, _] =
Layout::vertical([Length(EXAMPLE_HEIGHT); 5]).areas(area);
let layout = Layout::vertical([Length(EXAMPLE_HEIGHT); 5]);
let [example1, example2, example3, example4, _] = area.layout(&layout);
Example::new(&[Ratio(1, 2); 2]).render(example1, buf);
Example::new(&[Ratio(1, 4); 4]).render(example2, buf);
@@ -335,15 +311,15 @@ impl SelectedTab {
}
fn render_fill_example(area: Rect, buf: &mut Buffer) {
let [example1, example2, _] = Layout::vertical([Length(EXAMPLE_HEIGHT); 3]).areas(area);
let [example1, example2, _] = area.layout(&Layout::vertical([Length(EXAMPLE_HEIGHT); 3]));
Example::new(&[Fill(1), Fill(2), Fill(3)]).render(example1, buf);
Example::new(&[Fill(1), Percentage(50), Fill(1)]).render(example2, buf);
}
fn render_min_example(area: Rect, buf: &mut Buffer) {
let [example1, example2, example3, example4, example5, _] =
Layout::vertical([Length(EXAMPLE_HEIGHT); 6]).areas(area);
let layout = Layout::vertical([Length(EXAMPLE_HEIGHT); 6]);
let [example1, example2, example3, example4, example5, _] = area.layout(&layout);
Example::new(&[Percentage(100), Min(0)]).render(example1, buf);
Example::new(&[Percentage(100), Min(20)]).render(example2, buf);
@@ -353,8 +329,8 @@ impl SelectedTab {
}
fn render_max_example(area: Rect, buf: &mut Buffer) {
let [example1, example2, example3, example4, example5, _] =
Layout::vertical([Length(EXAMPLE_HEIGHT); 6]).areas(area);
let layout = Layout::vertical([Length(EXAMPLE_HEIGHT); 6]);
let [example1, example2, example3, example4, example5, _] = area.layout(&layout);
Example::new(&[Percentage(0), Max(0)]).render(example1, buf);
Example::new(&[Percentage(0), Max(20)]).render(example2, buf);
@@ -378,9 +354,10 @@ impl Example {
impl Widget for Example {
fn render(self, area: Rect, buf: &mut Buffer) {
let [area, _] =
Layout::vertical([Length(ILLUSTRATION_HEIGHT), Length(SPACER_HEIGHT)]).areas(area);
let blocks = Layout::horizontal(&self.constraints).split(area);
let vertical = Layout::vertical([Length(ILLUSTRATION_HEIGHT), Length(SPACER_HEIGHT)]);
let horizontal = Layout::horizontal(&self.constraints);
let [area, _] = area.layout(&vertical);
let blocks = area.layout_vec(&horizontal);
for (block, constraint) in blocks.iter().zip(&self.constraints) {
Self::illustration(*constraint, block.width).render(*block, buf);
@@ -409,32 +386,3 @@ impl Example {
Paragraph::new(text).centered().block(block)
}
}
fn init_error_hooks() -> Result<()> {
let (panic, error) = HookBuilder::default().into_hooks();
let panic = panic.into_panic_hook();
let error = error.into_eyre_hook();
color_eyre::eyre::set_hook(Box::new(move |e| {
let _ = restore_terminal();
error(e)
}))?;
std::panic::set_hook(Box::new(move |info| {
let _ = restore_terminal();
panic(info);
}));
Ok(())
}
fn init_terminal() -> Result<Terminal<impl Backend>> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let backend = CrosstermBackend::new(stdout());
let terminal = Terminal::new(backend)?;
Ok(terminal)
}
fn restore_terminal() -> Result<()> {
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
Ok(())
}

View File

@@ -0,0 +1,14 @@
[package]
name = "custom-widget"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Custom widget demo
This example shows how to create a custom widget that can be interacted with the mouse.
To run this demo:
```shell
cargo run -p custom-widget
```

View File

@@ -1,29 +1,37 @@
//! # [Ratatui] Custom Widget example
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
/// A Ratatui example that demonstrates how to create a custom widget that can be interacted
/// with using the mouse.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::{io::stdout, ops::ControlFlow, time::Duration};
use std::{error::Error, io, ops::ControlFlow, time::Duration};
use crossterm::{
event::{
self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, MouseButton, MouseEvent,
MouseEventKind,
},
execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
use color_eyre::Result;
use crossterm::event::{
self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEvent, MouseButton,
MouseEvent, MouseEventKind,
};
use ratatui::{prelude::*, widgets::Paragraph};
use crossterm::execute;
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Flex, Layout, Rect};
use ratatui::style::{Color, Style};
use ratatui::text::Line;
use ratatui::widgets::{Paragraph, Widget};
use ratatui::{DefaultTerminal, Frame};
fn main() -> Result<()> {
color_eyre::install()?;
let terminal = ratatui::init();
execute!(stdout(), EnableMouseCapture)?;
let app_result = run(terminal);
ratatui::restore();
if let Err(err) = execute!(stdout(), DisableMouseCapture) {
eprintln!("Error disabling mouse capture: {err}");
}
app_result
}
/// A custom widget that renders a button with a label, theme and state.
#[derive(Debug, Clone)]
@@ -90,8 +98,8 @@ impl<'a> Button<'a> {
}
}
impl<'a> Widget for Button<'a> {
#[allow(clippy::cast_possible_truncation)]
impl Widget for Button<'_> {
#[expect(clippy::cast_possible_truncation)]
fn render(self, area: Rect, buf: &mut Buffer) {
let (background, text, shadow, highlight) = self.colors();
buf.set_style(area, Style::new().bg(background).fg(text));
@@ -135,46 +143,16 @@ impl Button<'_> {
}
}
fn main() -> Result<(), Box<dyn Error>> {
// setup terminal
enable_raw_mode()?;
let mut stdout = io::stdout();
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
let backend = CrosstermBackend::new(stdout);
let mut terminal = Terminal::new(backend)?;
// create app and run it
let res = run_app(&mut terminal);
// restore terminal
disable_raw_mode()?;
execute!(
terminal.backend_mut(),
LeaveAlternateScreen,
DisableMouseCapture
)?;
terminal.show_cursor()?;
if let Err(err) = res {
println!("{err:?}");
}
Ok(())
}
fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> io::Result<()> {
fn run(mut terminal: DefaultTerminal) -> Result<()> {
let mut selected_button: usize = 0;
let mut button_states = [State::Selected, State::Normal, State::Normal];
loop {
terminal.draw(|frame| ui(frame, button_states))?;
terminal.draw(|frame| render(frame, button_states))?;
if !event::poll(Duration::from_millis(100))? {
continue;
}
match event::read()? {
Event::Key(key) => {
if key.kind != event::KeyEventKind::Press {
continue;
}
if handle_key_event(key, &mut button_states, &mut selected_button).is_break() {
break;
}
@@ -188,14 +166,14 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> io::Result<()> {
Ok(())
}
fn ui(frame: &mut Frame, states: [State; 3]) {
let vertical = Layout::vertical([
fn render(frame: &mut Frame, states: [State; 3]) {
let layout = Layout::vertical([
Constraint::Length(1),
Constraint::Max(3),
Constraint::Length(1),
Constraint::Min(0), // ignore remaining space
]);
let [title, buttons, help, _] = vertical.areas(frame.size());
let [title, buttons, help, _] = frame.area().layout(&layout);
frame.render_widget(
Paragraph::new("Custom Widget Example (mouse enabled)"),
@@ -206,13 +184,8 @@ fn ui(frame: &mut Frame, states: [State; 3]) {
}
fn render_buttons(frame: &mut Frame<'_>, area: Rect, states: [State; 3]) {
let horizontal = Layout::horizontal([
Constraint::Length(15),
Constraint::Length(15),
Constraint::Length(15),
Constraint::Min(0), // ignore remaining space
]);
let [red, green, blue, _] = horizontal.areas(area);
let layout = Layout::horizontal([Constraint::Length(15); 3]).flex(Flex::Start);
let [red, green, blue] = area.layout(&layout);
frame.render_widget(Button::new("Red").theme(RED).state(states[0]), red);
frame.render_widget(Button::new("Green").theme(GREEN).state(states[1]), green);
@@ -220,10 +193,13 @@ fn render_buttons(frame: &mut Frame<'_>, area: Rect, states: [State; 3]) {
}
fn handle_key_event(
key: event::KeyEvent,
key: KeyEvent,
button_states: &mut [State; 3],
selected_button: &mut usize,
) -> ControlFlow<()> {
if !key.is_press() {
return ControlFlow::Continue(());
}
match key.code {
KeyCode::Char('q') => return ControlFlow::Break(()),
KeyCode::Left | KeyCode::Char('h') => {

View File

@@ -0,0 +1,22 @@
[package]
name = "demo"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[features]
default = ["crossterm"]
crossterm = ["ratatui/crossterm", "dep:crossterm"]
termion = ["ratatui/termion", "dep:termion"]
termwiz = ["ratatui/termwiz", "dep:termwiz"]
[dependencies]
clap.workspace = true
crossterm = { workspace = true, optional = true }
rand.workspace = true
ratatui.workspace = true
termwiz = { workspace = true, optional = true }
[target.'cfg(not(windows))'.dependencies]
termion = { workspace = true, optional = true }

View File

@@ -0,0 +1,25 @@
# Demo example
This is the original demo that was developed for Tui-rs (the library that Ratatui was forked from).
![demo.gif](https://github.com/ratatui/ratatui/blob/images/examples/demo.gif?raw=true)
This example is available for each backend. To run it:
## crossterm
```shell
cargo run -p demo
```
## termion
```shell
cargo run -p demo --no-default-features --features termion
```
## termwiz
```shell
cargo run -p demo --no-default-features --features termwiz
```

View File

@@ -1,7 +1,5 @@
use rand::{
distributions::{Distribution, Uniform},
rngs::ThreadRng,
};
use rand::distr::{Distribution, Uniform};
use rand::rngs::ThreadRng;
use ratatui::widgets::ListState;
const TASKS: [&str; 24] = [
@@ -75,8 +73,8 @@ pub struct RandomSignal {
impl RandomSignal {
pub fn new(lower: u64, upper: u64) -> Self {
Self {
distribution: Uniform::new(lower, upper),
rng: rand::thread_rng(),
distribution: Uniform::new(lower, upper).expect("invalid range"),
rng: rand::rng(),
}
}
}
@@ -122,8 +120,8 @@ pub struct TabsState<'a> {
}
impl<'a> TabsState<'a> {
pub fn new(titles: Vec<&'a str>) -> TabsState {
TabsState { titles, index: 0 }
pub const fn new(titles: Vec<&'a str>) -> Self {
Self { titles, index: 0 }
}
pub fn next(&mut self) {
self.index = (self.index + 1) % self.titles.len();

View File

@@ -0,0 +1,76 @@
use std::error::Error;
use std::io;
use std::time::{Duration, Instant};
use crossterm::event::{self, DisableMouseCapture, EnableMouseCapture, KeyCode};
use crossterm::execute;
use crossterm::terminal::{
EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
};
use ratatui::Terminal;
use ratatui::backend::{Backend, CrosstermBackend};
use crate::app::App;
use crate::ui;
pub fn run(tick_rate: Duration, enhanced_graphics: bool) -> Result<(), Box<dyn Error>> {
// setup terminal
enable_raw_mode()?;
let mut stdout = io::stdout();
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
let backend = CrosstermBackend::new(stdout);
let mut terminal = Terminal::new(backend)?;
// create app and run it
let app = App::new("Crossterm Demo", enhanced_graphics);
let app_result = run_app(&mut terminal, app, tick_rate);
// restore terminal
disable_raw_mode()?;
execute!(
terminal.backend_mut(),
LeaveAlternateScreen,
DisableMouseCapture
)?;
terminal.show_cursor()?;
if let Err(err) = app_result {
println!("{err:?}");
}
Ok(())
}
fn run_app<B: Backend>(
terminal: &mut Terminal<B>,
mut app: App,
tick_rate: Duration,
) -> Result<(), Box<dyn Error>>
where
B::Error: 'static,
{
let mut last_tick = Instant::now();
loop {
terminal.draw(|frame| ui::render(frame, &mut app))?;
let timeout = tick_rate.saturating_sub(last_tick.elapsed());
if !event::poll(timeout)? {
app.on_tick();
last_tick = Instant::now();
continue;
}
if let Some(key) = event::read()?.as_key_press_event() {
match key.code {
KeyCode::Char('h') | KeyCode::Left => app.on_left(),
KeyCode::Char('j') | KeyCode::Down => app.on_down(),
KeyCode::Char('k') | KeyCode::Up => app.on_up(),
KeyCode::Char('l') | KeyCode::Right => app.on_right(),
KeyCode::Char(c) => app.on_key(c),
_ => {}
}
}
if app.should_quit {
return Ok(());
}
}
}

View File

@@ -9,18 +9,19 @@
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
//! [Ratatui]: https://github.com/ratatui/ratatui
//! [examples]: https://github.com/ratatui/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui/ratatui/blob/main/examples/README.md
use std::{error::Error, time::Duration};
use std::error::Error;
use std::time::Duration;
use argh::FromArgs;
use clap::Parser;
mod app;
#[cfg(feature = "crossterm")]
mod crossterm;
#[cfg(feature = "termion")]
#[cfg(all(not(windows), feature = "termion"))]
mod termion;
#[cfg(feature = "termwiz")]
mod termwiz;
@@ -28,24 +29,29 @@ mod termwiz;
mod ui;
/// Demo
#[derive(Debug, FromArgs)]
#[derive(Debug, Parser)]
struct Cli {
/// time in ms between two ticks.
#[argh(option, default = "250")]
#[arg(short, long, default_value_t = 250)]
tick_rate: u64,
/// whether unicode symbols are used to improve the overall look of the app
#[argh(option, default = "true")]
enhanced_graphics: bool,
#[arg(short, long, default_value_t = true)]
unicode: bool,
}
fn main() -> Result<(), Box<dyn Error>> {
let cli: Cli = argh::from_env();
let cli = Cli::parse();
let tick_rate = Duration::from_millis(cli.tick_rate);
#[cfg(feature = "crossterm")]
crate::crossterm::run(tick_rate, cli.enhanced_graphics)?;
#[cfg(feature = "termion")]
crate::termion::run(tick_rate, cli.enhanced_graphics)?;
#[cfg(feature = "termwiz")]
crate::termwiz::run(tick_rate, cli.enhanced_graphics)?;
crate::crossterm::run(tick_rate, cli.unicode)?;
#[cfg(all(not(windows), feature = "termion", not(feature = "crossterm")))]
crate::termion::run(tick_rate, cli.unicode)?;
#[cfg(all(
feature = "termwiz",
not(feature = "crossterm"),
not(feature = "termion")
))]
crate::termwiz::run(tick_rate, cli.unicode)?;
Ok(())
}

View File

@@ -1,14 +1,18 @@
use std::{error::Error, io, sync::mpsc, thread, time::Duration};
#![allow(dead_code)]
use std::error::Error;
use std::sync::mpsc;
use std::time::Duration;
use std::{io, thread};
use ratatui::prelude::*;
use termion::{
event::Key,
input::{MouseTerminal, TermRead},
raw::IntoRawMode,
screen::IntoAlternateScreen,
};
use ratatui::Terminal;
use ratatui::backend::{Backend, TermionBackend};
use termion::event::Key;
use termion::input::{MouseTerminal, TermRead};
use termion::raw::IntoRawMode;
use termion::screen::IntoAlternateScreen;
use crate::{app::App, ui};
use crate::app::App;
use crate::ui;
pub fn run(tick_rate: Duration, enhanced_graphics: bool) -> Result<(), Box<dyn Error>> {
// setup terminal
@@ -32,10 +36,13 @@ fn run_app<B: Backend>(
terminal: &mut Terminal<B>,
mut app: App,
tick_rate: Duration,
) -> Result<(), Box<dyn Error>> {
) -> Result<(), Box<dyn Error>>
where
B::Error: 'static,
{
let events = events(tick_rate);
loop {
terminal.draw(|f| ui::draw(f, &mut app))?;
terminal.draw(|frame| ui::render(frame, &mut app))?;
match events.recv()? {
Event::Input(key) => match key {
@@ -71,12 +78,14 @@ fn events(tick_rate: Duration) -> mpsc::Receiver<Event> {
}
}
});
thread::spawn(move || loop {
if let Err(err) = tx.send(Event::Tick) {
eprintln!("{err}");
break;
thread::spawn(move || {
loop {
if let Err(err) = tx.send(Event::Tick) {
eprintln!("{err}");
break;
}
thread::sleep(tick_rate);
}
thread::sleep(tick_rate);
});
rx
}

View File

@@ -1,15 +1,14 @@
use std::{
error::Error,
time::{Duration, Instant},
};
#![allow(dead_code)]
use std::error::Error;
use std::time::{Duration, Instant};
use ratatui::prelude::*;
use termwiz::{
input::{InputEvent, KeyCode},
terminal::Terminal as TermwizTerminal,
};
use ratatui::Terminal;
use ratatui::backend::TermwizBackend;
use termwiz::input::{InputEvent, KeyCode};
use termwiz::terminal::Terminal as TermwizTerminal;
use crate::{app::App, ui};
use crate::app::App;
use crate::ui;
pub fn run(tick_rate: Duration, enhanced_graphics: bool) -> Result<(), Box<dyn Error>> {
let backend = TermwizBackend::new()?;
@@ -18,12 +17,12 @@ pub fn run(tick_rate: Duration, enhanced_graphics: bool) -> Result<(), Box<dyn E
// create app and run it
let app = App::new("Termwiz Demo", enhanced_graphics);
let res = run_app(&mut terminal, app, tick_rate);
let app_result = run_app(&mut terminal, app, tick_rate);
terminal.show_cursor()?;
terminal.flush()?;
if let Err(err) = res {
if let Err(err) = app_result {
println!("{err:?}");
}
@@ -37,7 +36,7 @@ fn run_app(
) -> Result<(), Box<dyn Error>> {
let mut last_tick = Instant::now();
loop {
terminal.draw(|f| ui::draw(f, &mut app))?;
terminal.draw(|frame| ui::render(frame, &mut app))?;
let timeout = tick_rate.saturating_sub(last_tick.elapsed());
if let Some(input) = terminal

View File

@@ -1,13 +1,17 @@
#[allow(clippy::wildcard_imports)]
use ratatui::{
prelude::*,
widgets::{canvas::*, *},
use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::{Color, Modifier, Style};
use ratatui::text::{self, Span};
use ratatui::widgets::canvas::{self, Canvas, Circle, Map, MapResolution, Rectangle};
use ratatui::widgets::{
Axis, BarChart, Block, Cell, Chart, Dataset, Gauge, LineGauge, List, ListItem, Paragraph, Row,
Sparkline, Table, Tabs, Wrap,
};
use ratatui::{Frame, symbols};
use crate::app::App;
pub fn draw(f: &mut Frame, app: &mut App) {
let chunks = Layout::vertical([Constraint::Length(3), Constraint::Min(0)]).split(f.size());
pub fn render(frame: &mut Frame, app: &mut App) {
let chunks = Layout::vertical([Constraint::Length(3), Constraint::Min(0)]).split(frame.area());
let tabs = app
.tabs
.titles
@@ -17,37 +21,37 @@ pub fn draw(f: &mut Frame, app: &mut App) {
.block(Block::bordered().title(app.title))
.highlight_style(Style::default().fg(Color::Yellow))
.select(app.tabs.index);
f.render_widget(tabs, chunks[0]);
frame.render_widget(tabs, chunks[0]);
match app.tabs.index {
0 => draw_first_tab(f, app, chunks[1]),
1 => draw_second_tab(f, app, chunks[1]),
2 => draw_third_tab(f, app, chunks[1]),
0 => draw_first_tab(frame, app, chunks[1]),
1 => draw_second_tab(frame, app, chunks[1]),
2 => draw_third_tab(frame, app, chunks[1]),
_ => {}
};
}
fn draw_first_tab(f: &mut Frame, app: &mut App, area: Rect) {
fn draw_first_tab(frame: &mut Frame, app: &mut App, area: Rect) {
let chunks = Layout::vertical([
Constraint::Length(9),
Constraint::Min(8),
Constraint::Length(7),
])
.split(area);
draw_gauges(f, app, chunks[0]);
draw_charts(f, app, chunks[1]);
draw_text(f, chunks[2]);
draw_gauges(frame, app, chunks[0]);
draw_charts(frame, app, chunks[1]);
draw_text(frame, chunks[2]);
}
fn draw_gauges(f: &mut Frame, app: &mut App, area: Rect) {
fn draw_gauges(frame: &mut Frame, app: &mut App, area: Rect) {
let chunks = Layout::vertical([
Constraint::Length(2),
Constraint::Length(3),
Constraint::Length(1),
Constraint::Length(2),
])
.margin(1)
.split(area);
let block = Block::bordered().title("Graphs");
f.render_widget(block, area);
frame.render_widget(block, area);
let label = format!("{:.2}%", app.progress * 100.0);
let gauge = Gauge::default()
@@ -61,7 +65,7 @@ fn draw_gauges(f: &mut Frame, app: &mut App, area: Rect) {
.use_unicode(app.enhanced_graphics)
.label(label)
.ratio(app.progress);
f.render_widget(gauge, chunks[0]);
frame.render_widget(gauge, chunks[0]);
let sparkline = Sparkline::default()
.block(Block::new().title("Sparkline:"))
@@ -72,22 +76,27 @@ fn draw_gauges(f: &mut Frame, app: &mut App, area: Rect) {
} else {
symbols::bar::THREE_LEVELS
});
f.render_widget(sparkline, chunks[1]);
frame.render_widget(sparkline, chunks[1]);
let line_gauge = LineGauge::default()
.block(Block::new().title("LineGauge:"))
.gauge_style(Style::default().fg(Color::Magenta))
.line_set(if app.enhanced_graphics {
symbols::line::THICK
.filled_style(Style::default().fg(Color::Magenta))
.filled_symbol(if app.enhanced_graphics {
symbols::line::THICK_HORIZONTAL
} else {
symbols::line::NORMAL
symbols::line::HORIZONTAL
})
.unfilled_symbol(if app.enhanced_graphics {
symbols::line::THICK_HORIZONTAL
} else {
symbols::line::HORIZONTAL
})
.ratio(app.progress);
f.render_widget(line_gauge, chunks[2]);
frame.render_widget(line_gauge, chunks[2]);
}
#[allow(clippy::too_many_lines)]
fn draw_charts(f: &mut Frame, app: &mut App, area: Rect) {
#[expect(clippy::too_many_lines)]
fn draw_charts(frame: &mut Frame, app: &mut App, area: Rect) {
let constraints = if app.show_chart {
vec![Constraint::Percentage(50), Constraint::Percentage(50)]
} else {
@@ -113,7 +122,7 @@ fn draw_charts(f: &mut Frame, app: &mut App, area: Rect) {
.block(Block::bordered().title("List"))
.highlight_style(Style::default().add_modifier(Modifier::BOLD))
.highlight_symbol("> ");
f.render_stateful_widget(tasks, chunks[0], &mut app.tasks.state);
frame.render_stateful_widget(tasks, chunks[0], &mut app.tasks.state);
// Draw logs
let info_style = Style::default().fg(Color::Blue);
@@ -139,7 +148,7 @@ fn draw_charts(f: &mut Frame, app: &mut App, area: Rect) {
})
.collect();
let logs = List::new(logs).block(Block::bordered().title("List"));
f.render_stateful_widget(logs, chunks[1], &mut app.logs.state);
frame.render_stateful_widget(logs, chunks[1], &mut app.logs.state);
}
let barchart = BarChart::default()
@@ -160,7 +169,7 @@ fn draw_charts(f: &mut Frame, app: &mut App, area: Rect) {
)
.label_style(Style::default().fg(Color::Yellow))
.bar_style(Style::default().fg(Color::Green));
f.render_widget(barchart, chunks[1]);
frame.render_widget(barchart, chunks[1]);
}
if app.show_chart {
let x_labels = vec![
@@ -214,19 +223,21 @@ fn draw_charts(f: &mut Frame, app: &mut App, area: Rect) {
.title("Y Axis")
.style(Style::default().fg(Color::Gray))
.bounds([-20.0, 20.0])
.labels(vec![
.labels([
Span::styled("-20", Style::default().add_modifier(Modifier::BOLD)),
Span::raw("0"),
Span::styled("20", Style::default().add_modifier(Modifier::BOLD)),
]),
);
f.render_widget(chart, chunks[1]);
frame.render_widget(chart, chunks[1]);
}
}
fn draw_text(f: &mut Frame, area: Rect) {
fn draw_text(frame: &mut Frame, area: Rect) {
let text = vec![
text::Line::from("This is a paragraph with several lines. You can change style your text the way you want"),
text::Line::from(
"This is a paragraph with several lines. You can change style your text the way you want",
),
text::Line::from(""),
text::Line::from(vec![
Span::from("For example: "),
@@ -241,16 +252,17 @@ fn draw_text(f: &mut Frame, area: Rect) {
Span::raw("Oh and if you didn't "),
Span::styled("notice", Style::default().add_modifier(Modifier::ITALIC)),
Span::raw(" you can "),
Span::styled("automatically", Style::default().add_modifier(Modifier::BOLD)),
Span::styled(
"automatically",
Style::default().add_modifier(Modifier::BOLD),
),
Span::raw(" "),
Span::styled("wrap", Style::default().add_modifier(Modifier::REVERSED)),
Span::raw(" your "),
Span::styled("text", Style::default().add_modifier(Modifier::UNDERLINED)),
Span::raw(".")
Span::raw("."),
]),
text::Line::from(
"One more thing is that it should display unicode characters: 10€"
),
text::Line::from("One more thing is that it should display unicode characters: 10€"),
];
let block = Block::bordered().title(Span::styled(
"Footer",
@@ -259,10 +271,10 @@ fn draw_text(f: &mut Frame, area: Rect) {
.add_modifier(Modifier::BOLD),
));
let paragraph = Paragraph::new(text).block(block).wrap(Wrap { trim: true });
f.render_widget(paragraph, area);
frame.render_widget(paragraph, area);
}
fn draw_second_tab(f: &mut Frame, app: &mut App, area: Rect) {
fn draw_second_tab(frame: &mut Frame, app: &mut App, area: Rect) {
let chunks =
Layout::horizontal([Constraint::Percentage(30), Constraint::Percentage(70)]).split(area);
let up_style = Style::default().fg(Color::Green);
@@ -291,7 +303,7 @@ fn draw_second_tab(f: &mut Frame, app: &mut App, area: Rect) {
.bottom_margin(1),
)
.block(Block::bordered().title("Servers"));
f.render_widget(table, chunks[0]);
frame.render_widget(table, chunks[0]);
let map = Canvas::default()
.block(Block::bordered().title("World"))
@@ -345,10 +357,10 @@ fn draw_second_tab(f: &mut Frame, app: &mut App, area: Rect) {
})
.x_bounds([-180.0, 180.0])
.y_bounds([-90.0, 90.0]);
f.render_widget(map, chunks[1]);
frame.render_widget(map, chunks[1]);
}
fn draw_third_tab(f: &mut Frame, _app: &mut App, area: Rect) {
fn draw_third_tab(frame: &mut Frame, _app: &mut App, area: Rect) {
let chunks = Layout::horizontal([Constraint::Ratio(1, 2), Constraint::Ratio(1, 2)]).split(area);
let colors = [
Color::Reset,
@@ -389,5 +401,5 @@ fn draw_third_tab(f: &mut Frame, _app: &mut App, area: Rect) {
],
)
.block(Block::bordered().title("Colors"));
f.render_widget(table, chunks[0]);
frame.render_widget(table, chunks[0]);
}

View File

@@ -0,0 +1,19 @@
[package]
name = "demo2"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
indoc.workspace = true
itertools.workspace = true
palette.workspace = true
rand.workspace = true
rand_chacha.workspace = true
ratatui = { workspace = true, features = ["all-widgets"] }
strum.workspace = true
time.workspace = true
unicode-width.workspace = true

View File

@@ -0,0 +1,9 @@
## Demo2
This is the demo example from the main README and crate page. Source: [demo2](./demo2/).
```shell
cargo run -p demo2
```
![Demo2](https://github.com/ratatui/ratatui/blob/images/examples/demo2.gif?raw=true)

View File

@@ -1,12 +1,19 @@
use std::time::Duration;
use color_eyre::{eyre::Context, Result};
use crossterm::event::{Event, KeyCode, KeyEvent, KeyEventKind};
use color_eyre::Result;
use color_eyre::eyre::Context;
use crossterm::event::{self, KeyCode};
use itertools::Itertools;
use ratatui::{prelude::*, widgets::*};
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::Color;
use ratatui::text::{Line, Span};
use ratatui::widgets::{Block, Tabs, Widget};
use ratatui::{DefaultTerminal, Frame};
use strum::{Display, EnumIter, FromRepr, IntoEnumIterator};
use crate::{destroy, tabs::*, term, THEME};
use crate::tabs::{AboutTab, EmailTab, RecipeTab, TracerouteTab, WeatherTab};
use crate::{THEME, destroy};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub struct App {
@@ -37,15 +44,13 @@ enum Tab {
Weather,
}
pub fn run(terminal: &mut Terminal<impl Backend>) -> Result<()> {
App::default().run(terminal)
}
impl App {
/// Run the app until the user quits.
pub fn run(&mut self, terminal: &mut Terminal<impl Backend>) -> Result<()> {
pub fn run(mut self, mut terminal: DefaultTerminal) -> Result<()> {
while self.is_running() {
self.draw(terminal)?;
terminal
.draw(|frame| self.render(frame))
.wrap_err("terminal.draw")?;
self.handle_events()?;
}
Ok(())
@@ -55,17 +60,12 @@ impl App {
self.mode != Mode::Quit
}
/// Draw a single frame of the app.
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> Result<()> {
terminal
.draw(|frame| {
frame.render_widget(self, frame.size());
if self.mode == Mode::Destroy {
destroy::destroy(frame);
}
})
.wrap_err("terminal.draw")?;
Ok(())
/// Render a single frame of the app.
fn render(&self, frame: &mut Frame) {
frame.render_widget(self, frame.area());
if self.mode == Mode::Destroy {
destroy::destroy(frame);
}
}
/// Handle events from the terminal.
@@ -74,26 +74,23 @@ impl App {
/// 1/50th of a second. This was chosen to try to match the default frame rate of a GIF in VHS.
fn handle_events(&mut self) -> Result<()> {
let timeout = Duration::from_secs_f64(1.0 / 50.0);
match term::next_event(timeout)? {
Some(Event::Key(key)) if key.kind == KeyEventKind::Press => self.handle_key_press(key),
_ => {}
if !event::poll(timeout)? {
return Ok(());
}
if let Some(key) = event::read()?.as_key_press_event() {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => self.mode = Mode::Quit,
KeyCode::Char('h') | KeyCode::Left => self.prev_tab(),
KeyCode::Char('l') | KeyCode::Right | KeyCode::Tab => self.next_tab(),
KeyCode::Char('k') | KeyCode::Up => self.prev(),
KeyCode::Char('j') | KeyCode::Down => self.next(),
KeyCode::Char('d') | KeyCode::Delete => self.destroy(),
_ => {}
};
}
Ok(())
}
fn handle_key_press(&mut self, key: KeyEvent) {
use KeyCode::*;
match key.code {
Char('q') | Esc => self.mode = Mode::Quit,
Char('h') | Left => self.prev_tab(),
Char('l') | Right => self.next_tab(),
Char('k') | Up => self.prev(),
Char('j') | Down => self.next(),
Char('d') | Delete => self.destroy(),
_ => {}
};
}
fn prev(&mut self) {
match self.tab {
Tab::About => self.about_tab.prev_row(),
@@ -132,12 +129,12 @@ impl App {
/// matter, but for larger apps this can be a significant performance improvement.
impl Widget for &App {
fn render(self, area: Rect, buf: &mut Buffer) {
let vertical = Layout::vertical([
let layout = Layout::vertical([
Constraint::Length(1),
Constraint::Min(0),
Constraint::Length(1),
]);
let [title_bar, tab, bottom_bar] = vertical.areas(area);
let [title_bar, tab, bottom_bar] = area.layout(&layout);
Block::new().style(THEME.root).render(area, buf);
self.render_title_bar(title_bar, buf);
@@ -149,7 +146,7 @@ impl Widget for &App {
impl App {
fn render_title_bar(&self, area: Rect, buf: &mut Buffer) {
let layout = Layout::horizontal([Constraint::Min(0), Constraint::Length(43)]);
let [title, tabs] = layout.areas(area);
let [title, tabs] = area.layout(&layout);
Span::styled("Ratatui", THEME.app_title).render(title, buf);
let titles = Tab::iter().map(Tab::title);

View File

@@ -1,5 +1,8 @@
use palette::{IntoColor, Okhsv, Srgb};
use ratatui::prelude::*;
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::style::Color;
use ratatui::widgets::Widget;
/// A widget that renders a color swatch of RGB colors.
///
@@ -9,7 +12,7 @@ use ratatui::prelude::*;
pub struct RgbSwatch;
impl Widget for RgbSwatch {
#[allow(clippy::cast_precision_loss, clippy::similar_names)]
#[expect(clippy::cast_precision_loss, clippy::similar_names)]
fn render(self, area: Rect, buf: &mut Buffer) {
for (yi, y) in (area.top()..area.bottom()).enumerate() {
let value = f32::from(area.height) - yi as f32;
@@ -19,7 +22,7 @@ impl Widget for RgbSwatch {
let hue = xi as f32 * 360.0 / f32::from(area.width);
let fg = color_from_oklab(hue, Okhsv::max_saturation(), value_fg);
let bg = color_from_oklab(hue, Okhsv::max_saturation(), value_bg);
buf.get_mut(x, y).set_char('▀').set_fg(fg).set_bg(bg);
buf[(x, y)].set_char('▀').set_fg(fg).set_bg(bg);
}
}
}

View File

@@ -1,16 +1,18 @@
use rand::Rng;
use rand_chacha::rand_core::SeedableRng;
use ratatui::{buffer::Cell, layout::Flex, prelude::*};
use unicode_width::UnicodeWidthStr;
use crate::big_text::{BigTextBuilder, PixelSize};
use ratatui::Frame;
use ratatui::buffer::Buffer;
use ratatui::layout::{Flex, Layout, Rect};
use ratatui::style::{Color, Style};
use ratatui::text::Text;
use ratatui::widgets::Widget;
/// delay the start of the animation so it doesn't start immediately
const DELAY: usize = 240;
const DELAY: usize = 120;
/// higher means more pixels per frame are modified in the animation
const DRIP_SPEED: usize = 50;
const DRIP_SPEED: usize = 500;
/// delay the start of the text animation so it doesn't start immediately after the initial delay
const TEXT_DELAY: usize = 240;
const TEXT_DELAY: usize = 180;
/// Destroy mode activated by pressing `d`
pub fn destroy(frame: &mut Frame<'_>) {
@@ -19,7 +21,7 @@ pub fn destroy(frame: &mut Frame<'_>) {
return;
}
let area = frame.size();
let area = frame.area();
let buf = frame.buffer_mut();
drip(frame_count, area, buf);
@@ -30,7 +32,7 @@ pub fn destroy(frame: &mut Frame<'_>) {
///
/// Each pick some random pixels and move them each down one row. This is a very inefficient way to
/// do this, but it works well enough for this demo.
#[allow(
#[expect(
clippy::cast_possible_truncation,
clippy::cast_precision_loss,
clippy::cast_sign_loss
@@ -43,63 +45,61 @@ fn drip(frame_count: usize, area: Rect, buf: &mut Buffer) {
let variable_speed = DRIP_SPEED as f64 * fractional_speed * fractional_speed * fractional_speed;
let pixel_count = (frame_count as f64 * variable_speed).floor() as usize;
for _ in 0..pixel_count {
let src_x = rng.gen_range(0..area.width);
let src_y = rng.gen_range(1..area.height - 2);
let src = buf.get_mut(src_x, src_y).clone();
let src_x = rng.random_range(0..area.width);
let src_y = rng.random_range(1..area.height - 2);
let src = buf[(src_x, src_y)].clone();
// 1% of the time, move a blank or pixel (10:1) to the top line of the screen
if rng.gen_ratio(1, 100) {
if rng.random_ratio(1, 100) {
let dest_x = rng
.gen_range(src_x.saturating_sub(5)..src_x.saturating_add(5))
.random_range(src_x.saturating_sub(5)..src_x.saturating_add(5))
.clamp(area.left(), area.right() - 1);
let dest_y = area.top() + 1;
let dest = buf.get_mut(dest_x, dest_y);
let dest = &mut buf[(dest_x, dest_y)];
// copy the cell to the new location about 1/10 of the time blank out the cell the rest
// of the time. This has the effect of gradually removing the pixels from the screen.
if rng.gen_ratio(1, 10) {
if rng.random_ratio(1, 10) {
*dest = src;
} else {
*dest = Cell::default();
dest.reset();
}
} else {
// move the pixel down one row
let dest_x = src_x;
let dest_y = src_y.saturating_add(1).min(area.bottom() - 2);
// copy the cell to the new location
let dest = buf.get_mut(dest_x, dest_y);
*dest = src;
buf[(dest_x, dest_y)] = src;
}
}
}
/// draw some text fading in and out from black to red and back
#[allow(clippy::cast_possible_truncation, clippy::cast_precision_loss)]
#[expect(clippy::cast_possible_truncation, clippy::cast_precision_loss)]
fn text(frame_count: usize, area: Rect, buf: &mut Buffer) {
let sub_frame = frame_count.saturating_sub(TEXT_DELAY);
if sub_frame == 0 {
return;
}
let line = "RATATUI";
let big_text = BigTextBuilder::default()
.lines([line.into()])
.pixel_size(PixelSize::Full)
.style(Style::new().fg(Color::Rgb(255, 0, 0)))
.build()
.unwrap();
// the font size is 8x8 for each character and we have 1 line
let area = centered_rect(area, line.width() as u16 * 8, 8);
let logo = indoc::indoc! {"
"};
let logo_text = Text::styled(logo, Color::Rgb(255, 255, 255));
let area = centered_rect(area, logo_text.width() as u16, logo_text.height() as u16);
let mask_buf = &mut Buffer::empty(area);
big_text.render(area, mask_buf);
logo_text.render(area, mask_buf);
let percentage = (sub_frame as f64 / 480.0).clamp(0.0, 1.0);
for row in area.rows() {
for col in row.columns() {
let cell = buf.get_mut(col.x, col.y);
let mask_cell = mask_buf.get(col.x, col.y);
let cell = &mut buf[(col.x, col.y)];
let mask_cell = &mut mask_buf[(col.x, col.y)];
cell.set_symbol(mask_cell.symbol());
// blend the mask cell color with the cell color
@@ -126,7 +126,7 @@ fn blend(mask_color: Color, cell_color: Color, percentage: f64) -> Color {
let green = f64::from(mask_green).mul_add(percentage, f64::from(cell_green) * remain);
let blue = f64::from(mask_blue).mul_add(percentage, f64::from(cell_blue) * remain);
#[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
#[expect(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
Color::Rgb(red as u8, green as u8, blue as u8)
}
@@ -134,7 +134,7 @@ fn blend(mask_color: Color, cell_color: Color, percentage: f64) -> Color {
fn centered_rect(area: Rect, width: u16, height: u16) -> Rect {
let horizontal = Layout::horizontal([width]).flex(Flex::Center);
let vertical = Layout::vertical([height]).flex(Flex::Center);
let [area] = vertical.areas(area);
let [area] = horizontal.areas(area);
let [area] = area.layout(&vertical);
let [area] = area.layout(&horizontal);
area
}

View File

@@ -0,0 +1,51 @@
//! # [Ratatui] Demo2 example
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui/ratatui
//! [examples]: https://github.com/ratatui/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui/ratatui/blob/main/examples/README.md
#![allow(
clippy::missing_errors_doc,
clippy::module_name_repetitions,
clippy::must_use_candidate
)]
mod app;
mod colors;
mod destroy;
mod tabs;
mod theme;
use std::io::stdout;
use app::App;
use color_eyre::Result;
use crossterm::execute;
use crossterm::terminal::{EnterAlternateScreen, LeaveAlternateScreen};
use ratatui::layout::Rect;
use ratatui::{TerminalOptions, Viewport};
pub use self::colors::{RgbSwatch, color_from_oklab};
pub use self::theme::THEME;
fn main() -> Result<()> {
color_eyre::install()?;
// this size is to match the size of the terminal when running the demo
// using vhs in a 1280x640 sized window (github social preview size)
let viewport = Viewport::Fixed(Rect::new(0, 0, 81, 18));
let terminal = ratatui::init_with_options(TerminalOptions { viewport });
execute!(stdout(), EnterAlternateScreen).expect("failed to enter alternate screen");
let app_result = App::default().run(terminal);
execute!(stdout(), LeaveAlternateScreen).expect("failed to leave alternate screen");
ratatui::restore();
app_result
}

View File

@@ -0,0 +1,73 @@
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Layout, Margin, Rect};
use ratatui::widgets::{
Block, Borders, Clear, MascotEyeColor, Padding, Paragraph, RatatuiMascot, Widget, Wrap,
};
use crate::{RgbSwatch, THEME};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub struct AboutTab {
row_index: usize,
}
impl AboutTab {
pub fn prev_row(&mut self) {
self.row_index = self.row_index.saturating_sub(1);
}
pub fn next_row(&mut self) {
self.row_index = self.row_index.saturating_add(1);
}
}
impl Widget for AboutTab {
fn render(self, area: Rect, buf: &mut Buffer) {
RgbSwatch.render(area, buf);
let layout = Layout::horizontal([Constraint::Length(34), Constraint::Min(0)]);
let [logo_area, description] = area.layout(&layout);
render_crate_description(description, buf);
let eye_state = if self.row_index % 2 == 0 {
MascotEyeColor::Default
} else {
MascotEyeColor::Red
};
RatatuiMascot::default().set_eye(eye_state).render(
logo_area.inner(Margin {
vertical: 0,
horizontal: 2,
}),
buf,
);
}
}
fn render_crate_description(area: Rect, buf: &mut Buffer) {
let area = area.inner(Margin {
vertical: 4,
horizontal: 2,
});
Clear.render(area, buf); // clear out the color swatches
Block::new().style(THEME.content).render(area, buf);
let area = area.inner(Margin {
vertical: 1,
horizontal: 2,
});
let text = "- cooking up terminal user interfaces -
Ratatui is a Rust crate that provides widgets (e.g. Paragraph, Table) and draws them to the \
screen efficiently every frame.";
Paragraph::new(text)
.style(THEME.description)
.block(
Block::new()
.title(" Ratatui ")
.title_alignment(Alignment::Center)
.borders(Borders::TOP)
.border_style(THEME.description_title)
.padding(Padding::new(0, 0, 0, 0)),
)
.wrap(Wrap { trim: true })
.scroll((0, 0))
.render(area, buf);
}

View File

@@ -1,5 +1,12 @@
use itertools::Itertools;
use ratatui::{prelude::*, widgets::*};
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Margin, Rect};
use ratatui::style::{Styled, Stylize};
use ratatui::text::Line;
use ratatui::widgets::{
Block, BorderType, Borders, Clear, List, ListItem, ListState, Padding, Paragraph, Scrollbar,
ScrollbarState, StatefulWidget, Tabs, Widget,
};
use unicode_width::UnicodeWidthStr;
use crate::{RgbSwatch, THEME};
@@ -59,20 +66,20 @@ impl EmailTab {
impl Widget for EmailTab {
fn render(self, area: Rect, buf: &mut Buffer) {
RgbSwatch.render(area, buf);
let area = area.inner(&Margin {
let area = area.inner(Margin {
vertical: 1,
horizontal: 2,
});
Clear.render(area, buf);
let vertical = Layout::vertical([Constraint::Length(5), Constraint::Min(0)]);
let [inbox, email] = vertical.areas(area);
let layout = Layout::vertical([Constraint::Length(5), Constraint::Min(0)]);
let [inbox, email] = area.layout(&layout);
render_inbox(self.row_index, inbox, buf);
render_email(self.row_index, email, buf);
}
}
fn render_inbox(selected_index: usize, area: Rect, buf: &mut Buffer) {
let vertical = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]);
let [tabs, inbox] = vertical.areas(area);
let layout = Layout::vertical([Constraint::Length(1), Constraint::Min(0)]);
let [tabs, inbox] = area.layout(&layout);
let theme = THEME.email;
Tabs::new(vec![" Inbox ", " Sent ", " Drafts "])
.style(theme.tabs)
@@ -87,13 +94,10 @@ fn render_inbox(selected_index: usize, area: Rect, buf: &mut Buffer) {
.map(|e| e.from.width())
.max()
.unwrap_or_default();
let items = EMAILS
.iter()
.map(|e| {
let from = format!("{:width$}", e.from, width = from_width).into();
ListItem::new(Line::from(vec![from, " ".into(), e.subject.into()]))
})
.collect_vec();
let items = EMAILS.iter().map(|e| {
let from = format!("{:width$}", e.from, width = from_width).into();
ListItem::new(Line::from(vec![from, " ".into(), e.subject.into()]))
});
let mut state = ListState::default().with_selected(Some(selected_index));
StatefulWidget::render(
List::new(items)
@@ -126,8 +130,8 @@ fn render_email(selected_index: usize, area: Rect, buf: &mut Buffer) {
let inner = block.inner(area);
block.render(area, buf);
if let Some(email) = email {
let vertical = Layout::vertical([Constraint::Length(3), Constraint::Min(0)]);
let [headers_area, body_area] = vertical.areas(inner);
let layout = Layout::vertical([Constraint::Length(3), Constraint::Min(0)]);
let [headers_area, body_area] = inner.layout(&layout);
let headers = vec![
Line::from(vec![
"From: ".set_style(theme.header),

View File

@@ -1,5 +1,12 @@
use itertools::Itertools;
use ratatui::{prelude::*, widgets::*};
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Layout, Margin, Rect};
use ratatui::style::{Style, Stylize};
use ratatui::text::Line;
use ratatui::widgets::{
Block, Clear, Padding, Paragraph, Row, Scrollbar, ScrollbarOrientation, ScrollbarState,
StatefulWidget, Table, TableState, Widget, Wrap,
};
use crate::{RgbSwatch, THEME};
@@ -10,13 +17,13 @@ struct Ingredient {
}
impl Ingredient {
#[allow(clippy::cast_possible_truncation)]
#[expect(clippy::cast_possible_truncation)]
fn height(&self) -> u16 {
self.name.lines().count() as u16
}
}
impl<'a> From<Ingredient> for Row<'a> {
impl From<Ingredient> for Row<'_> {
fn from(i: Ingredient) -> Self {
Row::new(vec![i.quantity, i.name]).height(i.height())
}
@@ -105,7 +112,7 @@ impl RecipeTab {
impl Widget for RecipeTab {
fn render(self, area: Rect, buf: &mut Buffer) {
RgbSwatch.render(area, buf);
let area = area.inner(&Margin {
let area = area.inner(Margin {
vertical: 1,
horizontal: 2,
});
@@ -124,12 +131,12 @@ impl Widget for RecipeTab {
};
render_scrollbar(self.row_index, scrollbar_area, buf);
let area = area.inner(&Margin {
let area = area.inner(Margin {
horizontal: 2,
vertical: 1,
});
let [recipe, ingredients] =
Layout::horizontal([Constraint::Length(44), Constraint::Min(0)]).areas(area);
let layout = Layout::horizontal([Constraint::Length(44), Constraint::Min(0)]);
let [recipe, ingredients] = area.layout(&layout);
render_recipe(recipe, buf);
render_ingredients(self.row_index, ingredients, buf);
@@ -155,7 +162,7 @@ fn render_ingredients(selected_row: usize, area: Rect, buf: &mut Buffer) {
Table::new(rows, [Constraint::Length(7), Constraint::Length(30)])
.block(Block::new().style(theme.ingredients))
.header(Row::new(vec!["Qty", "Ingredient"]).style(theme.ingredients_header))
.highlight_style(Style::new().light_yellow()),
.row_highlight_style(Style::new().light_yellow()),
area,
buf,
&mut state,

View File

@@ -1,7 +1,12 @@
use itertools::Itertools;
use ratatui::{
prelude::*,
widgets::{canvas::*, *},
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Layout, Margin, Rect};
use ratatui::style::{Styled, Stylize};
use ratatui::symbols::Marker;
use ratatui::widgets::canvas::{self, Canvas, Map, MapResolution, Points};
use ratatui::widgets::{
Block, BorderType, Clear, Padding, Row, Scrollbar, ScrollbarOrientation, ScrollbarState,
Sparkline, StatefulWidget, Table, TableState, Widget,
};
use crate::{RgbSwatch, THEME};
@@ -26,7 +31,7 @@ impl TracerouteTab {
impl Widget for TracerouteTab {
fn render(self, area: Rect, buf: &mut Buffer) {
RgbSwatch.render(area, buf);
let area = area.inner(&Margin {
let area = area.inner(Margin {
vertical: 1,
horizontal: 2,
});
@@ -34,8 +39,8 @@ impl Widget for TracerouteTab {
Block::new().style(THEME.content).render(area, buf);
let horizontal = Layout::horizontal([Constraint::Ratio(1, 2), Constraint::Ratio(1, 2)]);
let vertical = Layout::vertical([Constraint::Min(0), Constraint::Length(3)]);
let [left, map] = horizontal.areas(area);
let [hops, pings] = vertical.areas(left);
let [left, map] = area.layout(&horizontal);
let [hops, pings] = left.layout(&vertical);
render_hops(self.row_index, hops, buf);
render_ping(self.row_index, pings, buf);
@@ -45,10 +50,7 @@ impl Widget for TracerouteTab {
fn render_hops(selected_row: usize, area: Rect, buf: &mut Buffer) {
let mut state = TableState::default().with_selected(Some(selected_row));
let rows = HOPS
.iter()
.map(|hop| Row::new(vec![hop.host, hop.address]))
.collect_vec();
let rows = HOPS.iter().map(|hop| Row::new(vec![hop.host, hop.address]));
let block = Block::new()
.padding(Padding::new(1, 1, 1, 1))
.title_alignment(Alignment::Center)
@@ -56,7 +58,7 @@ fn render_hops(selected_row: usize, area: Rect, buf: &mut Buffer) {
StatefulWidget::render(
Table::new(rows, [Constraint::Max(100), Constraint::Length(15)])
.header(Row::new(vec!["Host", "Address"]).set_style(THEME.traceroute.header))
.highlight_style(THEME.traceroute.selected)
.row_highlight_style(THEME.traceroute.selected)
.block(block),
area,
buf,
@@ -95,7 +97,7 @@ pub fn render_ping(progress: usize, area: Rect, buf: &mut Buffer) {
.title_alignment(Alignment::Center)
.border_type(BorderType::Thick),
)
.data(&data)
.data(data)
.style(THEME.traceroute.ping)
.render(area, buf);
}
@@ -104,7 +106,7 @@ fn render_map(selected_row: usize, area: Rect, buf: &mut Buffer) {
let theme = THEME.traceroute.map;
let path: Option<(&Hop, &Hop)> = HOPS.iter().tuple_windows().nth(selected_row);
let map = Map {
resolution: canvas::MapResolution::High,
resolution: MapResolution::High,
color: theme.color,
};
Canvas::default()

View File

@@ -1,12 +1,14 @@
use itertools::Itertools;
use palette::Okhsv;
use ratatui::{
prelude::*,
widgets::{calendar::CalendarEventStore, *},
};
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Direction, Layout, Margin, Rect};
use ratatui::style::{Color, Style};
use ratatui::symbols;
use ratatui::widgets::calendar::{CalendarEventStore, Monthly};
use ratatui::widgets::{Bar, BarChart, BarGroup, Block, Clear, LineGauge, Padding, Widget};
use time::OffsetDateTime;
use crate::{color_from_oklab, RgbSwatch, THEME};
use crate::{RgbSwatch, THEME, color_from_oklab};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub struct WeatherTab {
@@ -28,27 +30,27 @@ impl WeatherTab {
impl Widget for WeatherTab {
fn render(self, area: Rect, buf: &mut Buffer) {
RgbSwatch.render(area, buf);
let area = area.inner(&Margin {
let area = area.inner(Margin {
vertical: 1,
horizontal: 2,
});
Clear.render(area, buf);
Block::new().style(THEME.content).render(area, buf);
let area = area.inner(&Margin {
let area = area.inner(Margin {
horizontal: 2,
vertical: 1,
});
let [main, _, gauges] = Layout::vertical([
let tab_layout = Layout::vertical([
Constraint::Min(0),
Constraint::Length(1),
Constraint::Length(1),
])
.areas(area);
let [calendar, charts] =
Layout::horizontal([Constraint::Length(23), Constraint::Min(0)]).areas(main);
let [simple, horizontal] =
Layout::vertical([Constraint::Length(29), Constraint::Min(0)]).areas(charts);
]);
let [main, _, gauges] = area.layout(&tab_layout);
let main_layout = Layout::horizontal([Constraint::Length(23), Constraint::Min(0)]);
let [calendar, charts] = main.layout(&main_layout);
let charts_layout = Layout::vertical([Constraint::Length(29), Constraint::Min(0)]);
let [simple, horizontal] = charts.layout(&charts_layout);
render_calendar(calendar, buf);
render_simple_barchart(simple, buf);
@@ -59,7 +61,7 @@ impl Widget for WeatherTab {
fn render_calendar(area: Rect, buf: &mut Buffer) {
let date = OffsetDateTime::now_utc().date();
calendar::Monthly::new(date, CalendarEventStore::today(Style::new().red().bold()))
Monthly::new(date, CalendarEventStore::today(Style::new().red().bold()))
.block(Block::new().padding(Padding::new(0, 0, 2, 0)))
.show_month_header(Style::new().bold())
.show_weekdays_header(Style::new().italic())
@@ -82,7 +84,7 @@ fn render_simple_barchart(area: Rect, buf: &mut Buffer) {
Bar::default()
.value(value)
// This doesn't actually render correctly as the text is too wide for the bar
// See https://github.com/ratatui-org/ratatui/issues/513 for more info
// See https://github.com/ratatui/ratatui/issues/513 for more info
// (the demo GIFs hack around this by hacking the calculation in bars.rs)
.text_value(format!("{value}°"))
.style(if value > 70 {
@@ -95,7 +97,7 @@ fn render_simple_barchart(area: Rect, buf: &mut Buffer) {
} else {
Style::new().fg(Color::DarkGray).bg(Color::Yellow).bold()
})
.label(label.into())
.label(label)
})
.collect_vec();
let group = BarGroup::default().bars(&data);
@@ -109,15 +111,15 @@ fn render_simple_barchart(area: Rect, buf: &mut Buffer) {
fn render_horizontal_barchart(area: Rect, buf: &mut Buffer) {
let bg = Color::Rgb(32, 48, 96);
let data = [
Bar::default().text_value("Winter 37-51".into()).value(51),
Bar::default().text_value("Spring 40-65".into()).value(65),
Bar::default().text_value("Summer 54-77".into()).value(77),
Bar::default().text_value("Winter 37-51").value(51),
Bar::default().text_value("Spring 40-65").value(65),
Bar::default().text_value("Summer 54-77").value(77),
Bar::default()
.text_value("Fall 41-71".into())
.text_value("Fall 41-71")
.value(71)
.value_style(Style::new().bold()), // current season
];
let group = BarGroup::default().label("GPU".into()).bars(&data);
let group = BarGroup::default().label("GPU").bars(&data);
BarChart::default()
.block(Block::new().padding(Padding::new(0, 0, 2, 0)))
.direction(Direction::Horizontal)
@@ -128,20 +130,20 @@ fn render_horizontal_barchart(area: Rect, buf: &mut Buffer) {
.render(area, buf);
}
#[allow(clippy::cast_precision_loss)]
#[expect(clippy::cast_precision_loss)]
pub fn render_gauge(progress: usize, area: Rect, buf: &mut Buffer) {
let percent = (progress * 3).min(100) as f64;
render_line_gauge(percent, area, buf);
}
#[allow(clippy::cast_possible_truncation)]
#[expect(clippy::cast_possible_truncation)]
fn render_line_gauge(percent: f64, area: Rect, buf: &mut Buffer) {
// cycle color hue based on the percent for a neat effect yellow -> red
let hue = 90.0 - (percent as f32 * 0.6);
let value = Okhsv::max_value();
let fg = color_from_oklab(hue, Okhsv::max_saturation(), value);
let bg = color_from_oklab(hue, Okhsv::max_saturation(), value * 0.5);
let filled_color = color_from_oklab(hue, Okhsv::max_saturation(), value);
let unfilled_color = color_from_oklab(hue, Okhsv::max_saturation(), value * 0.5);
let label = if percent < 100.0 {
format!("Downloading: {percent}%")
} else {
@@ -151,7 +153,9 @@ fn render_line_gauge(percent: f64, area: Rect, buf: &mut Buffer) {
.ratio(percent / 100.0)
.label(label)
.style(Style::new().light_blue())
.gauge_style(Style::new().fg(fg).bg(bg))
.line_set(symbols::line::THICK)
.filled_style(Style::new().fg(filled_color))
.unfilled_style(Style::new().fg(unfilled_color))
.filled_symbol(symbols::line::THICK_HORIZONTAL)
.unfilled_symbol(symbols::line::THICK_HORIZONTAL)
.render(area, buf);
}

View File

@@ -1,4 +1,4 @@
use ratatui::prelude::*;
use ratatui::style::{Color, Modifier, Style};
pub struct Theme {
pub root: Style,
@@ -22,10 +22,8 @@ pub struct KeyBinding {
}
pub struct Logo {
pub rat: Color,
pub rat_eye: Color,
pub rat_eye_alt: Color,
pub term: Color,
}
pub struct Email {
@@ -77,10 +75,8 @@ pub const THEME: Theme = Theme {
description: Style::new().fg(LIGHT_GRAY).bg(DARK_BLUE),
description_title: Style::new().fg(LIGHT_GRAY).add_modifier(Modifier::BOLD),
logo: Logo {
rat: WHITE,
rat_eye: BLACK,
rat_eye_alt: RED,
term: BLACK,
},
key_binding: KeyBinding {
key: Style::new().fg(BLACK).bg(DARK_GRAY),

View File

@@ -0,0 +1,15 @@
[package]
name = "flex"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui.workspace = true
strum.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Flex demo
This interactive example shows how to use the flex layouts.
To run this demo:
```shell
cargo run -p flex
```

View File

@@ -1,41 +1,39 @@
//! # [Ratatui] Flex example
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
/// A Ratatui example that demonstrates different types of flex layouts.
///
/// You can also change the spacing between the constraints, and toggle between different types
/// of flex layouts.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::num::NonZeroUsize;
#![allow(clippy::enum_glob_use, clippy::wildcard_imports)]
use std::io::{self, stdout};
use color_eyre::{config::HookBuilder, Result};
use crossterm::{
event::{self, Event, KeyCode, KeyEventKind},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
};
use ratatui::{
layout::{Constraint::*, Flex},
prelude::*,
style::palette::tailwind,
symbols::line,
widgets::{block::Title, *},
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio};
use ratatui::layout::{Alignment, Flex, Layout, Rect};
use ratatui::style::palette::tailwind;
use ratatui::style::{Color, Modifier, Style, Stylize};
use ratatui::symbols::{self, line};
use ratatui::text::{Line, Text};
use ratatui::widgets::{
Block, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, StatefulWidget, Tabs, Widget,
};
use strum::{Display, EnumIter, FromRepr, IntoEnumIterator};
fn main() -> Result<()> {
color_eyre::install()?;
ratatui::run(|terminal| App::default().run(terminal))
}
const EXAMPLE_DATA: &[(&str, &[Constraint])] = &[
(
"Min(u16) takes any excess space always",
&[Length(10), Min(10), Max(10), Percentage(10), Ratio(1,10)],
&[Length(10), Min(10), Max(10), Percentage(10), Ratio(1, 10)],
),
(
"Fill(u16) takes any excess space always",
@@ -43,20 +41,18 @@ const EXAMPLE_DATA: &[(&str, &[Constraint])] = &[
),
(
"Here's all constraints in one line",
&[Length(10), Min(10), Max(10), Percentage(10), Ratio(1,10), Fill(1)],
),
(
"",
&[Max(50), Min(50)],
),
(
"",
&[Max(20), Length(10)],
),
(
"",
&[Max(20), Length(10)],
&[
Length(10),
Min(10),
Max(10),
Percentage(10),
Ratio(1, 10),
Fill(1),
],
),
("", &[Max(50), Min(50)]),
("", &[Max(20), Length(10)]),
("", &[Max(20), Length(10)]),
(
"Min grows always but also allows Fill to grow",
&[Percentage(50), Fill(1), Fill(2), Min(50)],
@@ -66,44 +62,58 @@ const EXAMPLE_DATA: &[(&str, &[Constraint])] = &[
&[Length(20), Length(20), Percentage(20)],
),
("", &[Length(20), Percentage(20), Length(20)]),
("A lowest priority constraint will be broken before a high priority constraint", &[Ratio(1,4), Percentage(20)]),
("`Length` is higher priority than `Percentage`", &[Percentage(20), Length(10)]),
("`Min/Max` is higher priority than `Length`", &[Length(10), Max(20)]),
(
"A lowest priority constraint will be broken before a high priority constraint",
&[Ratio(1, 4), Percentage(20)],
),
(
"`Length` is higher priority than `Percentage`",
&[Percentage(20), Length(10)],
),
(
"`Min/Max` is higher priority than `Length`",
&[Length(10), Max(20)],
),
("", &[Length(100), Min(20)]),
("`Length` is higher priority than `Min/Max`", &[Max(20), Length(10)]),
(
"`Length` is higher priority than `Min/Max`",
&[Max(20), Length(10)],
),
("", &[Min(20), Length(90)]),
("Fill is the lowest priority and will fill any excess space", &[Fill(1), Ratio(1, 4)]),
("Fill can be used to scale proportionally with other Fill blocks", &[Fill(1), Percentage(20), Fill(2)]),
(
"Fill is the lowest priority and will fill any excess space",
&[Fill(1), Ratio(1, 4)],
),
(
"Fill can be used to scale proportionally with other Fill blocks",
&[Fill(1), Percentage(20), Fill(2)],
),
("", &[Ratio(1, 3), Percentage(20), Ratio(2, 3)]),
("Legacy will stretch the last lowest priority constraint\nStretch will only stretch equal weighted constraints", &[Length(20), Length(15)]),
(
"Legacy will stretch the last lowest priority constraint\nStretch will only stretch equal weighted constraints",
&[Length(20), Length(15)],
),
("", &[Percentage(20), Length(15)]),
("`Fill(u16)` fills up excess space, but is lower priority to spacers.\ni.e. Fill will only have widths in Flex::Stretch and Flex::Legacy", &[Fill(1), Fill(1)]),
(
"`Fill(u16)` fills up excess space, but is lower priority to spacers.\ni.e. Fill will only have widths in Flex::Stretch and Flex::Legacy",
&[Fill(1), Fill(1)],
),
("", &[Length(20), Length(20)]),
(
"When not using `Flex::Stretch` or `Flex::Legacy`,\n`Min(u16)` and `Max(u16)` collapse to their lowest values",
&[Min(20), Max(20)],
),
(
"",
&[Max(20)],
),
("", &[Max(20)]),
("", &[Min(20), Max(20), Length(20), Length(20)]),
("", &[Fill(0), Fill(0)]),
(
"`Fill(1)` can be to scale with respect to other `Fill(2)`",
&[Fill(1), Fill(2)],
),
(
"",
&[Fill(1), Min(10), Max(10), Fill(2)],
),
("", &[Fill(1), Min(10), Max(10), Fill(2)]),
(
"`Fill(0)` collapses if there are other non-zero `Fill(_)`\nconstraints. e.g. `[Fill(0), Fill(0), Fill(1)]`:",
&[
Fill(0),
Fill(0),
Fill(1),
],
&[Fill(0), Fill(0), Fill(1)],
),
];
@@ -143,26 +153,22 @@ enum SelectedTab {
Center,
End,
SpaceAround,
SpaceEvenly,
SpaceBetween,
}
fn main() -> Result<()> {
// assuming the user changes spacing about a 100 times or so
Layout::init_cache(EXAMPLE_DATA.len() * SelectedTab::iter().len() * 100);
init_error_hooks()?;
let terminal = init_terminal()?;
App::default().run(terminal)?;
restore_terminal()?;
Ok(())
}
impl App {
fn run(&mut self, mut terminal: Terminal<impl Backend>) -> Result<()> {
self.draw(&mut terminal)?;
fn run(mut self, terminal: &mut DefaultTerminal) -> Result<()> {
// increase the layout cache to account for the number of layout events. This ensures that
// layout is not generally reprocessed on every frame (which would lead to possible janky
// results when there are more than one possible solution to the requested layout). This
// assumes the user changes spacing about a 100 times or so.
let cache_size = EXAMPLE_DATA.len() * SelectedTab::iter().len() * 100;
Layout::init_cache(NonZeroUsize::new(cache_size).unwrap());
while self.is_running() {
terminal.draw(|frame| frame.render_widget(self, frame.area()))?;
self.handle_events()?;
self.draw(&mut terminal)?;
}
Ok(())
}
@@ -171,27 +177,20 @@ impl App {
self.state == AppState::Running
}
fn draw(self, terminal: &mut Terminal<impl Backend>) -> io::Result<()> {
terminal.draw(|frame| frame.render_widget(self, frame.size()))?;
Ok(())
}
fn handle_events(&mut self) -> Result<()> {
use KeyCode::*;
match event::read()? {
Event::Key(key) if key.kind == KeyEventKind::Press => match key.code {
Char('q') | Esc => self.quit(),
Char('l') | Right => self.next(),
Char('h') | Left => self.previous(),
Char('j') | Down => self.down(),
Char('k') | Up => self.up(),
Char('g') | Home => self.top(),
Char('G') | End => self.bottom(),
Char('+') => self.increment_spacing(),
Char('-') => self.decrement_spacing(),
if let Some(key) = event::read()?.as_key_press_event() {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => self.quit(),
KeyCode::Char('l') | KeyCode::Right => self.next(),
KeyCode::Char('h') | KeyCode::Left => self.previous(),
KeyCode::Char('j') | KeyCode::Down => self.down(),
KeyCode::Char('k') | KeyCode::Up => self.up(),
KeyCode::Char('g') | KeyCode::Home => self.top(),
KeyCode::Char('G') | KeyCode::End => self.bottom(),
KeyCode::Char('+') => self.increment_spacing(),
KeyCode::Char('-') => self.decrement_spacing(),
_ => (),
},
_ => {}
}
}
Ok(())
}
@@ -204,7 +203,7 @@ impl App {
self.selected_tab = self.selected_tab.previous();
}
fn up(&mut self) {
const fn up(&mut self) {
self.scroll_offset = self.scroll_offset.saturating_sub(1);
}
@@ -215,7 +214,7 @@ impl App {
.min(max_scroll_offset());
}
fn top(&mut self) {
const fn top(&mut self) {
self.scroll_offset = 0;
}
@@ -223,15 +222,15 @@ impl App {
self.scroll_offset = max_scroll_offset();
}
fn increment_spacing(&mut self) {
const fn increment_spacing(&mut self) {
self.spacing = self.spacing.saturating_add(1);
}
fn decrement_spacing(&mut self) {
const fn decrement_spacing(&mut self) {
self.spacing = self.spacing.saturating_sub(1);
}
fn quit(&mut self) {
const fn quit(&mut self) {
self.state = AppState::Quit;
}
}
@@ -257,7 +256,7 @@ fn example_height() -> u16 {
impl Widget for App {
fn render(self, area: Rect, buf: &mut Buffer) {
let layout = Layout::vertical([Length(3), Length(1), Fill(0)]);
let [tabs, axis, demo] = layout.areas(area);
let [tabs, axis, demo] = area.layout(&layout);
self.tabs().render(tabs, buf);
let scroll_needed = self.render_demo(demo, buf);
let axis_width = if scroll_needed {
@@ -273,7 +272,7 @@ impl App {
fn tabs(self) -> impl Widget {
let tab_titles = SelectedTab::iter().map(SelectedTab::to_tab_title);
let block = Block::new()
.title(Title::from("Flex Layouts ".bold()))
.title("Flex Layouts ".bold())
.title(" Use ◄ ► to change tab, ▲ ▼ to scroll, - + to change spacing ");
Tabs::new(tab_titles)
.block(block)
@@ -303,7 +302,7 @@ impl App {
/// into the main buffer. This is done to make it possible to handle scrolling easily.
///
/// Returns bool indicating whether scroll was needed
#[allow(clippy::cast_possible_truncation)]
#[expect(clippy::cast_possible_truncation)]
fn render_demo(self, area: Rect, buf: &mut Buffer) -> bool {
// render demo content into a separate buffer so all examples fit we add an extra
// area.height to make sure the last example is fully visible even when the scroll offset is
@@ -334,7 +333,7 @@ impl App {
for (i, cell) in visible_content.enumerate() {
let x = i as u16 % area.width;
let y = i as u16 / area.width;
*buf.get_mut(area.x + x, area.y + y) = cell;
buf[(area.x + x, area.y + y)] = cell;
}
if scrollbar_needed {
@@ -364,15 +363,16 @@ impl SelectedTab {
/// Convert a `SelectedTab` into a `Line` to display it by the `Tabs` widget.
fn to_tab_title(value: Self) -> Line<'static> {
use tailwind::*;
use tailwind::{INDIGO, ORANGE, SKY};
let text = value.to_string();
let color = match value {
Self::Legacy => ORANGE.c400,
Self::Start => SKY.c400,
Self::Center => SKY.c300,
Self::End => SKY.c200,
Self::SpaceAround => INDIGO.c400,
Self::SpaceEvenly => INDIGO.c400,
Self::SpaceBetween => INDIGO.c300,
Self::SpaceAround => INDIGO.c500,
};
format!(" {text} ").fg(color).bg(Color::Black).into()
}
@@ -387,8 +387,9 @@ impl StatefulWidget for SelectedTab {
Self::Start => Self::render_examples(area, buf, Flex::Start, spacing),
Self::Center => Self::render_examples(area, buf, Flex::Center, spacing),
Self::End => Self::render_examples(area, buf, Flex::End, spacing),
Self::SpaceAround => Self::render_examples(area, buf, Flex::SpaceAround, spacing),
Self::SpaceEvenly => Self::render_examples(area, buf, Flex::SpaceEvenly, spacing),
Self::SpaceBetween => Self::render_examples(area, buf, Flex::SpaceBetween, spacing),
Self::SpaceAround => Self::render_examples(area, buf, Flex::SpaceAround, spacing),
}
}
}
@@ -420,7 +421,7 @@ impl Widget for Example {
fn render(self, area: Rect, buf: &mut Buffer) {
let title_height = get_description_height(&self.description);
let layout = Layout::vertical([Length(title_height), Fill(0)]);
let [title, illustrations] = layout.areas(area);
let [title, illustrations] = area.layout(&layout);
let (blocks, spacers) = Layout::horizontal(&self.constraints)
.flex(self.flex)
@@ -509,7 +510,7 @@ impl Example {
}
const fn color_for_constraint(constraint: Constraint) -> Color {
use tailwind::*;
use tailwind::{BLUE, SLATE};
match constraint {
Constraint::Min(_) => BLUE.c900,
Constraint::Max(_) => BLUE.c800,
@@ -520,36 +521,7 @@ const fn color_for_constraint(constraint: Constraint) -> Color {
}
}
fn init_error_hooks() -> Result<()> {
let (panic, error) = HookBuilder::default().into_hooks();
let panic = panic.into_panic_hook();
let error = error.into_eyre_hook();
color_eyre::eyre::set_hook(Box::new(move |e| {
let _ = restore_terminal();
error(e)
}))?;
std::panic::set_hook(Box::new(move |info| {
let _ = restore_terminal();
panic(info);
}));
Ok(())
}
fn init_terminal() -> Result<Terminal<impl Backend>> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let backend = CrosstermBackend::new(stdout());
let terminal = Terminal::new(backend)?;
Ok(terminal)
}
fn restore_terminal() -> Result<()> {
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
Ok(())
}
#[allow(clippy::cast_possible_truncation)]
#[expect(clippy::cast_possible_truncation)]
fn get_description_height(s: &str) -> u16 {
if s.is_empty() {
0

View File

@@ -0,0 +1,14 @@
[package]
name = "gauge"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Gauge demo
This example shows different types of gauges.
To run this demo:
```shell
cargo run -p gauge
```

View File

@@ -1,33 +1,21 @@
//! # [Ratatui] Gauge example
//!
//! The latest version of this example is available in the [examples] folder in the repository.
//!
//! Please note that the examples are designed to be run against the `main` branch of the Github
//! repository. This means that you may not be able to compile with the latest release version on
//! crates.io, or the one that you have installed locally.
//!
//! See the [examples readme] for more information on finding examples that match the version of the
//! library you are using.
//!
//! [Ratatui]: https://github.com/ratatui-org/ratatui
//! [examples]: https://github.com/ratatui-org/ratatui/blob/main/examples
//! [examples readme]: https://github.com/ratatui-org/ratatui/blob/main/examples/README.md
/// A Ratatui example that demonstrates different types of gauges.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::time::Duration;
#![allow(clippy::enum_glob_use)]
use std::{io::stdout, time::Duration};
use color_eyre::{config::HookBuilder, Result};
use crossterm::{
event::{self, Event, KeyCode, KeyEventKind},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
};
use ratatui::{
prelude::*,
style::palette::tailwind,
widgets::{block::Title, Block, Borders, Gauge, Padding, Paragraph},
};
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Layout, Rect};
use ratatui::style::palette::tailwind;
use ratatui::style::{Color, Style, Stylize};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Block, Borders, Gauge, Padding, Paragraph, Widget};
const GAUGE1_COLOR: Color = tailwind::RED.c800;
const GAUGE2_COLOR: Color = tailwind::GREEN.c800;
@@ -54,28 +42,20 @@ enum AppState {
}
fn main() -> Result<()> {
init_error_hooks()?;
let terminal = init_terminal()?;
App::default().run(terminal)?;
restore_terminal()?;
Ok(())
color_eyre::install()?;
ratatui::run(|terminal| App::default().run(terminal))
}
impl App {
fn run(&mut self, mut terminal: Terminal<impl Backend>) -> Result<()> {
fn run(mut self, terminal: &mut DefaultTerminal) -> Result<()> {
while self.state != AppState::Quitting {
self.draw(&mut terminal)?;
terminal.draw(|frame| frame.render_widget(&self, frame.area()))?;
self.handle_events()?;
self.update(terminal.size()?.width);
}
Ok(())
}
fn draw(&self, terminal: &mut Terminal<impl Backend>) -> Result<()> {
terminal.draw(|f| f.render_widget(self, f.size()))?;
Ok(())
}
fn update(&mut self, terminal_width: u16) {
if self.state != AppState::Started {
return;
@@ -96,39 +76,37 @@ impl App {
fn handle_events(&mut self) -> Result<()> {
let timeout = Duration::from_secs_f32(1.0 / 20.0);
if event::poll(timeout)? {
if let Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press {
use KeyCode::*;
match key.code {
Char(' ') | Enter => self.start(),
Char('q') | Esc => self.quit(),
_ => {}
}
}
if !event::poll(timeout)? {
return Ok(());
}
if let Some(key) = event::read()?.as_key_press_event() {
match key.code {
KeyCode::Char(' ') | KeyCode::Enter => self.start(),
KeyCode::Char('q') | KeyCode::Esc => self.quit(),
_ => {}
}
}
Ok(())
}
fn start(&mut self) {
const fn start(&mut self) {
self.state = AppState::Started;
}
fn quit(&mut self) {
const fn quit(&mut self) {
self.state = AppState::Quitting;
}
}
impl Widget for &App {
#[allow(clippy::similar_names)]
#[expect(clippy::similar_names)]
fn render(self, area: Rect, buf: &mut Buffer) {
use Constraint::*;
use Constraint::{Length, Min, Ratio};
let layout = Layout::vertical([Length(2), Min(0), Length(1)]);
let [header_area, gauge_area, footer_area] = layout.areas(area);
let [header_area, gauge_area, footer_area] = area.layout(&layout);
let layout = Layout::vertical([Ratio(1, 4); 4]);
let [gauge1_area, gauge2_area, gauge3_area, gauge4_area] = layout.areas(gauge_area);
let [gauge1_area, gauge2_area, gauge3_area, gauge4_area] = gauge_area.layout(&layout);
render_header(header_area, buf);
render_footer(footer_area, buf);
@@ -204,40 +182,11 @@ impl App {
}
}
fn title_block(title: &str) -> Block {
let title = Title::from(title).alignment(Alignment::Center);
fn title_block(title: &str) -> Block<'_> {
let title = Line::from(title).centered();
Block::new()
.borders(Borders::NONE)
.padding(Padding::vertical(1))
.title(title)
.fg(CUSTOM_LABEL_COLOR)
}
fn init_error_hooks() -> color_eyre::Result<()> {
let (panic, error) = HookBuilder::default().into_hooks();
let panic = panic.into_panic_hook();
let error = error.into_eyre_hook();
color_eyre::eyre::set_hook(Box::new(move |e| {
let _ = restore_terminal();
error(e)
}))?;
std::panic::set_hook(Box::new(move |info| {
let _ = restore_terminal();
panic(info);
}));
Ok(())
}
fn init_terminal() -> color_eyre::Result<Terminal<impl Backend>> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let backend = CrosstermBackend::new(stdout());
let terminal = Terminal::new(backend)?;
Ok(terminal)
}
fn restore_terminal() -> color_eyre::Result<()> {
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
Ok(())
}

View File

@@ -0,0 +1,14 @@
[package]
name = "hello-world"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
ratatui.workspace = true
[lints]
workspace = true

View File

@@ -0,0 +1,9 @@
# Hello World demo
This example shows how to create a simple TUI with a text.
To run this demo:
```shell
cargo run -p hello-world
```

View File

@@ -0,0 +1,62 @@
/// A Ratatui example that demonstrates a basic hello world application.
///
/// This example runs with the Ratatui library code in the branch that you are currently
/// reading. See the [`latest`] branch for the code which works with the most recent Ratatui
/// release.
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::time::Duration;
use color_eyre::Result;
use color_eyre::eyre::Context;
use crossterm::event::{self, KeyCode};
use ratatui::widgets::Paragraph;
use ratatui::{DefaultTerminal, Frame};
/// This is a bare minimum example. There are many approaches to running an application loop, so
/// this is not meant to be prescriptive. It is only meant to demonstrate the basic setup and
/// teardown of a terminal application.
///
/// This example does not handle events or update the application state. It just draws a greeting
/// and exits when the user presses 'q'.
fn main() -> Result<()> {
color_eyre::install()?; // augment errors / panics with easy to read messages
ratatui::run(run).context("failed to run app")
}
/// Run the application loop. This is where you would handle events and update the application
/// state. This example exits when the user presses 'q'. Other styles of application loops are
/// possible, for example, you could have multiple application states and switch between them based
/// on events, or you could have a single application state and update it based on events.
fn run(terminal: &mut DefaultTerminal) -> Result<()> {
loop {
terminal.draw(render)?;
if should_quit()? {
break;
}
}
Ok(())
}
/// Render the application. This is where you would draw the application UI. This example draws a
/// greeting.
fn render(frame: &mut Frame) {
let greeting = Paragraph::new("Hello World! (press 'q' to quit)");
frame.render_widget(greeting, frame.area());
}
/// Check if the user has pressed 'q'. This is where you would handle events. This example just
/// checks if the user has pressed 'q' and returns true if they have. It does not handle any other
/// events. There is a 250ms timeout on the event poll to ensure that the terminal is rendered at
/// least once every 250ms. This allows you to do other work in the application loop, such as
/// updating the application state, without blocking the event loop for too long.
fn should_quit() -> Result<bool> {
if event::poll(Duration::from_millis(250)).context("event poll failed")? {
let q_pressed = event::read()
.context("event read failed")?
.as_key_press_event()
.is_some_and(|key| key.code == KeyCode::Char('q'));
return Ok(q_pressed);
}
Ok(false)
}

View File

@@ -0,0 +1,15 @@
[package]
name = "hyperlink"
publish = false
license.workspace = true
edition.workspace = true
rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
crossterm.workspace = true
itertools.workspace = true
ratatui.workspace = true
[lints]
workspace = true

Some files were not shown because too many files have changed in this diff Show More