From fdede4e5ba82479a29bcef182ab63edfdfbbd9af Mon Sep 17 00:00:00 2001 From: Yujong Lee Date: Mon, 23 Feb 2026 10:30:26 +0900 Subject: [PATCH 1/2] simplify transcript crate --- Cargo.lock | 452 +---------- crates/transcript/Cargo.toml | 22 - crates/transcript/examples/cli/app.rs | 282 ------- crates/transcript/examples/cli/feed.rs | 63 -- crates/transcript/examples/cli/fixture.rs | 23 - crates/transcript/examples/cli/logger.rs | 41 - crates/transcript/examples/cli/main.rs | 231 ------ .../examples/cli/provider/cactus.rs | 258 ------ .../transcript/examples/cli/provider/cloud.rs | 156 ---- .../transcript/examples/cli/provider/mod.rs | 5 - .../transcript/examples/cli/renderer/debug.rs | 385 --------- .../transcript/examples/cli/renderer/mod.rs | 109 --- .../examples/cli/renderer/transcript.rs | 228 ------ crates/transcript/examples/cli/source.rs | 66 -- crates/transcript/examples/cli/theme.rs | 60 -- crates/transcript/examples/cli/viewport.rs | 63 -- crates/transcript/src/accumulator.rs | 91 +++ crates/transcript/src/accumulator/channel.rs | 116 --- crates/transcript/src/accumulator/mod.rs | 735 ------------------ crates/transcript/src/accumulator/words.rs | 598 -------------- crates/transcript/src/id.rs | 41 - crates/transcript/src/input.rs | 67 -- crates/transcript/src/lib.rs | 20 +- crates/transcript/src/postprocess/mod.rs | 48 -- crates/transcript/src/processor.rs | 272 +++++++ crates/transcript/src/types.rs | 112 ++- crates/transcript/src/view.rs | 588 -------------- crates/transcript/src/words.rs | 246 ++++++ plugins/listener/Cargo.toml | 2 + plugins/listener2/Cargo.toml | 1 + 30 files changed, 673 insertions(+), 4708 deletions(-) delete mode 100644 crates/transcript/examples/cli/app.rs delete mode 100644 crates/transcript/examples/cli/feed.rs delete mode 100644 crates/transcript/examples/cli/fixture.rs delete mode 100644 crates/transcript/examples/cli/logger.rs delete mode 100644 crates/transcript/examples/cli/main.rs delete mode 100644 crates/transcript/examples/cli/provider/cactus.rs delete mode 100644 crates/transcript/examples/cli/provider/cloud.rs delete mode 100644 crates/transcript/examples/cli/provider/mod.rs delete mode 100644 crates/transcript/examples/cli/renderer/debug.rs delete mode 100644 crates/transcript/examples/cli/renderer/mod.rs delete mode 100644 crates/transcript/examples/cli/renderer/transcript.rs delete mode 100644 crates/transcript/examples/cli/source.rs delete mode 100644 crates/transcript/examples/cli/theme.rs delete mode 100644 crates/transcript/examples/cli/viewport.rs create mode 100644 crates/transcript/src/accumulator.rs delete mode 100644 crates/transcript/src/accumulator/channel.rs delete mode 100644 crates/transcript/src/accumulator/mod.rs delete mode 100644 crates/transcript/src/accumulator/words.rs delete mode 100644 crates/transcript/src/id.rs delete mode 100644 crates/transcript/src/input.rs delete mode 100644 crates/transcript/src/postprocess/mod.rs create mode 100644 crates/transcript/src/processor.rs delete mode 100644 crates/transcript/src/view.rs create mode 100644 crates/transcript/src/words.rs diff --git a/Cargo.lock b/Cargo.lock index 1a8cca442a..c28729acfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1256,15 +1256,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "atomic" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" -dependencies = [ - "bytemuck", -] - [[package]] name = "atomic-waker" version = "1.1.2" @@ -1588,7 +1579,7 @@ dependencies = [ "http 0.2.12", "http 1.4.0", "http-body 0.4.6", - "lru 0.12.5", + "lru", "percent-encoding", "regex-lite", "sha2", @@ -2907,15 +2898,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" -[[package]] -name = "castaway" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" -dependencies = [ - "rustversion", -] - [[package]] name = "cbc" version = "0.1.2" @@ -3348,20 +3330,6 @@ dependencies = [ "unicode-width 0.2.2", ] -[[package]] -name = "compact_str" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a" -dependencies = [ - "castaway", - "cfg-if", - "itoa", - "rustversion", - "ryu", - "static_assertions", -] - [[package]] name = "compression-codecs" version = "0.4.37" @@ -3857,13 +3825,9 @@ checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ "bitflags 2.11.0", "crossterm_winapi", - "derive_more 2.1.1", "document-features", - "mio", "parking_lot", "rustix 1.1.3", - "signal-hook", - "signal-hook-mio", "winapi", ] @@ -3916,16 +3880,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "csscolorparser" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf" -dependencies = [ - "lab", - "phf 0.11.3", -] - [[package]] name = "cssparser" version = "0.29.6" @@ -4393,12 +4347,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26bf8fc351c5ed29b5c2f0cbbac1b209b74f60ecd62e675a998df72c49af5204" -[[package]] -name = "deltae" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4" - [[package]] name = "deno_core" version = "0.338.0" @@ -5512,16 +5460,6 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" -[[package]] -name = "fancy-regex" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" -dependencies = [ - "bit-set 0.5.3", - "regex", -] - [[package]] name = "fancy-regex" version = "0.16.2" @@ -5685,17 +5623,6 @@ dependencies = [ "flate2", ] -[[package]] -name = "filedescriptor" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d" -dependencies = [ - "libc", - "thiserror 1.0.69", - "winapi", -] - [[package]] name = "filetime" version = "0.2.27" @@ -5725,18 +5652,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "finl_unicode" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5" - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "fixedbitset" version = "0.5.7" @@ -9427,19 +9342,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "instability" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d" -dependencies = [ - "darling 0.23.0", - "indoc", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "instant" version = "0.1.13" @@ -9820,17 +9722,6 @@ dependencies = [ "mutate_once", ] -[[package]] -name = "kasuari" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe90c1150662e858c7d5f945089b7517b0a80d8bf7ba4b1b5ffc984e7230a5b" -dependencies = [ - "hashbrown 0.16.1", - "portable-atomic", - "thiserror 2.0.18", -] - [[package]] name = "keyboard-types" version = "0.7.0" @@ -9987,12 +9878,6 @@ dependencies = [ "smallvec 1.15.1", ] -[[package]] -name = "lab" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f" - [[package]] name = "lago" version = "0.1.0" @@ -10359,15 +10244,6 @@ dependencies = [ "wayland-protocols-wlr", ] -[[package]] -name = "line-clipping" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4de44e98ddbf09375cbf4d17714d18f39195f4f4894e8524501726fd9a8a4a" -dependencies = [ - "bitflags 2.11.0", -] - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -10528,15 +10404,6 @@ dependencies = [ "hashbrown 0.15.5", ] -[[package]] -name = "lru" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" -dependencies = [ - "hashbrown 0.16.1", -] - [[package]] name = "lru-slab" version = "0.1.2" @@ -10585,16 +10452,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "mac_address" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303" -dependencies = [ - "nix 0.29.0", - "winapi", -] - [[package]] name = "mac_address2" version = "2.0.2" @@ -10826,12 +10683,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memmem" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15" - [[package]] name = "memo-map" version = "0.3.3" @@ -11199,19 +11050,6 @@ dependencies = [ "memoffset", ] -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.11.0", - "cfg-if", - "cfg_aliases 0.2.1", - "libc", - "memoffset", -] - [[package]] name = "nix" version = "0.30.1" @@ -12216,15 +12054,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - [[package]] name = "ordered-float" version = "5.1.0" @@ -12709,7 +12538,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ - "fixedbitset 0.5.7", + "fixedbitset", "indexmap 2.13.0", ] @@ -12719,7 +12548,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ - "fixedbitset 0.5.7", + "fixedbitset", "hashbrown 0.15.5", "indexmap 2.13.0", ] @@ -14008,91 +13837,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "ratatui" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1ce67fb8ba4446454d1c8dbaeda0557ff5e94d39d5e5ed7f10a65eb4c8266bc" -dependencies = [ - "instability", - "ratatui-core", - "ratatui-crossterm", - "ratatui-macros", - "ratatui-termwiz", - "ratatui-widgets", -] - -[[package]] -name = "ratatui-core" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293" -dependencies = [ - "bitflags 2.11.0", - "compact_str", - "hashbrown 0.16.1", - "indoc", - "itertools 0.14.0", - "kasuari", - "lru 0.16.3", - "strum 0.27.2", - "thiserror 2.0.18", - "unicode-segmentation", - "unicode-truncate", - "unicode-width 0.2.2", -] - -[[package]] -name = "ratatui-crossterm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "577c9b9f652b4c121fb25c6a391dd06406d3b092ba68827e6d2f09550edc54b3" -dependencies = [ - "cfg-if", - "crossterm", - "instability", - "ratatui-core", -] - -[[package]] -name = "ratatui-macros" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f1342a13e83e4bb9d0b793d0ea762be633f9582048c892ae9041ef39c936f4" -dependencies = [ - "ratatui-core", - "ratatui-widgets", -] - -[[package]] -name = "ratatui-termwiz" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f76fe0bd0ed4295f0321b1676732e2454024c15a35d01904ddb315afd3d545c" -dependencies = [ - "ratatui-core", - "termwiz", -] - -[[package]] -name = "ratatui-widgets" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7dbfa023cd4e604c2553483820c5fe8aa9d71a42eea5aa77c6e7f35756612db" -dependencies = [ - "bitflags 2.11.0", - "hashbrown 0.16.1", - "indoc", - "instability", - "itertools 0.14.0", - "line-clipping", - "ratatui-core", - "strum 0.27.2", - "time", - "unicode-segmentation", - "unicode-width 0.2.2", -] - [[package]] name = "rav1e" version = "0.8.1" @@ -16028,17 +15772,6 @@ dependencies = [ "signal-hook-registry", ] -[[package]] -name = "signal-hook-mio" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" -dependencies = [ - "libc", - "mio", - "signal-hook", -] - [[package]] name = "signal-hook-registry" version = "1.4.8" @@ -17459,7 +17192,7 @@ dependencies = [ "itertools 0.14.0", "levenshtein_automata", "log", - "lru 0.12.5", + "lru", "lz4_flex", "measure_time", "memmap2", @@ -18338,7 +18071,7 @@ dependencies = [ "intercept", "language", "mac 0.1.0", - "ordered-float 5.1.0", + "ordered-float", "owhisper-client", "owhisper-interface", "quickcheck", @@ -18365,6 +18098,7 @@ dependencies = [ "tokio-stream", "tokio-util", "tracing", + "transcript", "url", "uuid", "vad-ext", @@ -18395,6 +18129,7 @@ dependencies = [ "tokio", "tokio-stream", "tracing", + "transcript", ] [[package]] @@ -19340,75 +19075,12 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "terminfo" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662" -dependencies = [ - "fnv", - "nom 7.1.3", - "phf 0.11.3", - "phf_codegen 0.11.3", -] - -[[package]] -name = "termios" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b" -dependencies = [ - "libc", -] - [[package]] name = "termtree" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" -[[package]] -name = "termwiz" -version = "0.23.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7" -dependencies = [ - "anyhow", - "base64 0.22.1", - "bitflags 2.11.0", - "fancy-regex 0.11.0", - "filedescriptor", - "finl_unicode", - "fixedbitset 0.4.2", - "hex", - "lazy_static", - "libc", - "log", - "memmem", - "nix 0.29.0", - "num-derive", - "num-traits", - "ordered-float 4.6.0", - "pest", - "pest_derive", - "phf 0.11.3", - "sha2", - "signal-hook", - "siphasher 1.0.2", - "terminfo", - "termios", - "thiserror 1.0.69", - "ucd-trie", - "unicode-segmentation", - "vtparse", - "wezterm-bidi", - "wezterm-blob-leases", - "wezterm-color-types", - "wezterm-dynamic", - "wezterm-input-types", - "winapi", -] - [[package]] name = "testcontainers" version = "0.24.0" @@ -20351,26 +20023,9 @@ dependencies = [ name = "transcript" version = "0.1.0" dependencies = [ - "audio", - "audio-utils", - "axum 0.8.8", - "bytes", - "clap", - "crossterm", - "data", - "futures-util", - "libc", - "owhisper-client", "owhisper-interface", - "ratatui", "serde", - "serde_json", "specta", - "strum 0.27.2", - "tokio", - "tokio-stream", - "tower 0.5.3", - "transcribe-cactus", "uuid", ] @@ -21120,17 +20775,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" -[[package]] -name = "unicode-truncate" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5" -dependencies = [ - "itertools 0.14.0", - "unicode-segmentation", - "unicode-width 0.2.2", -] - [[package]] name = "unicode-vo" version = "0.1.0" @@ -21327,7 +20971,6 @@ version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" dependencies = [ - "atomic", "getrandom 0.4.1", "js-sys", "serde_core", @@ -21532,15 +21175,6 @@ dependencies = [ "libc", ] -[[package]] -name = "vtparse" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0" -dependencies = [ - "utf8parse", -] - [[package]] name = "walkdir" version = "2.5.0" @@ -22043,78 +21677,6 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" -[[package]] -name = "wezterm-bidi" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec" -dependencies = [ - "log", - "wezterm-dynamic", -] - -[[package]] -name = "wezterm-blob-leases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7" -dependencies = [ - "getrandom 0.3.4", - "mac_address", - "sha2", - "thiserror 1.0.69", - "uuid", -] - -[[package]] -name = "wezterm-color-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296" -dependencies = [ - "csscolorparser", - "deltae", - "lazy_static", - "wezterm-dynamic", -] - -[[package]] -name = "wezterm-dynamic" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac" -dependencies = [ - "log", - "ordered-float 4.6.0", - "strsim", - "thiserror 1.0.69", - "wezterm-dynamic-derive", -] - -[[package]] -name = "wezterm-dynamic-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "wezterm-input-types" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e" -dependencies = [ - "bitflags 1.3.2", - "euclid", - "lazy_static", - "serde", - "wezterm-dynamic", -] - [[package]] name = "which" version = "4.4.2" diff --git a/crates/transcript/Cargo.toml b/crates/transcript/Cargo.toml index 0e530cb862..d4462370cc 100644 --- a/crates/transcript/Cargo.toml +++ b/crates/transcript/Cargo.toml @@ -3,28 +3,6 @@ name = "transcript" version = "0.1.0" edition = "2024" -[dev-dependencies] -hypr-data = { workspace = true } -libc = "0.2" - -serde_json = { workspace = true } -strum = { workspace = true, features = ["derive"] } - -clap = { workspace = true, features = ["derive", "env"] } -crossterm = "0.29" -ratatui = { version = "0.30", features = ["crossterm_0_29"] } - -axum = { workspace = true } -bytes = { workspace = true } -futures-util = { workspace = true } -hypr-audio = { workspace = true } -hypr-audio-utils = { workspace = true } -hypr-transcribe-cactus = { workspace = true } -owhisper-client = { workspace = true } -tokio = { workspace = true, features = ["rt", "macros", "sync", "net"] } -tokio-stream = { workspace = true } -tower = { workspace = true } - [dependencies] owhisper-interface = { workspace = true } diff --git a/crates/transcript/examples/cli/app.rs b/crates/transcript/examples/cli/app.rs deleted file mode 100644 index c91081868b..0000000000 --- a/crates/transcript/examples/cli/app.rs +++ /dev/null @@ -1,282 +0,0 @@ -use crossterm::event::{KeyCode, MouseButton, MouseEvent, MouseEventKind}; -use owhisper_interface::stream::StreamResponse; -use ratatui::style::Style; -use transcript::SequentialIdGen; -use transcript::input::TranscriptInput; -use transcript::postprocess::PostProcessUpdate; -use transcript::types::{PartialWord, SpeakerHint, TranscriptWord}; -use transcript::view::{ProcessOutcome, TranscriptView}; - -use crate::feed::TranscriptFeed; -use crate::logger::LogBuffer; -use crate::renderer::debug::DebugSection; -use crate::renderer::{LayoutInfo, WordRegion}; -use crate::viewport::ViewportState; - -fn lookup_word(region: &WordRegion, view: &TranscriptView) -> Option { - let frame = view.frame(); - let dbg = view.pipeline_debug(); - if region.is_final { - let word = frame.final_words.get(region.index)?.clone(); - let speaker = frame - .speaker_hints - .iter() - .find(|h| h.word_id == word.id) - .cloned(); - Some(SelectedWord::Final { word, speaker }) - } else { - let word = frame.partial_words.get(region.index)?.clone(); - let stability = dbg - .partial_stability - .iter() - .find(|(text, _)| *text == word.text) - .map(|(_, count)| *count); - Some(SelectedWord::Partial { word, stability }) - } -} - -#[derive(Clone, Copy, PartialEq, Eq)] -pub enum LastEvent { - Final, - Partial, - Correction, - Skipped, -} - -pub enum KeyAction { - Quit, - Continue { reset_tick: bool }, -} - -pub enum SelectedWord { - Final { - word: TranscriptWord, - speaker: Option, - }, - Partial { - word: PartialWord, - stability: Option, - }, -} - -pub struct App { - source: Box, - source_debug: Vec, - pub position: usize, - pub paused: bool, - pub speed_ms: u64, - pub view: TranscriptView, - pub source_name: String, - pub last_event: LastEvent, - pub last_postprocess: Option, - pub viewport: ViewportState, - pub selected_word: Option, - pub log_buffer: LogBuffer, -} - -impl App { - pub fn new( - source: Box, - source_debug: Vec, - speed_ms: u64, - source_name: String, - log_buffer: LogBuffer, - ) -> Self { - let paused = !source.is_live(); - Self { - source, - source_debug, - position: 0, - paused, - speed_ms, - view: TranscriptView::with_config(SequentialIdGen::new()), - source_name, - last_event: LastEvent::Skipped, - last_postprocess: None, - viewport: ViewportState::new(), - selected_word: None, - log_buffer, - } - } - - pub fn source_debug_sections(&self) -> Vec { - let mut sections = self.source_debug.clone(); - sections.extend(self.source.debug_sections()); - sections - } - - pub fn source_word_style(&self, channel: i32, start_ms: i64, end_ms: i64) -> Option