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
Signed with PGP, not checked
Commit: 99cc2d1852038a442a2e95853ae053533f978171
Parent: 668651f
3 files changed, +295 insertions, -33 deletions
M wam/Cargo.lock +292 -30
@@ -17,6 +17,15 @@
17 17 source = "registry+https://github.com/rust-lang/crates.io-index"
18 18 checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
19 19
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 +
20 29 [[package]]
21 30 name = "allocator-api2"
22 31 version = "0.2.21"
@@ -88,6 +97,24 @@
88 97 source = "registry+https://github.com/rust-lang/crates.io-index"
89 98 checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
90 99
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 +
91 118 [[package]]
92 119 name = "atomic-waker"
93 120 version = "1.1.2"
@@ -197,10 +224,40 @@
197 224 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
198 225
199 226 [[package]]
200 - name = "bitflags"
201 - version = "2.11.1"
227 + name = "bit-set"
228 + version = "0.5.3"
202 229 source = "registry+https://github.com/rust-lang/crates.io-index"
203 - checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
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]]
248 + name = "bitflags"
249 + version = "2.13.1"
250 + source = "registry+https://github.com/rust-lang/crates.io-index"
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"
@@ -208,18 +265,24 @@
208 265 source = "registry+https://github.com/rust-lang/crates.io-index"
209 266 checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
210 267
268 + [[package]]
269 + name = "by_address"
270 + version = "1.2.1"
271 + source = "registry+https://github.com/rust-lang/crates.io-index"
272 + checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06"
273 +
274 + [[package]]
275 + name = "bytemuck"
276 + version = "1.25.2"
277 + source = "registry+https://github.com/rust-lang/crates.io-index"
278 + checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
279 +
211 280 [[package]]
212 281 name = "bytes"
213 282 version = "1.11.1"
214 283 source = "registry+https://github.com/rust-lang/crates.io-index"
215 284 checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
216 285
217 - [[package]]
218 - name = "cassowary"
219 - version = "0.3.0"
220 - source = "registry+https://github.com/rust-lang/crates.io-index"
221 - checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
222 -
223 286 [[package]]
224 287 name = "castaway"
225 288 version = "0.2.4"
@@ -298,7 +361,7 @@
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 @@
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",
@@ -373,6 +436,15 @@
373 436 "static_assertions",
374 437 ]
375 438
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 +
376 448 [[package]]
377 449 name = "core-foundation"
378 450 version = "0.10.1"
@@ -390,13 +462,30 @@
390 462 checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
391 463
392 464 [[package]]
393 - name = "crossterm"
394 - version = "0.28.1"
465 + name = "cpufeatures"
466 + version = "0.2.17"
395 467 source = "registry+https://github.com/rust-lang/crates.io-index"
396 - checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
468 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
397 469 dependencies = [
398 - "bitflags",
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]]
480 + name = "crossterm"
481 + version = "0.29.0"
482 + source = "registry+https://github.com/rust-lang/crates.io-index"
483 + checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
484 + dependencies = [
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",
@@ -414,6 +503,26 @@
414 503 "winapi",
415 504 ]
416 505
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 +
417 526 [[package]]
418 527 name = "darling"
419 528 version = "0.23.0"
@@ -434,7 +543,7 @@
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 @@
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 @@
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]]
@@ -508,6 +670,15 @@
508 670 "windows-sys 0.61.2",
509 671 ]
510 672
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 +
511 682 [[package]]
512 683 name = "eyre"
513 684 version = "0.6.12"
@@ -530,12 +701,57 @@
530 701 source = "registry+https://github.com/rust-lang/crates.io-index"
531 702 checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
532 703
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 +
533 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
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 +
539 755 [[package]]
540 756 name = "foldhash"
541 757 version = "0.1.5"
@@ -596,6 +812,16 @@
596 812 "slab",
597 813 ]
598 814
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 +
599 825 [[package]]
600 826 name = "getrandom"
601 827 version = "0.2.17"
@@ -648,8 +874,6 @@
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 @@
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 @@
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"
@@ -683,6 +914,12 @@
683 914 source = "registry+https://github.com/rust-lang/crates.io-index"
684 915 checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
685 916
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 +
686 923 [[package]]
687 924 name = "http"
688 925 version = "1.4.0"
@@ -963,7 +1200,7 @@
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 @@
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 @@
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 @@
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 @@
1049 1286 checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
1050 1287 dependencies = [
1051 1288 "quote",
1052 - "syn",
1289 + "syn 2.0.117",
1053 1290 ]
1054 1291
1055 1292 [[package]]
@@ -1074,6 +1311,23 @@
1074 1311 "wasm-bindgen",
1075 1312 ]
1076 1313
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 +
1077 1331 [[package]]
1078 1332 name = "lazy_static"
1079 1333 version = "1.5.0"
@@ -1092,6 +1346,12 @@
1092 1346 source = "registry+https://github.com/rust-lang/crates.io-index"
1093 1347 checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
1094 1348
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 +
1095 1355 [[package]]
1096 1356 name = "libredox"
1097 1357 version = "0.1.16"
@@ -1113,10 +1373,19 @@
1113 1373 ]
1114 1374
1115 1375 [[package]]
1116 - name = "linux-raw-sys"
1117 - version = "0.4.15"
1376 + name = "line-clipping"
1377 + version = "0.3.7"
1118 1378 source = "registry+https://github.com/rust-lang/crates.io-index"
1119 - checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
1379 + checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8"
1380 + dependencies = [
1381 + "bitflags 2.13.1",
Lines truncated
M wam/Cargo.toml +2 -2
@@ -13,9 +13,9 @@
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 @@
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 };