refresh changed files on FS changes

[?]
Feb 11, 2025, 7:53 AM
UB2ITZJSDADVINSQEZ3HA6PVGA7OA6JYFG5GMSO7Y7LOXJC4FI7AC

Dependencies

  • [2] 6YZAVBWU Initial commit
  • [3] KLR5FRIB add fs state read/write of repos
  • [4] IQDCHWCP load a pijul repo
  • [5] SWWE2R6M display basic repo stuff
  • [6] WT3GA27P add cursor with selection
  • [7] DVKSPF7R track selected file path together with an index

Change contents

  • edit in crates/libflowers_client/src/repo.rs at line 36
    [5.899]
    [5.899]
    }
    pub fn refresh(state: &mut State) {
    let diff = diff(state);
    let changed_files = changed_files(&diff);
    state.changed_files = changed_files;
  • edit in crates/flowers_ui/src/main.rs at line 1
    [6.332][4.1000:1024](),[4.1000][4.1000:1024](),[4.1024][5.4813:4814]()
    use std::path::PathBuf;
  • edit in crates/flowers_ui/src/main.rs at line 3
    [6.372]
    [4.1024]
    use notify_debouncer_full::notify::{RecommendedWatcher, RecursiveMode};
  • edit in crates/flowers_ui/src/main.rs at line 7
    [6.508]
    [2.2834]
    use notify_debouncer_full::{
    new_debouncer, DebounceEventResult, Debouncer, RecommendedCache,
    };
    use std::path::PathBuf;
    use tokio::sync::watch;
    use tokio::time::Duration;
    use tokio_stream::wrappers::WatchStream;
  • replacement in crates/flowers_ui/src/main.rs at line 24
    [4.1181][5.4971:5009]()
    let repo = repo::load(repo_path);
    [4.1181]
    [5.5009]
    let repo = repo::load(repo_path.clone());
  • replacement in crates/flowers_ui/src/main.rs at line 27
    [6.581][6.581:624]()
    (State { repo, cursor }, Task::none())
    [6.581]
    [4.1328]
    let (fs_watch_tx, fs_watch_rx) = watch::channel(());
    let mut fs_watch = new_debouncer(
    Duration::from_secs(1),
    None,
    move |result: DebounceEventResult| match result {
    Ok(events) => events.iter().for_each(|event| {
    // TODO: distinguish ".pijul" changes
    // dbg!(event);
    if event.kind.is_create()
    || event.kind.is_modify()
    || event.kind.is_remove()
    {
    let _ = fs_watch_tx.send(());
    }
    }),
    Err(errors) => {
    errors.iter().for_each(|error| eprintln!("{error:?}"))
    }
    },
    )
    .unwrap();
    fs_watch.watch(repo_path, RecursiveMode::Recursive).unwrap();
    let fs_watch_rx = WatchStream::from_changes(fs_watch_rx);
    let task = Task::run(fs_watch_rx, |()| Message::FilesChanged);
    (
    State {
    fs_watch,
    repo,
    cursor,
    },
    task,
    )
  • edit in crates/flowers_ui/src/main.rs at line 65
    [4.1363]
    [5.5077]
    fs_watch: Debouncer<RecommendedWatcher, RecommendedCache>,
  • edit in crates/flowers_ui/src/main.rs at line 76
    [6.668]
    [6.668]
    FilesChanged,
  • edit in crates/flowers_ui/src/main.rs at line 86
    [6.758]
    [6.758]
    Message::FilesChanged => {
    repo::refresh(&mut state.repo);
    }
  • edit in crates/flowers_ui/Cargo.toml at line 21
    [2.3701]
    [4.1625]
    workspace = true
    [dependencies.notify-debouncer-full]
    workspace = true
    [dependencies.tokio]
  • edit in crates/flowers_ui/Cargo.toml at line 26
    [4.1642]
    [dependencies.tokio-stream]
    workspace = true
  • replacement in Cargo.toml at line 26
    [2.4210][2.4210:4226]()
    version = "5.0"
    [2.4210]
    [2.4227]
    version = "6.0"
  • replacement in Cargo.toml at line 35
    [4.1744][4.1744:1760]()
    version = "8.0"
    [4.1744]
    [4.1760]
    version = "0.5"
  • replacement in Cargo.toml at line 45
    [3.6176][3.6176:6211]()
    version = "1.36"
    features = ["fs"]
    [3.6176]
    [3.6212]
    version = "1.43"
    features = ["fs", "sync"]
    [workspace.dependencies.tokio-stream]
    version = "0.1"
    features = ["sync"]
  • replacement in Cargo.lock at line 95
    [2.6022][2.6022:6041]()
    "bitflags 2.6.0",
    [2.6022]
    [2.6041]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 392
    [2.11929][2.11929:11947]()
    version = "2.6.0"
    [2.11929]
    [2.11947]
    version = "2.8.0"
  • replacement in Cargo.lock at line 394
    [2.12012][2.12012:12090]()
    checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
    [2.12012]
    [2.12090]
    checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
  • replacement in Cargo.lock at line 521
    [2.14479][2.14479:14498]()
    "bitflags 2.6.0",
    [2.14479]
    [2.14498]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 535
    [2.14763][2.14763:14782]()
    "bitflags 2.6.0",
    [2.14763]
    [2.14782]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 775
    [2.19377][2.19377:19396]()
    "bitflags 2.6.0",
    [2.19377]
    [2.19396]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 799
    [2.19978][2.19978:19997]()
    "bitflags 2.6.0",
    [2.19978]
    [2.19997]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 810
    [2.20248][2.20248:20267]()
    "bitflags 2.6.0",
    [2.20248]
    [2.20267]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 1014
    [2.23460][2.23460:23478]()
    version = "5.0.1"
    [2.23460]
    [2.23478]
    version = "6.0.0"
  • replacement in Cargo.lock at line 1016
    [2.23543][2.23543:23621]()
    checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35"
    [2.23543]
    [2.23621]
    checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d"
  • replacement in Cargo.lock at line 1018
    [2.23638][2.23638:23657]()
    "dirs-sys 0.4.1",
    [2.23638]
    [2.23657]
    "dirs-sys 0.5.0",
  • replacement in Cargo.lock at line 1047
    [2.24103][2.24103:24119]()
    "redox_users",
    [2.24103]
    [2.24119]
    "redox_users 0.4.6",
  • replacement in Cargo.lock at line 1053
    [2.24163][2.24163:24181]()
    version = "0.4.1"
    [2.24163]
    [2.24181]
    version = "0.5.0"
  • replacement in Cargo.lock at line 1055
    [2.24246][2.24246:24324]()
    checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
    [2.24246]
    [2.24324]
    checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
  • replacement in Cargo.lock at line 1059
    [2.24365][2.24365:24404]()
    "redox_users",
    "windows-sys 0.48.0",
    [2.24365]
    [2.24404]
    "redox_users 0.5.0",
    "windows-sys 0.59.0",
  • replacement in Cargo.lock at line 1070
    [4.8096][4.8096:8112]()
    "redox_users",
    [4.8096]
    [4.8112]
    "redox_users 0.4.6",
  • replacement in Cargo.lock at line 1121
    [2.25825][2.25825:25844]()
    "bitflags 2.6.0",
    [2.25825]
    [2.25844]
    "bitflags 2.8.0",
  • edit in Cargo.lock at line 1318
    [2.29685]
    [2.29685]
    ]
    [[package]]
    name = "file-id"
    version = "0.2.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6bc904b9bbefcadbd8e3a9fb0d464a9b979de6324c03b3c663e8994f46a5be36"
    dependencies = [
    "windows-sys 0.52.0",
  • edit in Cargo.lock at line 1330
    [2.29700]
    [2.29700]
    name = "filetime"
    version = "0.2.25"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
    dependencies = [
    "cfg-if",
    "libc",
    "libredox",
    "windows-sys 0.59.0",
    ]
    [[package]]
  • edit in Cargo.lock at line 1358
    [2.30026]
    [2.30026]
    "notify-debouncer-full",
    "tokio",
    "tokio-stream",
  • edit in Cargo.lock at line 1439
    [2.31718]
    [2.31718]
    name = "fsevent-sys"
    version = "4.1.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
    dependencies = [
    "libc",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1669
    [2.36436][2.36436:36455]()
    "bitflags 2.6.0",
    [2.36436]
    [2.36455]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 1679
    [2.36693][2.36693:36712]()
    "bitflags 2.6.0",
    [2.36693]
    [2.36712]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 1700
    [2.37192][2.37192:37211]()
    "bitflags 2.6.0",
    [2.37192]
    [2.37211]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 1711
    [2.37480][2.37480:37499]()
    "bitflags 2.6.0",
    [2.37480]
    [2.37499]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 1836
    [2.39693][2.39693:39712]()
    "bitflags 2.6.0",
    [2.39693]
    [2.39712]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 1868
    [2.40372][2.40372:40391]()
    "bitflags 2.6.0",
    [2.40372]
    [2.40391]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 1926
    [2.41669][2.41669:41688]()
    "bitflags 2.6.0",
    [2.41669]
    [2.41688]
    "bitflags 2.8.0",
  • edit in Cargo.lock at line 2010
    [2.42823]
    [2.42823]
    name = "inotify"
    version = "0.11.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
    dependencies = [
    "bitflags 2.8.0",
    "inotify-sys",
    "libc",
    ]
    [[package]]
    name = "inotify-sys"
    version = "0.1.5"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
    dependencies = [
    "libc",
    ]
    [[package]]
  • edit in Cargo.lock at line 2101
    [2.44443]
    [2.44443]
    [[package]]
    name = "kqueue"
    version = "1.0.8"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
    dependencies = [
    "kqueue-sys",
    "libc",
    ]
    [[package]]
    name = "kqueue-sys"
    version = "1.0.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
    dependencies = [
    "bitflags 1.3.2",
    "libc",
    ]
  • replacement in Cargo.lock at line 2237
    [2.45695][2.45695:45714]()
    "bitflags 2.6.0",
    [2.45695]
    [2.45714]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2336
    [2.48010][2.48010:48029]()
    "bitflags 2.6.0",
    [2.48010]
    [2.48029]
    "bitflags 2.8.0",
  • edit in Cargo.lock at line 2362
    [2.48371]
    [2.48371]
    name = "mio"
    version = "1.0.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
    dependencies = [
    "libc",
    "log",
    "wasi 0.11.0+wasi-snapshot-preview1",
    "windows-sys 0.52.0",
    ]
    [[package]]
  • replacement in Cargo.lock at line 2381
    [2.48589][2.48589:48608]()
    "bitflags 2.6.0",
    [2.48589]
    [2.48608]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2400
    [2.48970][2.48970:48989]()
    "bitflags 2.6.0",
    [2.48970]
    [2.48989]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2439
    [2.49953][2.49953:49972]()
    "bitflags 2.6.0",
    [2.49953]
    [2.49972]
    "bitflags 2.8.0",
  • edit in Cargo.lock at line 2454
    [4.13883]
    [4.13883]
    ]
    [[package]]
    name = "notify"
    version = "8.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943"
    dependencies = [
    "bitflags 2.8.0",
    "filetime",
    "fsevent-sys",
    "inotify",
    "kqueue",
    "libc",
    "log",
    "mio",
    "notify-types",
    "walkdir",
    "windows-sys 0.59.0",
    ]
    [[package]]
    name = "notify-debouncer-full"
    version = "0.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d2d88b1a7538054351c8258338df7c931a590513fb3745e8c15eb9ff4199b8d1"
    dependencies = [
    "file-id",
    "log",
    "notify",
    "notify-types",
    "walkdir",
  • edit in Cargo.lock at line 2489
    [4.13898]
    [2.50043]
    name = "notify-types"
    version = "2.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d"
    [[package]]
  • replacement in Cargo.lock at line 2565
    [2.51868][2.51868:51887]()
    "bitflags 2.6.0",
    [2.51868]
    [2.51887]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2581
    [2.52219][2.52219:52238]()
    "bitflags 2.6.0",
    [2.52219]
    [2.52238]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2605
    [2.52781][2.52781:52800]()
    "bitflags 2.6.0",
    [2.52781]
    [2.52800]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2647
    [2.53817][2.53817:53836]()
    "bitflags 2.6.0",
    [2.53817]
    [2.53836]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2672
    [2.54379][2.54379:54398]()
    "bitflags 2.6.0",
    [2.54379]
    [2.54398]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2684
    [2.54660][2.54660:54679]()
    "bitflags 2.6.0",
    [2.54660]
    [2.54679]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2707
    [2.55199][2.55199:55218]()
    "bitflags 2.6.0",
    [2.55199]
    [2.55218]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 2739
    [2.55979][2.55979:55998]()
    "bitflags 2.6.0",
    [2.55979]
    [2.55998]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 3272
    [2.66849][2.66849:66868]()
    "bitflags 2.6.0",
    [2.66849]
    [2.66868]
    "bitflags 2.8.0",
  • edit in Cargo.lock at line 3284
    [3.8030]
    [4.16190]
    ]
    [[package]]
    name = "redox_users"
    version = "0.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
    dependencies = [
    "getrandom 0.2.15",
    "libredox",
    "thiserror 2.0.11",
  • replacement in Cargo.lock at line 3381
    [2.68357][2.68357:68376]()
    "bitflags 2.6.0",
    [2.68357]
    [2.68376]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 3394
    [2.68656][2.68656:68675]()
    "bitflags 2.6.0",
    [2.68656]
    [2.68675]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 3641
    [2.72808][2.72808:72827]()
    "bitflags 2.6.0",
    [2.72808]
    [2.72827]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 3666
    [2.73348][2.73348:73367]()
    "bitflags 2.6.0",
    [2.73348]
    [2.73367]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 3743
    [2.74998][2.74998:75017]()
    "bitflags 2.6.0",
    [2.74998]
    [2.75017]
    "bitflags 2.8.0",
  • edit in Cargo.lock at line 3952
    [3.9444]
    [3.9444]
    "pin-project-lite",
    ]
    [[package]]
    name = "tokio-stream"
    version = "0.1.17"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
    dependencies = [
    "futures-core",
    "pin-project-lite",
    "tokio",
    "tokio-util",
    ]
    [[package]]
    name = "tokio-util"
    version = "0.7.13"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078"
    dependencies = [
    "bytes",
    "futures-core",
    "futures-sink",
  • edit in Cargo.lock at line 3977
    [3.9465]
    [4.19842]
    "tokio",
  • replacement in Cargo.lock at line 4317
    [2.85962][2.85962:85981]()
    "bitflags 2.6.0",
    [2.85962]
    [2.85981]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4329
    [2.86252][2.86252:86271]()
    "bitflags 2.6.0",
    [2.86252]
    [2.86271]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4351
    [2.86788][2.86788:86807]()
    "bitflags 2.6.0",
    [2.86788]
    [2.86807]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4363
    [2.87087][2.87087:87106]()
    "bitflags 2.6.0",
    [2.87087]
    [2.87106]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4375
    [2.87392][2.87392:87411]()
    "bitflags 2.6.0",
    [2.87392]
    [2.87411]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4388
    [2.87723][2.87723:87742]()
    "bitflags 2.6.0",
    [2.87723]
    [2.87742]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4401
    [2.88054][2.88054:88073]()
    "bitflags 2.6.0",
    [2.88054]
    [2.88073]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4484
    [2.89880][2.89880:89899]()
    "bitflags 2.6.0",
    [2.89880]
    [2.89899]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4511
    [2.90397][2.90397:90416]()
    "bitflags 2.6.0",
    [2.90397]
    [2.90416]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 4552
    [2.91130][2.91130:91149]()
    "bitflags 2.6.0",
    [2.91130]
    [2.91149]
    "bitflags 2.8.0",
  • edit in Cargo.lock at line 4708
    [2.94314][2.94314:94556]()
    version = "0.48.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
    dependencies = [
    "windows-targets 0.48.5",
    ]
    [[package]]
    name = "windows-sys"
  • replacement in Cargo.lock at line 4910
    [2.101097][2.101097:101116]()
    "bitflags 2.6.0",
    [2.101097]
    [2.101116]
    "bitflags 2.8.0",
  • replacement in Cargo.lock at line 5034
    [2.103674][2.103674:103693]()
    "bitflags 2.6.0",
    [2.103674]
    [2.103693]
    "bitflags 2.8.0",