Skip to main content

max / makenotwork

wam: bump ratatui to 0.30 and crossterm to 0.29 Only source change is dropping the Stylize import, which 0.30 makes redundant; it was genuinely in use at 0.29, so this is the bump's doing rather than pre-existing dead code. 21 tests green, clippy clean. The tests cover the db and types layers, not the TUI, so the render path was checked by drawing both views headlessly against TestBackend at 100x24: the list table (columns, painhours, status marker) and the ticket detail pane both come out intact. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-22 19:12 UTC
Commit: 99cc2d1852038a442a2e95853ae053533f978171
Parent: 668651f
3 files changed, +298 insertions, -29 deletions
M wam/Cargo.lock +295 -26
@@ -18,6 +18,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
18 18 checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
19 19
20 20 [[package]]
21 + name = "aho-corasick"
22 + version = "1.1.4"
23 + source = "registry+https://github.com/rust-lang/crates.io-index"
24 + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
25 + dependencies = [
26 + "memchr",
27 + ]
28 +
29 + [[package]]
21 30 name = "allocator-api2"
22 31 version = "0.2.21"
23 32 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -89,6 +98,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
89 98 checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
90 99
91 100 [[package]]
101 + name = "approx"
102 + version = "0.5.1"
103 + source = "registry+https://github.com/rust-lang/crates.io-index"
104 + checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
105 + dependencies = [
106 + "num-traits",
107 + ]
108 +
109 + [[package]]
110 + name = "atomic"
111 + version = "0.6.1"
112 + source = "registry+https://github.com/rust-lang/crates.io-index"
113 + checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"
114 + dependencies = [
115 + "bytemuck",
116 + ]
117 +
118 + [[package]]
92 119 name = "atomic-waker"
93 120 version = "1.1.2"
94 121 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -197,10 +224,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
197 224 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
198 225
199 226 [[package]]
227 + name = "bit-set"
228 + version = "0.5.3"
229 + source = "registry+https://github.com/rust-lang/crates.io-index"
230 + checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
231 + dependencies = [
232 + "bit-vec",
233 + ]
234 +
235 + [[package]]
236 + name = "bit-vec"
237 + version = "0.6.3"
238 + source = "registry+https://github.com/rust-lang/crates.io-index"
239 + checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
240 +
241 + [[package]]
242 + name = "bitflags"
243 + version = "1.3.2"
244 + source = "registry+https://github.com/rust-lang/crates.io-index"
245 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
246 +
247 + [[package]]
200 248 name = "bitflags"
201 - version = "2.11.1"
249 + version = "2.13.1"
202 250 source = "registry+https://github.com/rust-lang/crates.io-index"
203 - checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
251 + checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
252 +
253 + [[package]]
254 + name = "block-buffer"
255 + version = "0.10.4"
256 + source = "registry+https://github.com/rust-lang/crates.io-index"
257 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
258 + dependencies = [
259 + "generic-array",
260 + ]
204 261
205 262 [[package]]
206 263 name = "bumpalo"
@@ -209,16 +266,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
209 266 checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
210 267
211 268 [[package]]
212 - name = "bytes"
213 - version = "1.11.1"
269 + name = "by_address"
270 + version = "1.2.1"
214 271 source = "registry+https://github.com/rust-lang/crates.io-index"
215 - checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
272 + checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06"
216 273
217 274 [[package]]
218 - name = "cassowary"
219 - version = "0.3.0"
275 + name = "bytemuck"
276 + version = "1.25.2"
277 + source = "registry+https://github.com/rust-lang/crates.io-index"
278 + checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
279 +
280 + [[package]]
281 + name = "bytes"
282 + version = "1.11.1"
220 283 source = "registry+https://github.com/rust-lang/crates.io-index"
221 - checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
284 + checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
222 285
223 286 [[package]]
224 287 name = "castaway"
@@ -298,7 +361,7 @@ dependencies = [
298 361 "heck",
299 362 "proc-macro2",
300 363 "quote",
301 - "syn",
364 + "syn 2.0.117",
302 365 ]
303 366
304 367 [[package]]
@@ -361,9 +424,9 @@ dependencies = [
361 424
362 425 [[package]]
363 426 name = "compact_str"
364 - version = "0.8.1"
427 + version = "0.9.1"
365 428 source = "registry+https://github.com/rust-lang/crates.io-index"
366 - checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32"
429 + checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab"
367 430 dependencies = [
368 431 "castaway",
369 432 "cfg-if",
@@ -374,6 +437,15 @@ dependencies = [
374 437 ]
375 438
376 439 [[package]]
440 + name = "convert_case"
441 + version = "0.10.0"
442 + source = "registry+https://github.com/rust-lang/crates.io-index"
443 + checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
444 + dependencies = [
445 + "unicode-segmentation",
446 + ]
447 +
448 + [[package]]
377 449 name = "core-foundation"
378 450 version = "0.10.1"
379 451 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -390,13 +462,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
390 462 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
391 463
392 464 [[package]]
465 + name = "cpufeatures"
466 + version = "0.2.17"
467 + source = "registry+https://github.com/rust-lang/crates.io-index"
468 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
469 + dependencies = [
470 + "libc",
471 + ]
472 +
473 + [[package]]
474 + name = "critical-section"
475 + version = "1.2.0"
476 + source = "registry+https://github.com/rust-lang/crates.io-index"
477 + checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
478 +
479 + [[package]]
393 480 name = "crossterm"
394 - version = "0.28.1"
481 + version = "0.29.0"
395 482 source = "registry+https://github.com/rust-lang/crates.io-index"
396 - checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
483 + checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
397 484 dependencies = [
398 - "bitflags",
485 + "bitflags 2.13.1",
399 486 "crossterm_winapi",
487 + "derive_more",
488 + "document-features",
400 489 "mio",
401 490 "parking_lot",
402 491 "rustix",
@@ -415,6 +504,26 @@ dependencies = [
415 504 ]
416 505
417 506 [[package]]
507 + name = "crypto-common"
508 + version = "0.1.7"
509 + source = "registry+https://github.com/rust-lang/crates.io-index"
510 + checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
511 + dependencies = [
512 + "generic-array",
513 + "typenum",
514 + ]
515 +
516 + [[package]]
517 + name = "csscolorparser"
518 + version = "0.6.2"
519 + source = "registry+https://github.com/rust-lang/crates.io-index"
520 + checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf"
521 + dependencies = [
522 + "lab",
523 + "phf",
524 + ]
525 +
526 + [[package]]
418 527 name = "darling"
419 528 version = "0.23.0"
420 529 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -434,7 +543,7 @@ dependencies = [
434 543 "proc-macro2",
435 544 "quote",
436 545 "strsim",
437 - "syn",
546 + "syn 2.0.117",
438 547 ]
439 548
440 549 [[package]]
@@ -445,7 +554,51 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
445 554 dependencies = [
446 555 "darling_core",
447 556 "quote",
448 - "syn",
557 + "syn 2.0.117",
558 + ]
559 +
560 + [[package]]
561 + name = "deltae"
562 + version = "0.3.2"
563 + source = "registry+https://github.com/rust-lang/crates.io-index"
564 + checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4"
565 +
566 + [[package]]
567 + name = "deranged"
568 + version = "0.5.8"
569 + source = "registry+https://github.com/rust-lang/crates.io-index"
570 + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
571 +
572 + [[package]]
573 + name = "derive_more"
574 + version = "2.1.1"
575 + source = "registry+https://github.com/rust-lang/crates.io-index"
576 + checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
577 + dependencies = [
578 + "derive_more-impl",
579 + ]
580 +
581 + [[package]]
582 + name = "derive_more-impl"
583 + version = "2.1.1"
584 + source = "registry+https://github.com/rust-lang/crates.io-index"
585 + checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
586 + dependencies = [
587 + "convert_case",
588 + "proc-macro2",
589 + "quote",
590 + "rustc_version",
591 + "syn 2.0.117",
592 + ]
593 +
594 + [[package]]
595 + name = "digest"
596 + version = "0.10.7"
597 + source = "registry+https://github.com/rust-lang/crates.io-index"
598 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
599 + dependencies = [
600 + "block-buffer",
601 + "crypto-common",
449 602 ]
450 603
451 604 [[package]]
@@ -477,7 +630,16 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
477 630 dependencies = [
478 631 "proc-macro2",
479 632 "quote",
480 - "syn",
633 + "syn 2.0.117",
634 + ]
635 +
636 + [[package]]
637 + name = "document-features"
638 + version = "0.2.12"
639 + source = "registry+https://github.com/rust-lang/crates.io-index"
640 + checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
641 + dependencies = [
642 + "litrs",
481 643 ]
482 644
483 645 [[package]]
@@ -509,6 +671,15 @@ dependencies = [
509 671 ]
510 672
511 673 [[package]]
674 + name = "euclid"
675 + version = "0.22.14"
676 + source = "registry+https://github.com/rust-lang/crates.io-index"
677 + checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
678 + dependencies = [
679 + "num-traits",
680 + ]
681 +
682 + [[package]]
512 683 name = "eyre"
513 684 version = "0.6.12"
514 685 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -531,12 +702,57 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
531 702 checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
532 703
533 704 [[package]]
705 + name = "fancy-regex"
706 + version = "0.11.0"
707 + source = "registry+https://github.com/rust-lang/crates.io-index"
708 + checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
709 + dependencies = [
710 + "bit-set",
711 + "regex",
712 + ]
713 +
714 + [[package]]
715 + name = "fast-srgb8"
716 + version = "1.0.0"
717 + source = "registry+https://github.com/rust-lang/crates.io-index"
718 + checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
719 +
720 + [[package]]
721 + name = "filedescriptor"
722 + version = "0.8.3"
723 + source = "registry+https://github.com/rust-lang/crates.io-index"
724 + checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"
725 + dependencies = [
726 + "libc",
727 + "thiserror 1.0.69",
728 + "winapi",
729 + ]
730 +
731 + [[package]]
534 732 name = "find-msvc-tools"
535 733 version = "0.1.9"
536 734 source = "registry+https://github.com/rust-lang/crates.io-index"
537 735 checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
538 736
539 737 [[package]]
738 + name = "finl_unicode"
739 + version = "1.4.0"
740 + source = "registry+https://github.com/rust-lang/crates.io-index"
741 + checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5"
742 +
743 + [[package]]
744 + name = "fixedbitset"
745 + version = "0.4.2"
746 + source = "registry+https://github.com/rust-lang/crates.io-index"
747 + checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
748 +
749 + [[package]]
750 + name = "fnv"
751 + version = "1.0.7"
752 + source = "registry+https://github.com/rust-lang/crates.io-index"
753 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
754 +
755 + [[package]]
540 756 name = "foldhash"
541 757 version = "0.1.5"
542 758 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -597,6 +813,16 @@ dependencies = [
597 813 ]
598 814
599 815 [[package]]
816 + name = "generic-array"
817 + version = "0.14.7"
818 + source = "registry+https://github.com/rust-lang/crates.io-index"
819 + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
820 + dependencies = [
821 + "typenum",
822 + "version_check",
823 + ]
824 +
825 + [[package]]
600 826 name = "getrandom"
601 827 version = "0.2.17"
602 828 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -648,8 +874,6 @@ version = "0.15.5"
648 874 source = "registry+https://github.com/rust-lang/crates.io-index"
649 875 checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
650 876 dependencies = [
651 - "allocator-api2",
652 - "equivalent",
653 877 "foldhash 0.1.5",
654 878 ]
655 879
@@ -659,6 +883,8 @@ version = "0.16.1"
659 883 source = "registry+https://github.com/rust-lang/crates.io-index"
660 884 checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
661 885 dependencies = [
886 + "allocator-api2",
887 + "equivalent",
662 888 "foldhash 0.2.0",
663 889 ]
664 890
@@ -667,6 +893,11 @@ name = "hashbrown"
667 893 version = "0.17.0"
668 894 source = "registry+https://github.com/rust-lang/crates.io-index"
669 895 checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51"
896 + dependencies = [
897 + "allocator-api2",
898 + "equivalent",
899 + "foldhash 0.2.0",
900 + ]
670 901
671 902 [[package]]
672 903 name = "hashlink"
@@ -684,6 +915,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
684 915 checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
685 916
686 917 [[package]]
918 + name = "hex"
919 + version = "0.4.3"
920 + source = "registry+https://github.com/rust-lang/crates.io-index"
921 + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
922 +
923 + [[package]]
687 924 name = "http"
688 925 version = "1.4.0"
689 926 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -963,7 +1200,7 @@ dependencies = [
963 1200 "indoc",
964 1201 "proc-macro2",
965 1202 "quote",
966 - "syn",
1203 + "syn 2.0.117",
967 1204 ]
968 1205
969 1206 [[package]]
@@ -990,9 +1227,9 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
990 1227
991 1228 [[package]]
992 1229 name = "itertools"
993 - version = "0.13.0"
1230 + version = "0.14.0"
994 1231 source = "registry+https://github.com/rust-lang/crates.io-index"
995 - checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
1232 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
996 1233 dependencies = [
997 1234 "either",
998 1235 ]
@@ -1015,7 +1252,7 @@ dependencies = [
1015 1252 "jni-sys",
1016 1253 "log",
1017 1254 "simd_cesu8",
1018 - "thiserror",
1255 + "thiserror 2.0.18",
1019 1256 "walkdir",
1020 1257 "windows-link",
1021 1258 ]
@@ -1030,7 +1267,7 @@ dependencies = [
1030 1267 "quote",
1031 1268 "rustc_version",
1032 1269 "simd_cesu8",
1033 - "syn",
1270 + "syn 2.0.117",
1034 1271 ]
1035 1272
1036 1273 [[package]]
@@ -1049,7 +1286,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1049 1286 checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
1050 1287 dependencies = [
1051 1288 "quote",
1052 - "syn",
1289 + "syn 2.0.117",
1053 1290 ]
1054 1291
1055 1292 [[package]]
@@ -1075,6 +1312,23 @@ dependencies = [
1075 1312 ]
1076 1313
1077 1314 [[package]]
1315 + name = "kasuari"
1316 + version = "0.4.12"
1317 + source = "registry+https://github.com/rust-lang/crates.io-index"
1318 + checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"
1319 + dependencies = [
1320 + "hashbrown 0.16.1",
1321 + "portable-atomic",
1322 + "thiserror 2.0.18",
1323 + ]
1324 +
1325 + [[package]]
1326 + name = "lab"
1327 + version = "0.11.0"
1328 + source = "registry+https://github.com/rust-lang/crates.io-index"
1329 + checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f"
1330 +
1331 + [[package]]
1078 1332 name = "lazy_static"
1079 1333 version = "1.5.0"
1080 1334 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1093,6 +1347,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1093 1347 checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
1094 1348
1095 1349 [[package]]
1350 + name = "libm"
1351 + version = "0.2.16"
1352 + source = "registry+https://github.com/rust-lang/crates.io-index"
1353 + checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
1354 +
1355 + [[package]]
1096 1356 name = "libredox"
1097 1357 version = "0.1.16"
1098 1358 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1113,10 +1373,19 @@ dependencies = [
1113 1373 ]
1114 1374
1115 1375 [[package]]
1376 + name = "line-clipping"
1377 + version = "0.3.7"
1378 + source = "registry+https://github.com/rust-lang/crates.io-index"
1379 + checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8"
1380 + dependencies = [
1381 + "bitflags 2.13.1",
1382 + ]
1383 +
1384 + [[package]]
1116 1385 name = "linux-raw-sys"
1117 - version = "0.4.15"
1386 + version = "0.12.1"
1118 1387 source = "registry+https://github.com/rust-lang/crates.io-index"
Lines truncated
M wam/Cargo.toml +2 -2
@@ -13,9 +13,9 @@ axum = "0.8"
13 13 chrono = { version = "0.4", features = ["serde"] }
14 14 clap = { version = "4", features = ["derive"] }
15 15 color-eyre = "0.6"
16 - crossterm = "0.28"
16 + crossterm = "0.29"
17 17 directories = "6"
18 - ratatui = "0.29"
18 + ratatui = "0.30"
19 19 rusqlite = { version = "0.39", features = ["bundled"] }
20 20 serde = { version = "1", features = ["derive"] }
21 21 serde_json = "1"
M wam/src/tui.rs +1 -1
@@ -5,7 +5,7 @@ use crossterm::event::{self, Event, KeyCode, KeyEventKind};
5 5 use ratatui::{
6 6 Frame,
7 7 layout::{Constraint, Layout, Rect},
8 - style::{Modifier, Style, Stylize},
8 + style::{Modifier, Style},
9 9 text::{Line, Span},
10 10 widgets::{Block, Borders, Cell, Clear, Paragraph, Row, Table, TableState},
11 11 };